gstreamer/sys/msdk
Sreerenj Balachandran 55c0d7205d msdk: dec: Add non-packetized stream handling support
The gst-msdk decoders prefer packetized streams as input
and in this case we can avoid unnecessary input bitstream copy
to mfxBitstream. This works fine for codecs like h264 where
we only support byte-stream with au alignment. Other format
conversions should be done thorugh parsers. But this won't work
for codecs like vc1 where we don't have an autoplugged parser.
Even the parser is not capable to do format conversions.

Packetizing through base decoders parse() routine will bring a
lot of uncecessary of complexities and codecparser libraray dependency.
So we just use an interal gst_adaper to keep track of bitstream
which is not consumed by msdk durig AsynchronusDecoding.
This adapter will get used only if subclass implementations
set the "is_packetized" to FALSE for msdk base encoder.

https://bugzilla.gnome.org/show_bug.cgi?id=792589
2018-02-13 14:41:20 -09:00
..
gstmsdk.c msdk: Add VC1 decoder (simple and main profiles) 2018-02-13 14:40:54 -09:00
gstmsdkallocator.h msdk: Avoid build failures on Windows until d3d allocator is implemented 2018-02-13 13:54:03 -09:00
gstmsdkallocator_d3d.c msdk: Avoid build failures on Windows until d3d allocator is implemented 2018-02-13 13:54:03 -09:00
gstmsdkallocator_libva.c msdk: adds frame allocator using libva 2018-02-13 12:43:42 -09:00
gstmsdkbufferpool.c msdk: supports bufferpool 2018-02-13 13:44:08 -09:00
gstmsdkbufferpool.h msdk: supports bufferpool 2018-02-13 13:44:08 -09:00
gstmsdkcontext.c msdk : Add RenderNode support 2018-02-13 14:40:22 -09:00
gstmsdkcontext.h msdk: add async depth from each msdk element to GstMsdkContext to be shared 2018-02-13 13:52:14 -09:00
gstmsdkcontextutil.c msdk: context: add job type to figure out if joining session is necessary 2018-02-13 13:50:48 -09:00
gstmsdkcontextutil.h msdk: context: add job type to figure out if joining session is necessary 2018-02-13 13:50:48 -09:00
gstmsdkdec.c msdk: dec: Add non-packetized stream handling support 2018-02-13 14:41:20 -09:00
gstmsdkdec.h msdk: dec: Add non-packetized stream handling support 2018-02-13 14:41:20 -09:00
gstmsdkenc.c msdk: add async depth from each msdk element to GstMsdkContext to be shared 2018-02-13 13:52:14 -09:00
gstmsdkenc.h msdkdec/enc: query GstContext to share GstMsdkContext 2018-02-13 13:51:18 -09:00
gstmsdkh264dec.c msdk: Add H.264 decoder 2016-12-12 23:16:11 +01:00
gstmsdkh264dec.h msdk: Add H.264 decoder 2016-12-12 23:16:11 +01:00
gstmsdkh264enc.c msdkh264enc: Implement frame-packing SEI insertion for side-by-side and top-bottom 2017-11-20 14:39:03 +02:00
gstmsdkh264enc.h msdkh264enc: Implement frame-packing SEI insertion for side-by-side and top-bottom 2017-11-20 14:39:03 +02:00
gstmsdkh265dec.c msdk: implements GstMsdkContext. 2018-02-13 12:41:28 -09:00
gstmsdkh265dec.h msdk: Add H.265 decoder 2016-12-12 23:48:46 +01:00
gstmsdkh265enc.c msdk: implements GstMsdkContext. 2018-02-13 12:41:28 -09:00
gstmsdkh265enc.h
gstmsdkmjpegdec.c msdk: Allow building against mfx_dispatcher 2017-10-30 18:20:23 +02:00
gstmsdkmjpegdec.h msdk: add mjpeg decoder 2016-12-13 00:06:42 +01:00
gstmsdkmjpegenc.c msdk: Allow building against mfx_dispatcher 2017-10-30 18:20:23 +02:00
gstmsdkmjpegenc.h msdk: add mjpeg encoder 2016-12-13 00:06:42 +01:00
gstmsdkmpeg2dec.c msdk: Add mpeg2 decoder 2018-01-10 10:40:24 -09:00
gstmsdkmpeg2dec.h msdk: Add mpeg2 decoder 2018-01-10 10:40:24 -09:00
gstmsdkmpeg2enc.c
gstmsdkmpeg2enc.h
gstmsdksystemmemory.c msdk: supports bufferpool 2018-02-13 13:44:08 -09:00
gstmsdksystemmemory.h msdk: supports bufferpool 2018-02-13 13:44:08 -09:00
gstmsdkvc1dec.c msdk: Add VC1 decoder (simple and main profiles) 2018-02-13 14:40:54 -09:00
gstmsdkvc1dec.h msdk: Add VC1 decoder (simple and main profiles) 2018-02-13 14:40:54 -09:00
gstmsdkvideomemory.c msdk: Avoid build failures on Windows until d3d allocator is implemented 2018-02-13 13:54:03 -09:00
gstmsdkvideomemory.h msdk: supports bufferpool 2018-02-13 13:44:08 -09:00
gstmsdkvp8dec.c msdk: implements GstMsdkContext. 2018-02-13 12:41:28 -09:00
gstmsdkvp8dec.h msdk: adds msdkvp8dec 2017-11-01 11:33:50 +02:00
gstmsdkvp8enc.c msdk: implements GstMsdkContext. 2018-02-13 12:41:28 -09:00
gstmsdkvp8enc.h
Makefile.am msdk: Add VC1 decoder (simple and main profiles) 2018-02-13 14:40:54 -09:00
meson.build msdk: Add VC1 decoder (simple and main profiles) 2018-02-13 14:40:54 -09:00
msdk.c msdkenc: use bufferpool 2018-02-13 13:48:32 -09:00
msdk.h msdkenc: use bufferpool 2018-02-13 13:48:32 -09:00
msdk_d3d.c msdk: implements GstMsdkContext. 2018-02-13 12:41:28 -09:00
msdk_libva.c msdk: implements GstMsdkContext. 2018-02-13 12:41:28 -09:00
msdk_libva.h msdk: libva: adds utility function between mfx and libva 2018-02-13 12:39:44 -09:00
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).