[Ffmpeg-devel] [BUG] seeking crash in x264 with b_pyramid

Corey Hickey bugfood-ml
Fri Feb 24 02:13:08 CET 2006


I've run into an intermittent problem with playing x264-encoded files
that use b_pyramid. If I seek around a whole bunch, eventually mplayer
crashes. It displays lots of messages like these:

[h264 @ 0xc24c70]get_buffer() failed (0 0 1 0xef96b0)
[h264 @ 0xc24c70]decode_slice_header error
Error while decoding frame!
[h264 @ 0xc24c70]get_buffer() failed (stride changed)
[h264 @ 0xc24c70]decode_slice_header error
Error while decoding frame!
[h264 @ 0xc24c70]get_buffer() failed (stride changed)
[h264 @ 0xc24c70]decode_slice_header error
Error while decoding frame!
[h264 @ 0xc24c70]get_buffer() failed (stride changed)
[h264 @ 0xc24c70]decode_slice_header error
Error while decoding frame!
...


ffplay crashes as well, with lots of these messages:

[h264 @ 0x7eb910]get_buffer() failed (0 0 1 0xc69f80)
[h264 @ 0x7eb910]decode_slice_header error
[h264 @ 0x7eb910]get_buffer() failed (0 0 1 0xc69f80)
[h264 @ 0x7eb910]decode_slice_header error
[h264 @ 0x7eb910]get_buffer() failed (0 0 1 0xc69f80)
[h264 @ 0x7eb910]decode_slice_header error
[h264 @ 0x7eb910]get_buffer() failed (stride changed)
[h264 @ 0x7eb910]decode_slice_header error
[h264 @ 0x7eb910]get_buffer() failed (stride changed)
[h264 @ 0x7eb910]decode_slice_header error
[h264 @ 0x7eb910]get_buffer() failed (stride changed)
[h264 @ 0x7eb910]decode_slice_header error
...


I've been able to reproduce the problem with different files on both
i386 and amd64. I've distilled a test case down to a file created with:

$ mencoder matrix.vob -nosound -ovc x264 -x264encopts \
bitrate=50:pass=1:bframes=3:b_pyramid:turbo=2 \
-sws 0 -ofps 24000/1001 -vf crop=704:352:10:62,scale=176:80 \
-o test.avi -frames 20000

The cropping, scaling, and turbo aren't relevant to reproducing the
problem. I just wanted something that encoded very quickly and produced
an easily-downloadable file. The number of frames is somewhat relevant
-- it seems to be harder to reproduce the problem with a shorter file.

The files are located at:
http://fatooh.org/files/tmp/seek_bug/
pyramid.avi: encoded with the above mencoder command
nopyramid.avi: the same, but without b_pyramid
mplayer.log: playing pyramid.avi
ffmpeg.log: playing pyramid.avi

The command for quickly reproducing the crash with mplayer is as follows:

while true ; do
  echo seek $((($RANDOM-16200) / 500))
  sleep 0.5
done | \
mplayer pyramid.avi -slave

That seeks random short intervals in the file with a very slight bias
for seeking forward. It always crashes for me, though there's a slight
possibility mplayer will seek to the end of the file and quit before
crashing. Just try again if that happens.

I don't have an easy command for ffplay; just play the file and seek
around until it crashes.

Thanks,
Corey





More information about the ffmpeg-devel mailing list