Bug 1272232. Part 2 - extract common code to the parent class. r=jya. draft
authorJW Wang <jwwang@mozilla.com>
Sun, 15 May 2016 20:14:55 +0800
changeset 367173 63e569ef1cc6b7996dc0fcd39649adb1c008cfeb
parent 367172 2776d38a6d2f1bf60568576b78269d1b4dd99a1b
child 367174 8fc418b80b19dbf99a56347ca3ebe285f7be37c6
push id18157
push userjwwang@mozilla.com
push dateSun, 15 May 2016 13:11:25 +0000
reviewersjya
bugs1272232
milestone49.0a1
Bug 1272232. Part 2 - extract common code to the parent class. r=jya. MozReview-Commit-ID: 7Psgw8VcX8B
dom/media/platforms/apple/AppleVDADecoder.h
dom/media/platforms/apple/AppleVTDecoder.cpp
dom/media/platforms/apple/AppleVTDecoder.h
--- a/dom/media/platforms/apple/AppleVDADecoder.h
+++ b/dom/media/platforms/apple/AppleVDADecoder.h
@@ -140,16 +140,16 @@ protected:
 private:
   const RefPtr<FlushableTaskQueue> mTaskQueue;
   VDADecoder mDecoder;
 
   // Method to set up the decompression session.
   nsresult InitializeSession();
 
   // Method to pass a frame to VideoToolbox for decoding.
-  virtual nsresult ProcessDecode(MediaRawData* aSample);
-  nsresult DoDecode(MediaRawData* aSample);
+  nsresult ProcessDecode(MediaRawData* aSample);
+  virtual nsresult DoDecode(MediaRawData* aSample);
   CFDictionaryRef CreateDecoderSpecification();
 };
 
 } // namespace mozilla
 
 #endif // mozilla_AppleVDADecoder_h
--- a/dom/media/platforms/apple/AppleVTDecoder.cpp
+++ b/dom/media/platforms/apple/AppleVTDecoder.cpp
@@ -159,33 +159,16 @@ TimingInfoFromSample(MediaRawData* aSamp
     CMTimeMake(aSample->mTime, USECS_PER_S);
   timestamp.decodeTimeStamp =
     CMTimeMake(aSample->mTimecode, USECS_PER_S);
 
   return timestamp;
 }
 
 nsresult
-AppleVTDecoder::ProcessDecode(MediaRawData* aSample)
-{
-  AssertOnTaskQueueThread();
-
-  mInputIncoming--;
-
-  auto rv = DoDecode(aSample);
-  // Ask for more data.
-  if (NS_SUCCEEDED(rv) && !mInputIncoming && mQueuedSamples <= mMaxRefFrames) {
-  LOG("%s task queue empty; requesting more data", GetDescriptionName());
-    mCallback->InputExhausted();
-  }
-
-  return rv;
-}
-
-nsresult
 AppleVTDecoder::DoDecode(MediaRawData* aSample)
 {
   AssertOnTaskQueueThread();
 
   // For some reason this gives me a double-free error with stagefright.
   AutoCFRelease<CMBlockBufferRef> block = nullptr;
   AutoCFRelease<CMSampleBufferRef> sample = nullptr;
   VTDecodeInfoFlags infoFlags;
--- a/dom/media/platforms/apple/AppleVTDecoder.h
+++ b/dom/media/platforms/apple/AppleVTDecoder.h
@@ -38,18 +38,17 @@ protected:
   void ProcessDrain() override;
   void ProcessShutdown() override;
 
 private:
   CMVideoFormatDescriptionRef mFormat;
   VTDecompressionSessionRef mSession;
 
   // Method to pass a frame to VideoToolbox for decoding.
-  nsresult ProcessDecode(MediaRawData* aSample) override;
-  nsresult DoDecode(MediaRawData* aSample);
+  nsresult DoDecode(MediaRawData* aSample) override;
   // Method to set up the decompression session.
   nsresult InitializeSession();
   nsresult WaitForAsynchronousFrames();
   CFDictionaryRef CreateDecoderSpecification();
   CFDictionaryRef CreateDecoderExtensions();
   Atomic<bool> mIsHardwareAccelerated;
 };