nsRefPtr<PlanarYCbCrImage> moz_gfx_memory_get_image(GstMemory *aMemory) { NS_ASSERTION(GST_IS_MOZ_GFX_MEMORY_ALLOCATOR(aMemory->allocator), "Should be a gfx image"); return ((MozGfxMemory *) aMemory)->image; }
void moz_gfx_buffer_pool_reset_buffer (GstBufferPool* aPool, GstBuffer* aBuffer) { GstMemory* mem = gst_buffer_peek_memory(aBuffer, 0); NS_ASSERTION(GST_IS_MOZ_GFX_MEMORY_ALLOCATOR(mem->allocator), "Should be a gfx image"); moz_gfx_memory_reset((MozGfxMemory *) mem); GST_BUFFER_POOL_CLASS(moz_gfx_buffer_pool_parent_class)->reset_buffer(aPool, aBuffer); }
nsRefPtr<PlanarYCbCrImage> GStreamerReader::GetImageFromBuffer(GstBuffer* aBuffer) { nsRefPtr<PlanarYCbCrImage> image = nullptr; if (gst_buffer_n_memory(aBuffer) == 1) { GstMemory* mem = gst_buffer_peek_memory(aBuffer, 0); if (GST_IS_MOZ_GFX_MEMORY_ALLOCATOR(mem->allocator)) { image = moz_gfx_memory_get_image(mem); GstVideoFrame frame; gst_video_frame_map(&frame, &mVideoInfo, aBuffer, GST_MAP_READ); PlanarYCbCrImage::Data data; ImageDataFromVideoFrame(&frame, &data); image->SetDataNoCopy(data); gst_video_frame_unmap(&frame); } } return image; }