summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMahesh Lanka <mlanka@codeaurora.org>2014-03-14 12:34:01 +0530
committerGerrit - the friendly Code Review server <code-review@localhost>2014-05-07 07:22:01 -0700
commitc78d2f6f7815a1da8e2a48bbf043fc37e1dc4347 (patch)
tree3e9df550e35d16e0d20e89540921779c447b139e
parentaf072387706558c0fc1f4f2233879be062a808eb (diff)
downloadandroid_hardware_qcom_media-c78d2f6f7815a1da8e2a48bbf043fc37e1dc4347.tar.gz
android_hardware_qcom_media-c78d2f6f7815a1da8e2a48bbf043fc37e1dc4347.tar.bz2
android_hardware_qcom_media-c78d2f6f7815a1da8e2a48bbf043fc37e1dc4347.zip
dashplayer: Handle Eos Error Propagation in Renderer
Handle usecase where first frame after audio decoder creation is EOS frame. Change-Id: I9bcbfd3930eb3961ce5b5bfa36d692812aa92e9f CRs-Fixed: 625722
-rw-r--r--dashplayer/DashPlayerRenderer.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/dashplayer/DashPlayerRenderer.cpp b/dashplayer/DashPlayerRenderer.cpp
index 35b8fab4..cc81d705 100644
--- a/dashplayer/DashPlayerRenderer.cpp
+++ b/dashplayer/DashPlayerRenderer.cpp
@@ -233,6 +233,21 @@ void DashPlayer::Renderer::signalAudioSinkChanged() {
bool DashPlayer::Renderer::onDrainAudioQueue() {
uint32_t numFramesPlayed;
+
+ // Check if first frame is EOS, process EOS and return
+ if(1 == mAudioQueue.size())
+ {
+ QueueEntry *entry = &*mAudioQueue.begin();
+ if (entry->mBuffer == NULL) {
+ ALOGE("onDrainAudioQueue process EOS");
+ notifyEOS(true /* audio */, entry->mFinalResult);
+
+ mAudioQueue.erase(mAudioQueue.begin());
+ entry = NULL;
+ return false;
+ }
+ }
+
if (mAudioSink->getPosition(&numFramesPlayed) != OK) {
return false;
}