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.
3058 Discussions

Some problem for decode/encode H264, MPEG-2 video, and MediaSDK utility

raywu
Beginner
917 Views

Hi,

I have some problems as follows, please help, thanks a lot.

1. When I try to implement H264 decode function in "GraphicEdit" tool, some video sources occur error.

Description:

When I try to link the [video source]->[Output] and [Intel MediaSDK MP4 Splitter]->[Input], some video sources occur error.

The error message is "80040217: No combination of intermediate filters could be found to make the connection".

It seems the [Intel MediaSDK MP4 Splitter] can not identify this source format, but this source is H264 video format.

Are there any format limitations for H264 video to be decode ?

Why some H264 videos can be decode formally, some can not ?

2. I want to decode/encode H264,MPEG-2 video and do not display out in any media player.

Are there any utility that it can only do as follows procedures ?

H264 video source

-> decode H264 bit streams to raw frames

-> encode raw frames to MPEG-2 bit streams

-> decode MPEG-2 bit streams to raw frames

-> raw frames file

0 Kudos
1 Solution
Eric_S_Intel
Employee
917 Views

Hi raywu,

The Media SDK has a few samples that should help.

- Sample_multi_transcode - it will allow you to decode a h264 file, re-encode it to a mpeg then write it to a file. No rendering to the display. Has a few command line settings that let you tweek the encoder

- Sample_Dshow - This gui application has a limited set of transcode profiles but it uses DShow. You can inspect the active filters by using Connect to remote Graph in GraphEdit (Make sure you register proppage.dll)

- Sample_Decode - To decode h264 and MPEG2 bitstreams to raw frames

- Sample_Encode To encode ream frames to MPEG-2 bit streams

The muxers, and splitters that get registered with the Media SDK are only part of the distribution so that Sample_DShow can be guaranteed to create a complete graph. They are not a robust filter solution. However, I was able to create the graph below that solves you query:



Hope this helps
-Eric

View solution in original post

0 Kudos
6 Replies
Eric_S_Intel
Employee
918 Views

Hi raywu,

The Media SDK has a few samples that should help.

- Sample_multi_transcode - it will allow you to decode a h264 file, re-encode it to a mpeg then write it to a file. No rendering to the display. Has a few command line settings that let you tweek the encoder

- Sample_Dshow - This gui application has a limited set of transcode profiles but it uses DShow. You can inspect the active filters by using Connect to remote Graph in GraphEdit (Make sure you register proppage.dll)

- Sample_Decode - To decode h264 and MPEG2 bitstreams to raw frames

- Sample_Encode To encode ream frames to MPEG-2 bit streams

The muxers, and splitters that get registered with the Media SDK are only part of the distribution so that Sample_DShow can be guaranteed to create a complete graph. They are not a robust filter solution. However, I was able to create the graph below that solves you query:



Hope this helps
-Eric

0 Kudos
raywu
Beginner
917 Views
Hi Eric,

Thanks for your help,
Could you give me your test video file ?

There are still some problem when I transcode my video file.

In Media SDKdecode samplecode source,
"pipeline_decode.cpp" -> "CDecodingPipeline::InitMfxParams()" -> "sts = m_pmfxDEC->DecodeHeader(&m_mfxBS, &m_mfxVideoParams);"

When the program runs to this function; MFXVideoDECODE_DecodeHeader
The sts parameter will equal to MFX_ERR_MORE_DATA many times in this function loop, and finally the program will terminate.
Why my test video cause the sts parameter equal to MFX_ERR_MORE_DATA many times ?

Thanks
Ray Wu
0 Kudos
Eric_S_Intel
Employee
917 Views

Hi Ray,

My source file is Transformers Revenge of the Fallen trailer that I downloaded off the web (Apple site I think). I then took that file and Demuxed It using Elecards XMuxer Pro software the evaluation version can also be downloaded.

About the repetitive More Data problem.. Check the bitstream syntax. You are going to need an Annex B formatted bitstream. If I recall correctly, using a NAL formatted AVC1 bitstream type (w/o startcodes in it) could cause that problem. I wrote a blog on this a while back: http://software.intel.com/en-us/blogs/2010/05/18/media-sdk-mpc-and-avc/ Try using XMuxer to create different bitstreams, try them and let me know.

-Eric

0 Kudos
raywu
Beginner
917 Views

Hi Eric,

Sorry, thereis aquestions for Media SDK.

1. What's the application that Intel use to demonstrate the Hardware acceleration with Media SDK transcoder ? (on Intel Q67(QM67) chipset and sandy bridge CPU)


Note :
1. Cyberlink Media Espresso 6.0 version not support DXVA enabled on Intel Q67 chipset + sandy bridge CPU.

0 Kudos
Eric_S_Intel
Employee
917 Views

We use a number of tools and applications to demonstrate the hardware acceleration paths. Starting with the Media SDK samples. Theres a whole host of usages and settings in those tools to demonstrate the MSDK using the hardware acceleration.

We also work closely with our partners to enable their applications with the new features. For instance, Cyberlink We showed Cyberlink running SNB acceleration at IDF. This was an early-pre released version of the application that will be available in the future.

Hope this helps

Eric

0 Kudos
Jason_Y_
Beginner
917 Views

Hi Eric,

I've got the similar problem with MFXVideoDECODE_DecodeHeader, in the Media SDK 2014, sample_decode.

(file:pipeline_decode.cpp, function: InitMfxParams)

When I decode a raw h264 stream with sample_decode, using the params as"h264 -i in.h264 -o out.yuv -hw -calc_latency", the decoder will be entry the endless loop for "DecodeHeader" in the function "CDecodingPipeline::InitMfxParams". But when I use the params as "h264 -i in.h264 -o out.yuv -hw", it works well.  

And I found that the object "m_FileReader" will be set as "CH264FrameReader" when using -calc_latency otherwise it will be set as "CSmplBitstreamReader" .

How can I fix the problem?

0 Kudos
Reply