diff options
author | Vitaly Novichkov <admin@wohlnet.ru> | 2018-06-19 22:57:06 +0300 |
---|---|---|
committer | Vitaly Novichkov <admin@wohlnet.ru> | 2018-06-19 22:57:06 +0300 |
commit | ad60170e94d599c76351198ca4052d0cd5c9602e (patch) | |
tree | 4ab583ebdc831a4ea40082dc921475d95819545b /src/chips/opl_chip_base.h | |
parent | c0873278718da57ff19194377a35601027926c5f (diff) | |
parent | 105c5db749836ff25c03ae7abf3b2348ecb72c86 (diff) | |
download | libADLMIDI-ad60170e94d599c76351198ca4052d0cd5c9602e.tar.gz libADLMIDI-ad60170e94d599c76351198ca4052d0cd5c9602e.tar.bz2 libADLMIDI-ad60170e94d599c76351198ca4052d0cd5c9602e.zip |
Merge branch 'master' into stable
Diffstat (limited to 'src/chips/opl_chip_base.h')
-rw-r--r-- | src/chips/opl_chip_base.h | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/chips/opl_chip_base.h b/src/chips/opl_chip_base.h index 5721a81..879d6da 100644 --- a/src/chips/opl_chip_base.h +++ b/src/chips/opl_chip_base.h @@ -13,15 +13,33 @@ class VResampler; #endif +#if defined(ADLMIDI_AUDIO_TICK_HANDLER) +extern void adl_audioTickHandler(void *instance, uint32_t chipId, uint32_t rate); +#endif + class OPLChipBase { +public: + enum { nativeRate = 49716 }; protected: + uint32_t m_id; uint32_t m_rate; public: OPLChipBase(); virtual ~OPLChipBase(); + uint32_t chipId() const { return m_id; } + void setChipId(uint32_t id) { m_id = id; } + + virtual bool canRunAtPcmRate() const = 0; + virtual bool isRunningAtPcmRate() const = 0; + virtual bool setRunningAtPcmRate(bool r) = 0; +#if defined(ADLMIDI_AUDIO_TICK_HANDLER) + virtual void setAudioTickHandlerInstance(void *instance) = 0; +#endif + virtual void setRate(uint32_t rate) = 0; + virtual uint32_t effectiveRate() const = 0; virtual void reset() = 0; virtual void writeReg(uint16_t addr, uint8_t data) = 0; @@ -49,13 +67,25 @@ public: OPLChipBaseT(); virtual ~OPLChipBaseT(); + bool isRunningAtPcmRate() const override; + bool setRunningAtPcmRate(bool r) override; +#if defined(ADLMIDI_AUDIO_TICK_HANDLER) + void setAudioTickHandlerInstance(void *instance); +#endif + virtual void setRate(uint32_t rate) override; + uint32_t effectiveRate() const override; virtual void reset() override; void generate(int16_t *output, size_t frames) override; void generateAndMix(int16_t *output, size_t frames) override; void generate32(int32_t *output, size_t frames) override; void generateAndMix32(int32_t *output, size_t frames) override; private: + bool m_runningAtPcmRate; +#if defined(ADLMIDI_AUDIO_TICK_HANDLER) + void *m_audioTickHandlerInstance; +#endif + void nativeTick(int16_t *frame); void setupResampler(uint32_t rate); void resetResampler(); void resampledGenerate(int32_t *output); |