12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- #pragma once
- #include "foundation/dispatch.h"
- #include "foundation/error.h"
- #include "audio/parameters.h"
- class NOVTABLE ifc_audioout : public Wasabi2::Dispatchable
- {
- protected:
- ifc_audioout() : Dispatchable(DISPATCHABLE_VERSION) {}
- ~ifc_audioout() {}
- public:
- enum
- {
- CHANNEL_LAYOUT_MICROSOFT = 0x0,
- CHANNEL_LAYOUT_MPEG = 0x1,
- };
- enum
- {
- EXTENDED_FLAG_APPLY_GAIN=0x1,
- EXTENDED_FLAG_REPLAYGAIN=0x2,
- EXTENDED_FLAG_GAIN_MASK=EXTENDED_FLAG_APPLY_GAIN|EXTENDED_FLAG_REPLAYGAIN,
-
- EXTENDED_FLAG_VALID_MASK=EXTENDED_FLAG_APPLY_GAIN|EXTENDED_FLAG_REPLAYGAIN,
- };
- struct Parameters
- {
- size_t sizeof_parameters;
- nsaudio::Parameters audio;
-
- unsigned int extended_fields_flags;
- double gain;
- size_t frames_trim_start;
- size_t frames_trim_end;
- };
- int Output(const void *data, size_t data_size) { return AudioOutput_Output(data, data_size); }
-
- size_t CanWrite() { return AudioOutput_CanWrite(); }
- void Flush(double seconds) { AudioOutput_Flush(seconds); }
- void Pause(int state) { AudioOutput_Pause(state); }
-
- void Done() { AudioOutput_Done(); }
-
- void Stop() { AudioOutput_Stop(); }
-
- double Latency() { return AudioOutput_Latency(); }
-
- int Playing() { return AudioOutput_Playing(); }
- protected:
- virtual int WASABICALL AudioOutput_Output(const void *data, size_t data_size)=0;
- virtual size_t WASABICALL AudioOutput_CanWrite()=0;
- virtual void WASABICALL AudioOutput_Flush(double seconds)=0;
- virtual void WASABICALL AudioOutput_Pause(int state)=0;
-
- virtual void WASABICALL AudioOutput_Done()=0;
-
- virtual void WASABICALL AudioOutput_Stop()=0;
- virtual double WASABICALL AudioOutput_Latency()=0;
- virtual int WASABICALL AudioOutput_Playing()=0;
- enum
- {
- DISPATCHABLE_VERSION,
- };
- };
|