123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- #ifndef NULLSOFT_AGAVE_API_DECODEFILE_H
- #define NULLSOFT_AGAVE_API_DECODEFILE_H
- #include <bfc/dispatch.h>
- #include <bfc/platform/types.h>
- #include "ifc_audiostream.h"
- enum
- {
- API_DECODEFILE_SUCCESS = 0,
- API_DECODEFILE_FAILURE = 1,
- API_DECODEFILE_UNSUPPORTED = 2,
- API_DECODEFILE_NO_INTERFACE = 3,
- API_DECODEFILE_WINAMP_PRO = 4,
- API_DECODEFILE_NO_RIGHTS = 5,
- API_DECODEFILE_BAD_RESAMPLE = 6,
- API_DECODEFILE_FAIL_NO_WARN = 7,
- };
- enum
- {
- AUDIOPARAMETERS_FLOAT = 1,
- AUDIOPARAMETERS_MAXCHANNELS = 2,
-
- AUDIOPARAMETERS_MAXSAMPLERATE = 4,
- AUDIOPARAMETERS_NON_INTERLEAVED = 8,
- };
- struct AudioParameters
- {
- public:
- AudioParameters() : bitsPerSample(0), channels(0), sampleRate(0), sampleRateReal(0.f), flags(0), sizeBytes((size_t) - 1), errorCode(API_DECODEFILE_SUCCESS)
- {}
- uint32_t bitsPerSample;
- uint32_t channels;
- uint32_t sampleRate;
- float sampleRateReal;
- int flags;
- size_t sizeBytes;
- int errorCode;
- };
- class api_decodefile : public Dispatchable
- {
- public:
-
- ifc_audiostream *OpenAudioBackground(const wchar_t *filename, AudioParameters *parameters);
-
- ifc_audiostream *OpenAudio(const wchar_t *filename, AudioParameters *parameters);
- void CloseAudio(ifc_audiostream *audioStream);
-
- bool DecoderExists(const wchar_t *filename);
- public:
- DISPATCH_CODES
- {
- API_DECODEFILE_OPENAUDIO = 10,
- API_DECODEFILE_OPENAUDIO2 = 11,
- API_DECODEFILE_CLOSEAUDIO = 20,
- API_DECODEFILE_DECODEREXISTS = 30,
- };
- };
- inline ifc_audiostream *api_decodefile::OpenAudio(const wchar_t *filename, AudioParameters *parameters)
- {
- return _call(API_DECODEFILE_OPENAUDIO, (ifc_audiostream *)0, filename, parameters);
- }
- inline ifc_audiostream *api_decodefile::OpenAudioBackground(const wchar_t *filename, AudioParameters *parameters)
- {
- return _call(API_DECODEFILE_OPENAUDIO2, (ifc_audiostream *)0, filename, parameters);
- }
- inline void api_decodefile::CloseAudio(ifc_audiostream *audioStream)
- {
- _voidcall(API_DECODEFILE_CLOSEAUDIO, audioStream);
- }
- inline bool api_decodefile::DecoderExists(const wchar_t *filename)
- {
- return _call(API_DECODEFILE_DECODEREXISTS, (bool)true, filename);
- }
- static const GUID decodeFileGUID =
- {
- 0x9b4188f5, 0x4295, 0x48ab, { 0xb5, 0xc, 0xf2, 0xb0, 0xbb, 0x56, 0xd2, 0x42 }
- };
- #endif
|