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.