Bug 1347439 - part 3: release outputs not sent for rendering. r?jya
Cherry-picked from
bug 1336792 part 3
MozReview-Commit-ID: 20m2WubTebm
--- a/dom/media/platforms/android/RemoteDataDecoder.cpp
+++ b/dom/media/platforms/android/RemoteDataDecoder.cpp
@@ -142,16 +142,19 @@ public:
: JavaCallbacksSupport(aCallback)
, mDecoder(aDecoder)
{}
virtual ~CallbacksSupport() {}
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));
MOZ_ASSERT(ok);
int32_t offset;
ok |= NS_SUCCEEDED(info->Offset(&offset));
@@ -180,19 +183,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));
mDecoderCallback->Output(v);
}
if (isEOS) {
mDecoderCallback->DrainComplete();
}
}