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

UMC: MPEG2 Decoder Crash

Scott_Danahy
Beginner
1,068 Views
Hi,
I've encountered a case where the MPEG2 decoder crashes. I havenumThreads set to 8 and there appears to be a problem correctly setting up the internal worker threads. One of theMPEG2VideoDecoderBase::ThreadWorkingRoutine instances will callDecodeSlices with null buffer pointers (IppVideoContext::bs_* values are all NULL or zero).
This seems to happen whenm_nNumberOfThreads andcurr_thread do not match after the thread initialization loop inMPEG2VideoDecoderBase::DecodePicture.
I can reproduce this with simple_player like this:
simple_player.exeD:\\crash.m2v -vnul -t 8
This only happens for certain MPEG2 bistreams. Has anyone else seen this issue? Any suggestions on how to work around it?
Scott
0 Kudos
25 Replies
Alexander_Modenov__I
New Contributor I
190 Views
Hi Scott,
You wrote "This fixdoesn'tmake a lot of sense to me". But I see no artifacts on streams provided by you.
Do you have another streams with artifacts ?
Please send it.
PS
The behaviour ofSHOW_HI9BITS is incorrect for chrominance blocks with dct_dc_size=11. Additional bit required to get correct data from theMPEG2_DCSIZE_TAB.
Regards,
Alexander
0 Kudos
Scott_Danahy
Beginner
190 Views
Hi Alexander,
Thank you for explaining the problem, and no I don't see anyadditionalproblems. Are there any cases other than chroma blocks with dct_dcsize=11 where SHOW_HI9BITS needs to load additional bits? I'm just trying to make sure I understand. :)
Thanks for all your effort!
Scott
0 Kudos
Alexander_Modenov__I
New Contributor I
190 Views
Hi Scott,
The SHOW_HI9BITS macro needs to load additional bit (only one) in very special case - when internal bit offset is 7 and the dct_dc_size for chroma block is 11 (and 10 to be honest). No such problem for limunance blocks because according to standard dct_sc_size sizes table for luminance uses maximum 9 bits per length and chroma dct_dc_size table uses maximum 10 bits. I've added simple and easy modification to SHOW_HI9BITS for all the cases for unity.
This change doesn't affect performance and codec stability I think.
Regards,
Alexander
PS
If you find any problems you are always welcome.
0 Kudos
Scott_Danahy
Beginner
190 Views
Hi Alexander,
Thanks for taking the time to explain. Iappreciateyour efforts inresolvingthis. So far our batch testing looks great.
Scott
0 Kudos
Chao_Y_Intel
Moderator
190 Views

Hi Scott,

The fix suggested by Alexander is also included in the 7.0.2 release.

Regards,
Chao
0 Kudos
Reply