Bug 1272553. Part 2 - extract common code to the parent class. r=jya.
MozReview-Commit-ID: JYlxVHVojzy
--- a/dom/media/platforms/apple/AppleVDADecoder.h
+++ b/dom/media/platforms/apple/AppleVDADecoder.h
@@ -135,15 +135,15 @@ protected:
private:
VDADecoder mDecoder;
// Method to set up the decompression session.
nsresult InitializeSession();
// Method to pass a frame to VideoToolbox for decoding.
- nsresult ProcessDecode(MediaRawData* aSample);
+ virtual nsresult ProcessDecode(MediaRawData* aSample);
CFDictionaryRef CreateDecoderSpecification();
};
} // namespace mozilla
#endif // mozilla_AppleVDADecoder_h
--- a/dom/media/platforms/apple/AppleVTDecoder.cpp
+++ b/dom/media/platforms/apple/AppleVTDecoder.cpp
@@ -75,35 +75,16 @@ AppleVTDecoder::ProcessShutdown()
}
if (mFormat) {
LOG("%s: releasing format %p", __func__, mFormat);
CFRelease(mFormat);
mFormat = nullptr;
}
}
-nsresult
-AppleVTDecoder::Input(MediaRawData* aSample)
-{
- MOZ_ASSERT(mCallback->OnReaderTaskQueue());
-
- LOG("mp4 input sample %p pts %lld duration %lld us%s %d bytes",
- aSample,
- aSample->mTime,
- aSample->mDuration,
- aSample->mKeyframe ? " keyframe" : "",
- aSample->Size());
-
- mInputIncoming++;
-
- mTaskQueue->Dispatch(NewRunnableMethod<RefPtr<MediaRawData>>(
- this, &AppleVTDecoder::ProcessDecode, aSample));
- return NS_OK;
-}
-
void
AppleVTDecoder::ProcessFlush()
{
MOZ_ASSERT(mTaskQueue->IsCurrentThreadIn());
nsresult rv = WaitForAsynchronousFrames();
if (NS_FAILED(rv)) {
LOG("AppleVTDecoder::Flush failed waiting for platform decoder "
"with error:%d.", rv);
--- a/dom/media/platforms/apple/AppleVTDecoder.h
+++ b/dom/media/platforms/apple/AppleVTDecoder.h
@@ -16,17 +16,16 @@ namespace mozilla {
class AppleVTDecoder : public AppleVDADecoder {
public:
AppleVTDecoder(const VideoInfo& aConfig,
FlushableTaskQueue* aVideoTaskQueue,
MediaDataDecoderCallback* aCallback,
layers::ImageContainer* aImageContainer);
virtual ~AppleVTDecoder();
RefPtr<InitPromise> Init() override;
- nsresult Input(MediaRawData* aSample) override;
bool IsHardwareAccelerated(nsACString& aFailureReason) const override
{
return mIsHardwareAccelerated;
}
const char* GetDescriptionName() const override
{
return mIsHardwareAccelerated
@@ -39,17 +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);
+ nsresult ProcessDecode(MediaRawData* aSample) override;
// Method to set up the decompression session.
nsresult InitializeSession();
nsresult WaitForAsynchronousFrames();
CFDictionaryRef CreateDecoderSpecification();
CFDictionaryRef CreateDecoderExtensions();
Atomic<bool> mIsHardwareAccelerated;
};