Bug 1297265: P4. Rework Apple AudioToolbox use of InputExhausted. r?kamidphish draft
authorJean-Yves Avenard <jyavenard@mozilla.com>
Tue, 30 Aug 2016 15:19:55 +1000
changeset 407292 0eb31c3fae3cd377aed647ba2701f0f40912716e
parent 407291 c922c40881d180b53f009f96b1d863e95a1fb046
child 407293 15fd9ac2134437b2fd9b005c87ae581d1d02d22c
push id27921
push userbmo:jyavenard@mozilla.com
push dateTue, 30 Aug 2016 07:23:20 +0000
reviewerskamidphish
bugs1297265
milestone51.0a1
Bug 1297265: P4. Rework Apple AudioToolbox use of InputExhausted. r?kamidphish MozReview-Commit-ID: HznYxl9T7t5
dom/media/platforms/apple/AppleATDecoder.cpp
--- a/dom/media/platforms/apple/AppleATDecoder.cpp
+++ b/dom/media/platforms/apple/AppleATDecoder.cpp
@@ -209,19 +209,17 @@ AppleATDecoder::SubmitSample(MediaRawDat
     for (size_t i = 0; i < mQueuedSamples.Length(); i++) {
       if (NS_FAILED(DecodeSample(mQueuedSamples[i]))) {
         mQueuedSamples.Clear();
         mCallback->Error(MediaDataDecoderError::DECODE_ERROR);
         return;
       }
     }
     mQueuedSamples.Clear();
-  }
-
-  if (mTaskQueue->IsEmpty()) {
+  } else {
     mCallback->InputExhausted();
   }
 }
 
 nsresult
 AppleATDecoder::DecodeSample(MediaRawData* aSample)
 {
   MOZ_ASSERT(mTaskQueue->IsCurrentThreadIn());
@@ -277,16 +275,19 @@ AppleATDecoder::DecodeSample(MediaRawDat
     }
 
     if (rv == kNoMoreDataErr) {
       break;
     }
   } while (true);
 
   if (outputData.IsEmpty()) {
+    // We aren't going to output anything, inform the reader that we need more
+    // data.
+    mCallback->InputExhausted();
     return NS_OK;
   }
 
   size_t numFrames = outputData.Length() / channels;
   int rate = mOutputFormat.mSampleRate;
   media::TimeUnit duration = FramesToTimeUnit(numFrames, rate);
   if (!duration.IsValid()) {
     NS_WARNING("Invalid count of accumulated audio samples");