Bug 1272232. Part 2 - extract common code to the parent class. r=jya.
MozReview-Commit-ID: 7Psgw8VcX8B
--- 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;
};