bool VideoDecoderChild::RecvOutput(const VideoDataIPDL& aData) { AssertOnManagerThread(); VideoInfo info(aData.display().width, aData.display().height); // The Image here creates a TextureData object that takes ownership // of the SurfaceDescriptor, and is responsible for making sure that // it gets deallocated. RefPtr<Image> image = new GPUVideoImage(aData.sd(), aData.display()); RefPtr<VideoData> video = VideoData::CreateFromImage(info, aData.base().offset(), aData.base().time(), aData.base().duration(), image, aData.base().keyframe(), aData.base().timecode(), IntRect()); mCallback->Output(video); return true; }
mozilla::ipc::IPCResult VideoDecoderChild::RecvOutput(const VideoDataIPDL& aData) { AssertOnManagerThread(); // The Image here creates a TextureData object that takes ownership // of the SurfaceDescriptor, and is responsible for making sure that // it gets deallocated. RefPtr<Image> image = new GPUVideoImage(GetManager(), aData.sd(), aData.frameSize()); RefPtr<VideoData> video = VideoData::CreateFromImage( aData.display(), aData.base().offset(), media::TimeUnit::FromMicroseconds(aData.base().time()), media::TimeUnit::FromMicroseconds(aData.base().duration()), image, aData.base().keyframe(), media::TimeUnit::FromMicroseconds(aData.base().timecode())); mDecodedData.AppendElement(std::move(video)); return IPC_OK(); }