[mythtv] decoding HD-PVR H.264

john jppoet at gmail.com
Tue Feb 3 16:53:30 UTC 2009


On Feb 3, 2009, at 9:32 AM, David Engel wrote:

> On Mon, Feb 02, 2009 at 08:18:40PM -0700, john wrote:
>> While libavcodec/h264.c does treat that as a warning and not an  
>> error,
>> that warning causes it to not set the gotpicture flag.  Because
>> gotpicture is false, AvFormatDecoder::GetFrame() will continue onto  
>> the
>> next frame.  That one fails, because it is not a keyframe (and it  
>> failed
>> to parse the previous frame):
>>
>> [h264 @ 0xf39300]B picture before any references, skipping
>> [h264 @ 0xf39300]decode_slice_header error
>> [h264 @ 0xf39300]no frame!
>> AFD Error: Unknown decoding error
>>
>> Can anyone help me understand why decode_frame() kicks back the  
>> keyframe
>> with that "unref short failure"?  I though keyframes where "self
>> contained".
>
> I've seen those errors myself.  It could be the cause of, or at least
> related to, a problem I've started to look into.  Most of the time
> after skipping forward or backward on HD-PVR recording, I will get a
> prebuffering pause about 0.5 seconds after playback resumes.
>
> David

Janne has explained to me that I-frames in H.264 are not self- 
contained.  Only IDR frames are self-contained.  He says that H.264  
streams which do not have IDR frames, use SEI, but the SEI are not  
self-contained.

I will probably try changing the H264Parser to mark IDR and SEI frames  
in the seektable, instead of I-frames.

John



More information about the mythtv-dev mailing list