diff options
author | 2010-01-19 17:37:09 -0800 | |
---|---|---|
committer | 2010-01-26 18:40:39 -0800 | |
commit | 0986e7907ffc8387b04fb201e285784bcd11b9b7 (patch) | |
tree | 96733235d1e92e0f329ded11b9b55c0d67a4ca83 /media/libmedia/AudioSystem.cpp | |
parent | 7d3a558b9ebf2256517ec99cd09c066cc7dbc92c (diff) |
Fix issue 2285561: New AudioFlinger and audio driver API needed for A/V sync
Added getRenderPosition() API to IAudioFlinger to retreive number of audio frames
written by AudioFlinger to audio HAL and by DSP to DAC.
Added getRenderPosition() API to AudioHardwareInterface to retreive number of audio frames
written by DSP to DAC.
Exposed AudioTrack::getPosition() to AudioSink() to make it available to media player.
Removed excessive log in AudioHardwareGeneric.
Diffstat (limited to 'media/libmedia/AudioSystem.cpp')
-rw-r--r-- | media/libmedia/AudioSystem.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/media/libmedia/AudioSystem.cpp b/media/libmedia/AudioSystem.cpp index e3b829be3d61..c5dfbb5356fe 100644 --- a/media/libmedia/AudioSystem.cpp +++ b/media/libmedia/AudioSystem.cpp @@ -342,6 +342,18 @@ status_t AudioSystem::setVoiceVolume(float value) return af->setVoiceVolume(value); } +status_t AudioSystem::getRenderPosition(uint32_t *halFrames, uint32_t *dspFrames, int stream) +{ + const sp<IAudioFlinger>& af = AudioSystem::get_audio_flinger(); + if (af == 0) return PERMISSION_DENIED; + + if (stream == DEFAULT) { + stream = MUSIC; + } + + return af->getRenderPosition(halFrames, dspFrames, getOutput((stream_type)stream)); +} + // --------------------------------------------------------------------------- void AudioSystem::AudioFlingerClient::binderDied(const wp<IBinder>& who) { |