diff options
author | Ronghua Wu <ronghuawu@google.com> | 2015-09-02 10:15:30 -0700 |
---|---|---|
committer | Ronghua Wu <ronghuawu@google.com> | 2015-09-02 11:01:56 -0700 |
commit | 7665f5886093e1aee07a5266b8c384e5d1186f34 (patch) | |
tree | a21f3b139d6a802e6ad660d07994e5a97c84c364 /media/libmediaplayerservice | |
parent | 5dc3d9928f85580a2351925b5f11ff0189524c39 (diff) | |
download | frameworks_av-7665f5886093e1aee07a5266b8c384e5d1186f34.zip frameworks_av-7665f5886093e1aee07a5266b8c384e5d1186f34.tar.gz frameworks_av-7665f5886093e1aee07a5266b8c384e5d1186f34.tar.bz2 |
nuplayer: let non-offload AudioSink to handle the reconnect when there's video.
Bug: 23707144
Change-Id: Ie0e2db8dc91a78f82fb935d165aa11abe73697a3
Diffstat (limited to 'media/libmediaplayerservice')
-rw-r--r-- | media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp index 04a46f4..4de08ff 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp +++ b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp @@ -877,6 +877,8 @@ bool NuPlayer::Renderer::onDrainAudioQueue() { ALOGV("AudioSink write would block when writing %zu bytes", copy); } else { ALOGE("AudioSink write error(%zd) when writing %zu bytes", written, copy); + // This can only happen when AudioSink was opened with doNotReconnect flag set to + // true, in which case the NuPlayer will handle the reconnect. notifyAudioTearDown(); } break; @@ -1764,6 +1766,12 @@ status_t NuPlayer::Renderer::onOpenAudioSink( const uint32_t frameCount = (unsigned long long)sampleRate * getAudioSinkPcmMsSetting() / 1000; + // The doNotReconnect means AudioSink will signal back and let NuPlayer to re-construct + // AudioSink. We don't want this when there's video because it will cause a video seek to + // the previous I frame. But we do want this when there's only audio because it will give + // NuPlayer a chance to switch from non-offload mode to offload mode. + // So we only set doNotReconnect when there's no video. + const bool doNotReconnect = !hasVideo; status_t err = mAudioSink->open( sampleRate, numChannels, @@ -1774,7 +1782,7 @@ status_t NuPlayer::Renderer::onOpenAudioSink( mUseAudioCallback ? this : NULL, (audio_output_flags_t)pcmFlags, NULL, - true /* doNotReconnect */, + doNotReconnect, frameCount); if (err == OK) { err = mAudioSink->setPlaybackRate(mPlaybackSettings); |