Opened 14 years ago

Closed 12 years ago

#238 closed enhancement (fixed)

ffplay fails to play file with changing pixel format

Reported by: Carl Eugen Hoyos Owned by:
Priority: wish Component: ffplay
Version: git-master Keywords: mjpeg
Cc: Blocked By:
Blocking: Reproduced by developer: yes
Analyzed by developer: no

Description

Attached file can be converted with ffmpeg, but crashes ffplay.

(gdb) r -i test.mjpeg
ffplay version git-N-30219-g07586b6, Copyright (c) 2003-2011 the FFmpeg developers
  built on May 25 2011 17:18:11 with gcc 4.5.3
  configuration: --cc='/usr/local/gcc-4.5.3/bin/gcc -m32' --enable-gpl
  libavutil    51.  2. 2 / 51.  2. 2
  libavcodec   53.  6. 0 / 53.  6. 0
  libavformat  53.  2. 0 / 53.  2. 0
  libavdevice  53.  0. 0 / 53.  0. 0
  libavfilter   2. 11. 0 /  2. 11. 0
  libswscale    0. 14. 0 /  0. 14. 0
  libpostproc  51.  2. 0 / 51.  2. 0
[mjpeg @ 0x8d22080] Estimating duration from bitrate, this may be inaccurate
Input #0, mjpeg, from 'test.mjpeg':
  Duration: N/A, bitrate: N/A
    Stream #0.0: Video: mjpeg, gray, 640x360 [PAR 1:1 DAR 16:9], 25 fps, 25 tbr, 1200k tbn, 25 tbc
[New Thread 0xf6812b70 (LWP 21670)]
[New Thread 0xf5e11b70 (LWP 21671)]
[ffsink @ 0xf5f00960] auto-inserting filter 'auto-inserted scaler 0' between the filter 'src' and the filter 'out'
[scale @ 0xf5f00d60] w:640 h:360 fmt:gray -> w:640 h:360 fmt:yuv420p flags:0x4
1306337048.96 A-V:  0.000 s:0.0 aq=    0KB vq=  200KB sq=    0B f=0/0
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xf6812b70 (LWP 21670)]
0x08496d5b in ff_put_pixels_clamped_mmx (block=0x8d347c0, pixels=0x0, line_size=0) at libavcodec/x86/dsputil_mmx.c:244
244             __asm__ volatile(
(gdb) bt
#0  0x08496d5b in ff_put_pixels_clamped_mmx (block=0x8d347c0, pixels=0x0, line_size=0) at libavcodec/x86/dsputil_mmx.c:244
#1  0x08302e22 in mjpeg_decode_scan (Al=0, Ah=0, nb_components=3, s=0x8d34280, mb_bitmask=<value optimized out>, reference=<value optimized out>) at libavcodec/mjpegdec.c:863
#2  ff_mjpeg_decode_sos (Al=0, Ah=0, nb_components=3, s=0x8d34280, mb_bitmask=<value optimized out>, reference=<value optimized out>) at libavcodec/mjpegdec.c:1046
#3  ff_mjpeg_decode_frame (Al=0, Ah=0, nb_components=3, s=0x8d34280, mb_bitmask=<value optimized out>, reference=<value optimized out>) at libavcodec/mjpegdec.c:1530
#4  0x0841ff61 in avcodec_decode_video2 (avctx=0x8d23520, picture=0xf5f00800, got_picture_ptr=0xf68120bc, avpkt=0xf6812078) at libavcodec/utils.c:743
#5  0x0804e3c0 in get_video_frame (pkt=0xf6812068, pts=<value optimized out>, frame=0xf5f00800, is=0xf7014020) at ffplay.c:1517
#6  input_request_frame (pkt=0xf6812068, pts=<value optimized out>, frame=0xf5f00800, is=0xf7014020) at ffplay.c:1673
#7  0x0805b56f in avfilter_request_frame (link=0xf5f010e0) at libavfilter/avfilter.c:405
#8  0x0805550e in get_filtered_video_frame (ctx=0xf5f00960, frame=0xf5f00480, picref_ptr=0xf6812318, tb=0xf6812300) at cmdutils.c:931
#9  0x0804f722 in video_thread (arg=0xf7014020) at ffplay.c:1815
#10 0xf7e03391 in ?? () from /usr/lib/libSDL-1.2.so.0
#11 0xf7e4f6eb in ?? () from /usr/lib/libSDL-1.2.so.0
#12 0xf7ddf6e5 in start_thread () from /lib/libpthread.so.0
#13 0xf7ddf600 in ?? () from /lib/libpthread.so.0
(gdb) disass $pc-32 $pc+32
Dump of assembler code from 0x8496d3b to 0x8496d7b:
0x08496d3b <ff_put_pixels_clamped_mmx+27>:      movq   0x18(%ecx),%mm3
0x08496d3f <ff_put_pixels_clamped_mmx+31>:      movq   0x20(%ecx),%mm4
0x08496d43 <ff_put_pixels_clamped_mmx+35>:      movq   0x28(%ecx),%mm5
0x08496d47 <ff_put_pixels_clamped_mmx+39>:      movq   0x30(%ecx),%mm6
0x08496d4b <ff_put_pixels_clamped_mmx+43>:      movq   0x38(%ecx),%mm7
0x08496d4f <ff_put_pixels_clamped_mmx+47>:      packuswb %mm1,%mm0
0x08496d52 <ff_put_pixels_clamped_mmx+50>:      packuswb %mm3,%mm2
0x08496d55 <ff_put_pixels_clamped_mmx+53>:      packuswb %mm5,%mm4
0x08496d58 <ff_put_pixels_clamped_mmx+56>:      packuswb %mm7,%mm6
0x08496d5b <ff_put_pixels_clamped_mmx+59>:      movq   %mm0,(%ebx)
0x08496d5e <ff_put_pixels_clamped_mmx+62>:      movq   %mm2,(%ebx,%eax,1)
0x08496d62 <ff_put_pixels_clamped_mmx+66>:      movq   %mm4,(%ebx,%eax,2)
0x08496d66 <ff_put_pixels_clamped_mmx+70>:      movq   %mm6,(%ebx,%edx,1)
0x08496d6a <ff_put_pixels_clamped_mmx+74>:      lea    (%ebx,%eax,4),%ebx
0x08496d6d <ff_put_pixels_clamped_mmx+77>:      add    $0x40,%ecx
0x08496d70 <ff_put_pixels_clamped_mmx+80>:      movq   (%ecx),%mm0
0x08496d73 <ff_put_pixels_clamped_mmx+83>:      movq   0x8(%ecx),%mm1
0x08496d77 <ff_put_pixels_clamped_mmx+87>:      movq   0x10(%ecx),%mm2
End of assembler dump.
(gdb) info all-registers
eax            0x0      0
ecx            0x8d347c0        148064192
edx            0x0      0
ebx            0x0      0
esp            0xf6811ea8       0xf6811ea8
ebp            0x2      0x2
esi            0x2      2
edi            0x0      0
eip            0x8496d5b        0x8496d5b <ff_put_pixels_clamped_mmx+59>
eflags         0x210286 [ PF SF IF RF ID ]
cs             0x23     35
ss             0x2b     43
ds             0x2b     43
es             0x2b     43
fs             0x0      0
gs             0x63     99
st0            -nan(0x8080808080808080) (raw 0xffff8080808080808080)
st1            -nan(0x80008000800080)   (raw 0xffff0080008000800080)
st2            -nan(0x8080808080808080) (raw 0xffff8080808080808080)
st3            -nan(0x80008000800080)   (raw 0xffff0080008000800080)
st4            -nan(0x8080808080808080) (raw 0xffff8080808080808080)
st5            -nan(0x80008000800080)   (raw 0xffff0080008000800080)
st6            -nan(0x8080808080808080) (raw 0xffff8080808080808080)
st7            -nan(0x80008000800080)   (raw 0xffff0080008000800080)
fctrl          0x37f    895
fstat          0x20     32
ftag           0xaaaa   43690
fiseg          0x0      0
fioff          0x804fbed        134544365
foseg          0x0      0
fooff          0xf70e0cac       -150074196
fop            0x59c    1436
xmm0           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0},
  uint128 = 0x00000000000000000000000000000000}
xmm1           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0},
  uint128 = 0x00000000000000000000000000000000}
xmm2           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0},
  uint128 = 0x00000000000000000000000000000000}
xmm3           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0},
  uint128 = 0x00000000000000000000000000000000}
xmm4           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0},
  uint128 = 0x00000000000000000000000000000000}
xmm5           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0},
  uint128 = 0x00000000000000000000000000000000}
xmm6           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0},
  uint128 = 0x00000000000000000000000000000000}
xmm7           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0},
  uint128 = 0x00000000000000000000000000000000}
mxcsr          0x1f80   [ IM DM ZM OM UM PM ]
mm0            {uint64 = 0x8080808080808080, v2_int32 = {0x80808080, 0x80808080}, v4_int16 = {0x8080, 0x8080, 0x8080, 0x8080}, v8_int8 = {0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80}}
mm1            {uint64 = 0x80008000800080, v2_int32 = {0x800080, 0x800080}, v4_int16 = {0x80, 0x80, 0x80, 0x80}, v8_int8 = {0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0}}
mm2            {uint64 = 0x8080808080808080, v2_int32 = {0x80808080, 0x80808080}, v4_int16 = {0x8080, 0x8080, 0x8080, 0x8080}, v8_int8 = {0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80}}
mm3            {uint64 = 0x80008000800080, v2_int32 = {0x800080, 0x800080}, v4_int16 = {0x80, 0x80, 0x80, 0x80}, v8_int8 = {0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0}}
mm4            {uint64 = 0x8080808080808080, v2_int32 = {0x80808080, 0x80808080}, v4_int16 = {0x8080, 0x8080, 0x8080, 0x8080}, v8_int8 = {0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80}}
mm5            {uint64 = 0x80008000800080, v2_int32 = {0x800080, 0x800080}, v4_int16 = {0x80, 0x80, 0x80, 0x80}, v8_int8 = {0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0}}
mm6            {uint64 = 0x8080808080808080, v2_int32 = {0x80808080, 0x80808080}, v4_int16 = {0x8080, 0x8080, 0x8080, 0x8080}, v8_int8 = {0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80}}
mm7            {uint64 = 0x80008000800080, v2_int32 = {0x800080, 0x800080}, v4_int16 = {0x80, 0x80, 0x80, 0x80}, v8_int8 = {0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0}}

Attachments (1)

test.mjpeg (1.0 MB ) - added by Carl Eugen Hoyos 14 years ago.

Download all attachments as: .zip

Change History (4)

by Carl Eugen Hoyos, 14 years ago

Attachment: test.mjpeg added

comment:1 by Carl Eugen Hoyos, 13 years ago

Keywords: mjpeg added

comment:2 by Carl Eugen Hoyos, 13 years ago

Priority: normalwish
Status: newopen
Summary: ffplay crashes on mjpeg fileffplay fails to play file with changing pixel format
Type: defectenhancement

The crash has been fixed, but playback is not possible yet.

$ ffplay test.mjpeg -autoexit
ffplay version N-35239-ge99c4bb, Copyright (c) 2003-2011 the FFmpeg developers
  built on Nov 27 2011 19:28:12 with gcc 4.5.3
  configuration: --cc='/usr/local/gcc-4.5.3/bin/gcc -m32'
  libavutil    51. 29. 1 / 51. 29. 1
  libavcodec   53. 38. 1 / 53. 38. 1
  libavformat  53. 22. 0 / 53. 22. 0
  libavdevice  53.  4. 0 / 53.  4. 0
  libavfilter   2. 50. 0 /  2. 50. 0
  libswscale    2.  1. 0 /  2.  1. 0
[mjpeg @ 0x8e09340] Estimating duration from bitrate, this may be inaccurate
Input #0, mjpeg, from 'test.mjpeg':
  Duration: N/A, bitrate: N/A
    Stream #0:0: Video: mjpeg, gray, 640x360 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 1200k tbn, 25 tbc
[buffersink @ 0xf5500860] auto-inserting filter 'auto-inserted scale 0' between the filter 'src' and the filter 'out'
[scale @ 0xf5500d20] w:640 h:360 fmt:gray -> w:640 h:360 fmt:yuv420p flags:0x4
[mjpeg @ 0x8e09840] Pixel format mismatches 12 8
[mjpeg @ 0x8e09840] get_buffer() failed
[mjpeg @ 0x8e09840] Pixel format mismatches 12 8
[mjpeg @ 0x8e09840] get_buffer() failed

...

[mjpeg @ 0x8e09840] Pixel format mismatches 12 8
[mjpeg @ 0x8e09840] get_buffer() failed
   0.18 A-V:  0.000 fd=   0 aq=    0KB vq=    0KB sq=    0B f=0/0

comment:3 by Carl Eugen Hoyos, 12 years ago

Component: undeterminedFFplay
Resolution: fixed
Status: openclosed

Fixed by Marton Balint.

Note: See TracTickets for help on using tickets.