Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Beginner
104 Views

Failed to Initialize H264 Video Decoder

Hi,
I'm receiving a strange error when trying to initialize H264 video decoder (IPP v6). Here is a code sample:
[bash]UMC::H264VideoDecoder decoder;
UMC::VideoDecoderParams params;
params.numThreads = 1;
params.lFlags = 0;
params.m_pData = &DataIn;
params.info.stream_type = UMC::H264_VIDEO;
decoder.Init(&params);[/bash]
The line decoder.Init(...) fails with ASSERT somewhere deep in CRT (dbgheap.c, _CrtIsValidHeapPointer(pUserData)).
When I debug H264 video decoder, everything goes fine tillCreateSegmentDecoderWrapper::CreateSoftSegmentDecoder is called and the firstCreateSegmentDecoder function inside it.
I have changed various streams inside DataIn, even not initialize DataIn, but there is no difference, the same CRT error.
I would really appreciate help on this one. Thanks.
Regards,
Aleksandar
0 Kudos
3 Replies
Highlighted
Employee
104 Views

Hello Aleksander,

Have you tried your streamswtih simple_player.exe. Can it decode and play them?

How about run the H.264 decoder as in the KB
http://software.intel.com/en-us/articles/getting-started-with-intel-ipp-unified-media-classes-sample...
?

DataIn.SetBufferPointer(cVideoData,VideoDataSize);

DataIn.SetDataSize(VideoDataSize);

//usedefaultparamter,threadingnumber=1

Params.m_pData=&DataIn;Params.lFlags=0;Params.numThreads=1;

if(status=H264Decoder.Init(&Params)!=UMC::UMC_OK)
return;

Regards,
Ying

0 Kudos
Highlighted
Beginner
104 Views

Hi Ying,

thanks for the answer. I'm unitializing decoder as in example given in KB. If I'm not wrong, you can see that in the code sample I gave in my post, the only missing part is DataIn initialization which I did in a propper way (as in a KB example).
A bit more details: I'm trying to decode H264 stream extracted from MPEG2 TS. Does IPP h264 decoder expects to receive h264 stream packed up in mp4? I have used IPP Mpeg2 decoder to successfully decode MPEG2 stream extracted from MPEG2 TS, and it worked perfectly. On the other hand, h264 decoder doesn't even succeeds to initialize. The strangest thing is that it seems to produce CRT error on lines that are not related to input byte array, at all (as long as I can see).
Stuck with this for few days and do not have a clue. I would appreciate any help.
Thanks,
Aleksandar
0 Kudos
Highlighted
Beginner
104 Views

I have solved it (almost). It looks like that code wasn't able to execute until I have changed code for IPP H264 decoder. It seems that the problem was withSegmentDecoderHPBase class instantiated inCreateSoftSegmentDecoderWrapper::CreateSegmentDecoder. When I have removed virtual destructor fromSegmentDecoderHPBase, and other classes thatSegmentDecoderHP derives from, everything seems to work ok. Really strange. If someone knows the reason, I would like to hear why this error is comming from. Btw, code is hosted inside DirectShow filter (if it matters at all)...perhaps I have some strange setting inside my compiler... Still do not know the reason, but again, it works when there are no those virtual destructors.
0 Kudos