From 3f52d14271f8a650a1f63512e6f2114ce26d8d25 Mon Sep 17 00:00:00 2001 From: Luo Jinghua Date: Tue, 26 Jun 2012 18:15:20 +0800 Subject: Added tempo getter/setter --- src/audiere.h | 13 +++++++++++++ src/input_mod.cpp | 28 +++++++++++++++++++++++++++- src/input_mod.h | 2 ++ 3 files changed, 42 insertions(+), 1 deletion(-) diff --git a/src/audiere.h b/src/audiere.h index f53c122..4403637 100644 --- a/src/audiere.h +++ b/src/audiere.h @@ -393,6 +393,19 @@ namespace audiere { * formats supported by dumb. */ ADR_METHOD(bool) setChannelVolume(int channel, float volume) { return false; } + + + /** + * Returns the tempo of the source. This is only for formats + * supported by dumb. + */ + ADR_METHOD(int) getTempo() { return 0; } + + /** + * Sets the tempo of the source. This is only for formats + * supported by dumb. + */ + ADR_METHOD(bool) setTempo(int tempo) { return false; } }; typedef RefPtr SampleSourcePtr; diff --git a/src/input_mod.cpp b/src/input_mod.cpp index 4af33de..6347535 100644 --- a/src/input_mod.cpp +++ b/src/input_mod.cpp @@ -170,7 +170,33 @@ namespace audiere { return true; } - + + int + MODInputStream::getTempo() + { + ADR_GUARD("MOD_getTempo"); + if (m_renderer) { + DUMB_IT_SIGRENDERER* itrenderer = duh_get_it_sigrenderer(m_renderer); + return dumb_it_sr_get_tempo(itrenderer); + } + return 0; + } + + + bool + MODInputStream::setTempo(int tempo) + { + ADR_GUARD("MOD_setTempo"); + if (m_renderer) { + DUMB_IT_SIGRENDERER* itrenderer = duh_get_it_sigrenderer(m_renderer); + dumb_it_sr_set_tempo(itrenderer, tempo); + return true; + } + + return false; + } + + int MODInputStream::doRead(int frame_count, void* buffer) { ADR_GUARD("MOD_doRead"); diff --git a/src/input_mod.h b/src/input_mod.h index 183a5e5..0a58e43 100644 --- a/src/input_mod.h +++ b/src/input_mod.h @@ -28,6 +28,8 @@ namespace audiere { int ADR_CALL getRow(); float ADR_CALL getChannelVolume(int channel = 0); bool ADR_CALL setChannelVolume(int channel, float volume); + int ADR_CALL getTempo(); + bool ADR_CALL setTempo(int tempo); int doRead(int frame_count, void* buffer); -- cgit v1.2.3