mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-19 14:56:36 +00:00
1e95c03c7d
The patch adds a serios of changes to support dynamic resolution change and efficient utilization of resources. Major changes: -- Use MSDK's apis to retrieve the headers instead of only relying on upsteram notification. For eg: avc decoder requires SEI header information for dpb count calculation which we don't get from caps. -- For all codecs other than VP9, we force the reset of decoder if resoultion changes to fit with gstreamer flow. VP9 enfource the hard reset only if the new resolution is bigger. -- delay the src caps setting till msdk api's invokation in handle_frame to avoid caching multiple configuration values -- ensure pool negotiation is based on decoder's allocation_caps. --dynamic resoluttion change use an explicit allocation_query to reclaim the buffers before closing the decoder (thanks to v4l2dec) --In case if we don't get upstream notification of res change (for eg, this can can happen for vp9 frames with ivfheader where ivfparse is not able to notify the dynamic changes), we handle the the case based on MFX_ERR_INCOMPATIBLE_VIDEO_PARAM which is the return value of MFXVideoDECODE_DecodeFrameAsync -- calculate the minimum surfaces to be preallocated based on msdk suggestion, downstream requirement, async depth and scratch surface count for smooth display. https://bugzilla.gnome.org/show_bug.cgi?id=796566 |
||
---|---|---|
.. | ||
gstmsdk.c | ||
gstmsdkallocator.h | ||
gstmsdkallocator_d3d.c | ||
gstmsdkallocator_libva.c | ||
gstmsdkallocator_libva.h | ||
gstmsdkbufferpool.c | ||
gstmsdkbufferpool.h | ||
gstmsdkcontext.c | ||
gstmsdkcontext.h | ||
gstmsdkcontextutil.c | ||
gstmsdkcontextutil.h | ||
gstmsdkdec.c | ||
gstmsdkdec.h | ||
gstmsdkenc.c | ||
gstmsdkenc.h | ||
gstmsdkh264dec.c | ||
gstmsdkh264dec.h | ||
gstmsdkh264enc.c | ||
gstmsdkh264enc.h | ||
gstmsdkh265dec.c | ||
gstmsdkh265dec.h | ||
gstmsdkh265enc.c | ||
gstmsdkh265enc.h | ||
gstmsdkmjpegdec.c | ||
gstmsdkmjpegdec.h | ||
gstmsdkmjpegenc.c | ||
gstmsdkmjpegenc.h | ||
gstmsdkmpeg2dec.c | ||
gstmsdkmpeg2dec.h | ||
gstmsdkmpeg2enc.c | ||
gstmsdkmpeg2enc.h | ||
gstmsdksystemmemory.c | ||
gstmsdksystemmemory.h | ||
gstmsdkvc1dec.c | ||
gstmsdkvc1dec.h | ||
gstmsdkvideomemory.c | ||
gstmsdkvideomemory.h | ||
gstmsdkvp8dec.c | ||
gstmsdkvp8dec.h | ||
gstmsdkvp8enc.c | ||
gstmsdkvp8enc.h | ||
gstmsdkvp9dec.c | ||
gstmsdkvp9dec.h | ||
gstmsdkvpp.c | ||
gstmsdkvpp.h | ||
gstmsdkvpputil.c | ||
gstmsdkvpputil.h | ||
Makefile.am | ||
meson.build | ||
msdk-enums.c | ||
msdk-enums.h | ||
msdk.c | ||
msdk.h | ||
msdk_d3d.c | ||
msdk_libva.c | ||
msdk_libva.h | ||
README |
# gst-msdk gst-msdk is a plugin for [Intel Media SDK](https://software.intel.com/en-us/media-sdk), a cross-platform API for developing media applications. The plugin has multiple elements for video hardware encoding leveraging latest Intel processors through Intel Media SDK. - MPEG2 encoding (*msdkmpeg2enc*) - H.264 encoding (*msdkh264enc*) - H.265 encoding (*msdkh265enc*) - VP8 encoding (*msdkvp8enc*) It requires: - Intel Media SDK # Giving it a try Encoding a simple video test source and saving it to a file. $ gst-launch-1.0 videotestsrc ! msdkh264enc ! filesink location=test.h264 # License gst-mdk is freely available for download under the terms of the [BSD-3-Clause License](https://spdx.org/licenses/BSD-3-Clause.html).