Bug 1336792 - part 3: release outputs not sent for rendering. r?jya
MozReview-Commit-ID: 9dQc80av5Kr
--- a/dom/media/platforms/android/RemoteDataDecoder.cpp
+++ b/dom/media/platforms/android/RemoteDataDecoder.cpp
@@ -145,16 +145,19 @@ public:
void HandleInputExhausted() override
{
mDecoder->InputExhausted();
}
void HandleOutput(Sample::Param aSample) override
{
+ UniquePtr<VideoData::Listener>
+ releaseSample(new RenderOrReleaseOutput(mDecoder->mJavaDecoder, aSample));
+
BufferInfo::LocalRef info = aSample->Info();
int32_t flags;
bool ok = NS_SUCCEEDED(info->Flags(&flags));
int32_t offset;
ok &= NS_SUCCEEDED(info->Offset(&offset));
@@ -183,19 +186,17 @@ public:
RefPtr<VideoData> v = VideoData::CreateFromImage(
mDecoder->mConfig, offset, presentationTimeUs, durationUs,
img, !!(flags & MediaCodec::BUFFER_FLAG_SYNC_FRAME),
presentationTimeUs,
gfx::IntRect(0, 0, mDecoder->mConfig.mDisplay.width,
mDecoder->mConfig.mDisplay.height));
- UniquePtr<VideoData::Listener> listener(
- new RenderOrReleaseOutput(mDecoder->mJavaDecoder, aSample));
- v->SetListener(Move(listener));
+ v->SetListener(Move(releaseSample));
mDecoder->Output(v);
}
if (isEOS) {
mDecoder->DrainComplete();
}
}