Media (Intel® Video Processing Library, Intel Media SDK)
Access community support with transcoding, decoding, and encoding in applications using media tools like Intel® oneAPI Video Processing Library and Intel® Media SDK
Announcements
The Intel Media SDK project is no longer active. For continued support and access to new features, Intel Media SDK users are encouraged to read the transition guide on upgrading from Intel® Media SDK to Intel® Video Processing Library (VPL), and to move to VPL as soon as possible.
For more information, see the VPL website.

GStreamer Media SDK plugins now available in 01.org! (now with complete Windows 10 support)

Ishmael_Sameen
Beginner
13,523 Views

Hi All,

We have developed a set of GStreamer plugins that uses Intel Media SDK on Linux, and we'd like to share out our work here in the forums for those who might find this useful for their projects. This project was done for a major customer targeting the Apollo Lake platform, but we made sure that these GStreamer Media SDK plugins work on Haswell, Broadwell and Skylake platforms as well. The plugins can perform  hardware-accelerated decode, encode, VPP, transcode, rendering with zero-copy, etc. and works for all video formats currently supported by Intel Media Server Studio 2016 / 2017 Community, Essential or Professional Editions.

The validated stable versions can be cloned from Intel's official 01.org repository below:

https://github.com/01org/gstreamer-media-SDK

Windows support is completed, with full D3D11 hardware acceleration including zero-copy feature and deep color support when rendering with mfxsink. Please feel free to test it out from the below repos and report any issues you may find.

https://github.com/ishmael1985/gstreamer-media-SDK
https://github.com/ph0b/gstreamer-media-SDK

Any contributions to these repos are most welcome :)

Since I am no longer associated with Intel, please contact me via my personal email below strictly for GST-MSDK plugin issues / matters. As for other MSDK matters, it's best to contact Intel MSDK team since I do not represent Intel in official capacity.

ishmael1985@gmail.com

Regards,
Ishmael Sameen

0 Kudos
2 Solutions
benjamin_d_3
New Contributor I
13,245 Views

Hi Ishmael,

I just want to confirm that all issues that I have reported have been solved, the memory has been the same for 4 hours, we also have implemented the plugin to work with our internal application you can see the time and memory usage on the screenshot in the attachment. 

Thanks again for the help

Best Regards
Ben

 

  

View solution in original post

0 Kudos
benjamin_d_3
New Contributor I
13,299 Views

Hi Ishmael & Mantas,

First I want to thank Ishmael for the hard work and making this great plugin, we already started using it in production and dropped VAAPI due to quality and bug issues. I don't know how you did this but it's amazing for what I can see you are the only one developing this and solved every bug we found, thanks to Mantas as well for helping us find bugs.

Back to my last test results: I did run a pipeline with udpsrc and audio is good, i did make the source mess up by making the bandwidth lower then what source was in my switch to see if it goes out of sync then after it went back in sync again, I wasnt able to reproduce Mantas issue, maybe last fix solved it. 

I tried running other sources as well like rtmp hls tcp they all worked fine.

As far as memory that seems to be good too i have a process running for 21 hours at only 110MB. 

View solution in original post

0 Kudos
89 Replies
Ishmael_Sameen
Beginner
1,381 Views

Hi Nilesh,

Surprisingly, I somehow failed to catch your recent post early enough!
You shouldn't use the gold branch, it's vastly outdated, rather you should use the latest from here:

https://github.com/01org/gstreamer-media-SDK/tree/topic_linux_and_window

This is much more improved, refined version with both Windows and Linux support in a single unified codebase (they should work more or less the same from a functional point of view), so it's best to follow the latest. As for design docs, we don't have them yet, but we are working on that :)

Please let me know how it's working out for you.

Cheers,

Ishmael

0 Kudos
mikhaylo_T_
Beginner
1,381 Views

Hi Ishmael,

Thank you for a gread job with GST-MFX plugin.

Are you planning a some work for implementation a screen capture gstreamer element based on mfxplugin_screen_capture.dll ? 

0 Kudos
Ishmael_Sameen
Beginner
1,381 Views

Hi Mikhaylo,

To perform screen capture with GStreamer you can use ximagesrc or dx9screencapsrc element. You can then construct a pipeline with those screen capture elements together with the MFX plugins to achieve your target use case.

0 Kudos
mikhaylo_T_
Beginner
1,381 Views

Thanks Ishmael,

I have other question. Seems MFX plugin affects some how some other GStreamer plugins and prevents them executing correctly. Could you please check the execution details below.

I run it on windows env with MFX plugin from the branch "topic_linux_and_window". 

I only need to remove MFX plugin from plugins folder to make that pipeline executing with no errors.

 

D:\gstreamer\1.0\x86_64\bin>gst-launch-1.0 rtspsrc location="rtsp://127.0.0.1:8554/test" ! queue ! rtph264depay ! h264parse ! capsfilter caps="video/x-h264" ! openh264dec ! autovideosink

Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Got context from element 'mfxsink0': gst.mfx.Aggregator=context, gst.mfx.Aggregator=(GstMfxTaskAggregator)"\(GstMfxTaskAggregator\)\ mfxtaskaggregator1";
Progress: (open) Opening Stream
Progress: (connect) Connecting to rtsp://127.0.0.1:8554/test
Progress: (open) Retrieving server options
Progress: (open) Retrieving media info
Progress: (request) SETUP stream 0
Progress: (open) Opened Stream
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Progress: (request) Sending PLAY request
Progress: (request) Sending PLAY request
Progress: (request) Sent PLAY request
ERROR: from element /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc0: Internal data stream error.
Additional debug info:
gstbasesrc.c(2939): gst_base_src_loop (): /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc0:
streaming stopped, reason error (-5)
Execution ended after 0:00:00.210417103
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...
0 Kudos
Ishmael_Sameen
Beginner
1,381 Views

Hi Mikhaylo,

mfxsink plugin has the highest priority ranking, so when you call autovideosink in your pipeline, it will automatically call mfxsink. You can simply replace autovideosink with d3dvideosink or glimagesink, or you can customize the meson installation to not build mfxsink, i.e."mesonconf -DMFX_SINK_BIN=false"

0 Kudos
mikhaylo_T_
Beginner
1,381 Views

Hi Ishmael,

Thank you, that works

0 Kudos
Reply