Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.

IPP 6 H264 decoder problem

alex78
New Contributor I
1,060 Views
Hi all,

we are using the H264 decoder sample from IPP 6 sample package. The decoder works fine, but sometimes it happens that the decoder (while decoding the first frame after a successfull call to Init) fires a UMC::h264 exception from inside GetVUIParam method and there is no output data, GetFrame returns -882. The exception says something like:

UMC::H264_exception::'vftable'
"scalar deleting destructor" (unsigned int).

1. Is is NOT a data problem because it happenes rarely while still opening the SAME H264 raw data file.
2. Is does not seem to happen when the H264 decoder is compiled in debug mode.
3. Using Win XP 32bit and VS2005 compiler.

Commenting out the GetVUIParam call (there is only one in the entire sample) solves the problem, the exception is never fired, but the VUI information is not going to be used.

Does anybody have any idea about this exception?

Thank you very much for your help
Best regards
Alex
0 Kudos
10 Replies
Vladimir_Dudnik
Employee
1,060 Views
Hi Alex,

thanks for reporting on issue. We will investigate this and update you with the results.

Regards,
Vladimir
0 Kudos
alex78
New Contributor I
1,060 Views
Hi Alex,

thanks for reporting on issue. We will investigate this and update you with the results.

Regards,
Vladimir

Hi Vladimir,

thanks for your reply. We are really curious about a solution of this problem or a possible workaround. Please reply to this thread if there is a solution for this or if you have any additional qustions.

Thanks
Alex
0 Kudos
Vladimir_Dudnik
Employee
1,060 Views
Alex,

could you please provide a sample H.264 stream where you face that issue and command line parameters you use for IPP sample (I assume you run simple_player?)

Regards,
Vladimir
0 Kudos
alex78
New Contributor I
1,060 Views

Hi Vladimir,

thanks for your reply again. Attached you will findone raw H264 frame (it is an IDR frame with all necessary headers to start decoding). However, we are not usingsimple_player, we are using the H264 decoder sample (no code changes) compiled to a DLL and using the decoder inside a windows app.

This is the situation how we can reproduce the error. We are testing the IPP H264 decoder inside a video management solution where there are many H264 streams that must be decoded simultaneously. We have a test maschine with one H264 raw data file starting with the frame I attached. Then we open (for testing purposes) cca 40 - 80 windowless player controls on one windows form (40 - 80 instances of the decoder are created) and each window starts to receive thesame H264 stream. But some decoders fire the exception described above while decoding the first frame. So cca 1 - 3 windows stay blank, because of the exception. The strange thing is that each decoder isreceiving thesame data stream.

Alex
0 Kudos
Vladimir_Dudnik
Employee
1,060 Views
Alex,

I do not see attachment (please review 'how to attach file to this forum' article. It should be one of the top posts in this forum).

By the way, if you use H.264 decoder in another way than it is in simple_player we may also need to see how exactly you are using this. Piece of code should be useful to review.

Vladimir
0 Kudos
alex78
New Contributor I
1,060 Views

Hi Vladimir,

sorry, I uploaded the frame to server but forgot to attach it to the post. We use Microsoft DirectShow architecure and we implemented the decoder as a DMO (direct media object). But we did not make any changes to the decoder itself. The DMO is responsible for delivering data to the decoder. We tested the same DMO architecture for other decoders as well (MPEG4, AAC etc.) and we neverhave an exception. UsingH264 decoder we sometimes have the exception described above from inside the decoder. I could send you the entire DMO with a test application that could reproduce the error if you wish.

Best regards
Alex
0 Kudos
Vladimir_Dudnik
Employee
1,060 Views
Hello,


there is comment from our expert: I investigated stream and found that stream is corrupted. It contains partial sequence header (SPS with VUI parameters) that is why you got h264_exception (memory overreading occurred and decoder read garbage). It is normal behavior of H.264 decoder. This exception should be caught at TaskSupplier::DecodeHeaders function, but decoder will skip all frames until next sequence header.


Regards,
Vladimir
0 Kudos
alex78
New Contributor I
1,060 Views

Vladimir,

thanks very much for solving this for us.

Alex
0 Kudos
alex78
New Contributor I
1,060 Views
Hello,


there is comment from our expert: I investigated stream and found that stream is corrupted. It contains partial sequence header (SPS with VUI parameters) that is why you got h264_exception (memory overreading occurred and decoder read garbage). It is normal behavior of H.264 decoder. This exception should be caught at TaskSupplier::DecodeHeaders function, but decoder will skip all frames until next sequence header.


Regards,
Vladimir

Hi Vladimir,

sorry for replying to this old thread again. We investigated theIDR frameonce more and we could not find a problem with the SPS header and VUI.We receive this stream directly from a H264 capable camera. Is it possible for your expert who find the data corruption in the frame to provide us with more detailed information about what *exactly* is corrupted in the stream so that we can check with the camera manufacturer?

Best regards

Alex
0 Kudos
PaulF_IntelCorp
Employee
1,060 Views
Hello Alex,
Response from the engineer, regarding the incomplete header:
There was [an] incomplete sps header at bitstream (incomplete VUi part of sps). A few bytes was absent. For example: lets, you have correct original bitstream with sps and VUI. Lets, size of SPS with VUI is 10 bytes. This corrupted stream contains only 7 bytes of sps with VUI. So, 3 bytes are lost
Regards,
Paul
0 Kudos
Reply