Show More
Commit Description:
Various UI improvements.
Commit Description:
Various UI improvements.
References:
File last commit:
Show/Diff file:
Action:
FNA/lib/FAudio/extensions/EngineProcedureEXT.txt
44 lines | 1.5 KiB | text/plain | TextLexer
44 lines | 1.5 KiB | text/plain | TextLexer
r0 | EngineProcedureEXT - Allow clients to wrap engine procedure | |||
About | ||||
----- | ||||
Clients may be interested in having more control over the engine procedure. In | ||||
particular, they may want to modify or access the generated output before | ||||
passing it to the underlying platform. In other cases, clients like Wine may | ||||
have specific thread requirements that the platform's audio library cannot | ||||
satisfy. This extension allows clients to "wrap" the engine procedure with | ||||
arbitrary code. | ||||
Dependencies | ||||
------------ | ||||
This extension does not interact with any non-standard XAudio features. | ||||
New Types | ||||
--------- | ||||
typedef void (FAUDIOCALL *FAudioEngineCallEXT)(FAudio *audio, float *output); | ||||
typedef void (FAUDIOCALL *FAudioEngineProcedureEXT)( | ||||
FAudioEngineCallEXT defaultEngineProc, | ||||
FAudio *audio, | ||||
float *output, | ||||
void *user | ||||
); | ||||
New Procedures and Functions | ||||
---------------------------- | ||||
FAUDIOAPI void FAudio_SetEngineProcedureEXT( | ||||
FAudio *audio, | ||||
FAudioEngineProcedureEXT clientEngineProc, | ||||
void *user | ||||
); | ||||
How to Use | ||||
---------- | ||||
At any time, the client may request that FAudio call the given | ||||
clientEngineProc function instead of FAudio's default engine procedure | ||||
beginning with the next engine tick. It is valid to call | ||||
FAudio_SetEngineProcedureEXT before creating the mastering voice. | ||||
clientEngineProc will be invoked with a pointer to FAudio's default engine | ||||
procedure, allowing the client to execute the procedure on a specific thread, | ||||
or operate on the retrieved audio before returning control back to FAudio. | ||||