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

H.264 Decoder failed

yida_123
Beginner
1,227 Views
Hello
i used h.264 decoder sample to decode a packet. the emergence of a gray section, how to solve this problem? I used the ffmpeg solution of this package, there is no such phenomenon.

who can help me ?

by the way , 352*288 is right, but 1280*720 has that problem.

i used ipp_ia32_5.3 , and ipp-samples 5.3


0 Kudos
1 Solution
Emmanuel_W_
New Contributor I
1,227 Views
Quoting - yida123
hi

IF i want to use ipp , is there any solutions ? and how should i do

yida


In umc_h264_slice_decoding.h there is a function called IsPictureTheSame.
Toward the end of the function there is a check done to compare the idr_pic_id of two slices.
If you comment out the check (and following return) you will be able to decode the stream.
Note that if you do so the decoder will be unable to differentiate between two consecutives IDR that have missing packets.

Emmanuel

View solution in original post

0 Kudos
17 Replies
Vladimir_Dudnik
Employee
1,227 Views
Hello,

IPP 5.3 is a bit out dated version. Is there any chance to check this with the latest version which is IPP 6.1 update 1?There wereseveral bug fixed since IPP 5.3...

Regards,
Vladimir
0 Kudos
PaulF_IntelCorp
Employee
1,227 Views
Hello Yida,

Significant improvements and bug fixes have been implemented since v5.3 was released (current version is v6.1.1). Please upgrade your IPP library to see if that fixes the problem you are experiencing. Your upgrades to 6.1 will be free if your subscription is still active (generally, if you purchased your product withing the last year). Log into the registration center to determine the state of your license:


A subscription renewal can be purchased for less cost than repurchasing the product, to extend your license (please note the difference between a subscription renewal and a new purchase as covered in the FAQ links below).


Regards,

Paul
0 Kudos
yida_123
Beginner
1,227 Views
Hello Yida,

Significant improvements and bug fixes have been implemented since v5.3 was released (current version is v6.1.1). Please upgrade your IPP library to see if that fixes the problem you are experiencing. Your upgrades to 6.1 will be free if your subscription is still active (generally, if you purchased your product withing the last year). Log into the registration center to determine the state of your license:


A subscription renewal can be purchased for less cost than repurchasing the product, to extend your license (please note the difference between a subscription renewal and a new purchase as covered in the FAQ links below).


Regards,

Paul

thanks !

i also used the ipp 6.0, the problem is the same .

is there any different between ipp 6.0 and ipp6.1?


that problem didn't hanppend all the time , Decode some time to appear.

who can help me ?

0 Kudos
yida123
Beginner
1,227 Views
Quoting - yida_123

thanks !

i also used the ipp 6.0, the problem is the same .

is there any different between ipp 6.0 and ipp6.1?


that problem didn't hanppend all the time , Decode some time to appear.

who can help me ?


i used ipp 6.1 the problems still existence
is this ipp bug
is there has the Solutions
0 Kudos
PaulF_IntelCorp
Employee
1,227 Views
Can you provide some sample video files that illustrate the problem?
0 Kudos
yida123
Beginner
1,227 Views
Can you provide some sample video files that illustrate the problem?

HiPaul and thanks for the reply,

how can i post to you ?

the packet is so big , 8817kb

Thanks!
0 Kudos
yida123
Beginner
1,227 Views
Hello,

IPP 5.3 is a bit out dated version. Is there any chance to check this with the latest version which is IPP 6.1 update 1?There wereseveral bug fixed since IPP 5.3...

Regards,
Vladimir

hi vladimir

i just want to know about ipp decode h264, H264 decoding process, if there are 2 consecutive bytes of 0, there will be an 0x03, I want to know whether to delete the 0x03when use ipp decoding
0 Kudos
PaulF_IntelCorp
Employee
1,227 Views
Quoting - yida123

HiPaul and thanks for the reply,

how can i post to you ?

the packet is so big , 8817kb

Thanks!

When you reply to a post in the forum there is an "Add Files" button (above the editing window) where you can attach a file along with your reply. Not sure how big the attachments can be, but please give it a try. If that doesn't work we can find an alternate method. I think the file is too large to mail (will probably bounce).
0 Kudos
yida123
Beginner
1,227 Views
hi paul



the 264 packet decoded by ffmpeg is correctly.
0 Kudos
yida123
Beginner
1,227 Views
hi paul

Can you see the files , is there some problem?


yida

0 Kudos
Emmanuel_W_
New Contributor I
1,227 Views
Quoting - yida123
hi paul

Can you see the files , is there some problem?


yida

Hi Yida,

There seem to be a problem in the stream. Toward the beginning there are two IDRs which both have an invalid intra chroma mode at MB 720 which cause the decoder to throw an exceptions (you can get more details by putting a breakpoint into the constructor ofh264_exception).
On my side the file would not decode at all until I modified the functionProcessSegment in umc_h264_segment_decoder_mt.cpp to return a success code instead of an error in case of an exception.
I get a video of an office with the top broken (green band)

Emmanuel
0 Kudos
yida123
Beginner
1,227 Views
Quoting - eweber
Hi Yida,

There seem to be a problem in the stream. Toward the beginning there are two IDRs which both have an invalid intra chroma mode at MB 720 which cause the decoder to throw an exceptions (you can get more details by putting a breakpoint into the constructor ofh264_exception).
On my side the file would not decode at all until I modified the functionProcessSegment in umc_h264_segment_decoder_mt.cpp to return a success code instead of an error in case of an exception.
I get a video of an office with the top broken (green band)

Emmanuel

Hi Emmanuel
Thanks for your reply!
That ismy problem . iget the video of an office with the top broken(gray band). but when i used ffmpeg decode ,the video is correct.

Yida
0 Kudos
Emmanuel_W_
New Contributor I
1,227 Views
Quoting - yida123

Hi Emmanuel
Thanks for your reply!
That ismy problem . iget the video of an office with the top broken(gray band). but when i used ffmpeg decode ,the video is correct.

Yida
Hi yida,

The problem is in the stream, ffmpeg makes an assumption (which is working in that case). The idr_pic_id field of frame 78 is 36 for the first slices and then becomes 35 begining with the slice with MB address 720. According to the specs all slices of the IDR should have the same value. The IPP decoder treat it as two different frames, ffmpeg probably do not check the value and assume it is the same frame. (not that both my analyser and reference implementation show that frame broken and actually have the exact same output than my IPP implementation).

Emmanuel
0 Kudos
yida123
Beginner
1,227 Views
Quoting - eweber
Hi yida,

The problem is in the stream, ffmpeg makes an assumption (which is working in that case). The idr_pic_id field of frame 78 is 36 for the first slices and then becomes 35 begining with the slice with MB address 720. According to the specs all slices of the IDR should have the same value. The IPP decoder treat it as two different frames, ffmpeg probably do not check the value and assume it is the same frame. (not that both my analyser and reference implementation show that frame broken and actually have the exact same output than my IPP implementation).

Emmanuel

Hi Emmanuel,
Thanks for your reply. is there exactly solution.modify the frame by myself? i received the data from network.
can you show me the code?

yida
0 Kudos
yida123
Beginner
1,227 Views
hi

IF i want to use ipp , is there any solutions ? and how should i do

yida

0 Kudos
Emmanuel_W_
New Contributor I
1,228 Views
Quoting - yida123
hi

IF i want to use ipp , is there any solutions ? and how should i do

yida


In umc_h264_slice_decoding.h there is a function called IsPictureTheSame.
Toward the end of the function there is a check done to compare the idr_pic_id of two slices.
If you comment out the check (and following return) you will be able to decode the stream.
Note that if you do so the decoder will be unable to differentiate between two consecutives IDR that have missing packets.

Emmanuel
0 Kudos
yida123
Beginner
1,227 Views
Quoting - eweber

In umc_h264_slice_decoding.h there is a function called IsPictureTheSame.
Toward the end of the function there is a check done to compare the idr_pic_id of two slices.
If you comment out the check (and following return) you will be able to decode the stream.
Note that if you do so the decoder will be unable to differentiate between two consecutives IDR that have missing packets.

Emmanuel

Hi Emmanuel,
Thanks for your reply! The problem had solved !
Thanks so much!

yida
0 Kudos
Reply