Opened 14 years ago

Closed 14 years ago

Last modified 13 years ago

#59 closed defect (fixed)

Kega Game Video codec regression (most likely because of libavfilter)

Reported by: ami_stuff Owned by:
Priority: important Component: avfilter
Version: git Keywords:
Cc: Blocked By:
Blocking: Reproduced by developer: yes
Analyzed by developer: no

Description

Kega Game Video codec regression, works fine with

C:\>ffmpeg -vlowres 1 -i C:\kgv1.avi out3.avi

I suppose this is really libavfilter regression.

http://samples.mplayerhq.hu/V-codecs/kgv1/kgv1.avi

C:\>ffmpeg -i C:\kgv1.avi out3.avi
FFmpeg version git-N-29043-gdf149f6, Copyright (c) 2000-2011 the FFmpeg develope
rs

built on Apr 12 2011 00:01:52 with gcc 4.5.2
configuration: --arch=x86 --cross-prefix=i686-pc-mingw32- --target-os=mingw32

--prefix=/ffmpeg/builds/git-N-29043-gdf149f6-static --enable-memalign-hack --dis
able-shared --enable-static --enable-w32threads --disable-debug --enable-gpl --e
nable-version3 --enable-runtime-cpudetect --enable-zlib --enable-bzlib --enable-
avisynth --enable-postproc --enable-libmp3lame --enable-libx264 --enable-libvorb
is --enable-libtheora --enable-libspeex --enable-libopencore-amrnb --enable-libo
pencore-amrwb --enable-libxvid --enable-libgsm --enable-libvpx --disable-decoder
=libvpx --enable-librtmp --enable-libopenjpeg --enable-frei0r --enable-libxavs -
-cc='ccache i686-pc-mingw32-gcc'

libavutil 50. 40. 1 / 50. 40. 1
libavcodec 52.117. 1 / 52.117. 1
libavformat 52.106. 0 / 52.106. 0
libavdevice 52. 4. 0 / 52. 4. 0
libavfilter 1. 78. 0 / 1. 78. 0
libswscale 0. 13. 0 / 0. 13. 0
libpostproc 51. 2. 0 / 51. 2. 0

Input #0, avi, from 'C:\kgv1.avi':

Duration: 00:00:05.21, start: 0.000000, bitrate: 1633 kb/s

Stream #0.0: Audio: pcm_s16le, 44100 Hz, 2 channels, s16, 1411 kb/s
Stream #0.1: Video: kgv1, rgb555le, 640x480, 60 tbr, 60 tbn, 60 tbc

Incompatible pixel format 'rgb555le' for codec 'mpeg4', auto-selecting format 'y
uv420p'
[buffer @ 01d01290] w:640 h:480 pixfmt:rgb555le
[ffsink @ 01d014b0] auto-inserting filter 'auto-inserted scaler 0' between the f
ilter 'src' and the filter 'out'
[scale @ 01d01750] w:640 h:480 fmt:rgb555le -> w:640 h:480 fmt:yuv420p flags:0x4

[mp2 @ 0228da60] The requested thread algorithm is not supported with this threa
d library.
Output #0, avi, to 'out3.avi':

Metadata:

ISFT : Lavf52.106.0
Stream #0.0: Video: mpeg4, yuv420p, 640x480, q=2-31, 200 kb/s, 60 tbn, 60 tb

c

Stream #0.1: Audio: mp2, 44100 Hz, 2 channels, s16, 64 kb/s

Stream mapping:

Stream #0.1 -> #0.0
Stream #0.0 -> #0.1

Press [q] to stop encoding
[buffer @ 01d01290] Changing filter graph input to accept 320x240 46 (46 0)
[scale @ 01d01750] w:320 h:240 fmt:rgb555le -> w:320 h:240 fmt:yuv420p flags:0x4

Input Stream #0.1 frame size changed to 320x240, rgb555le
Input Stream #0.1 frame size changed to 320x240, rgb555le
Input Stream #0.1 frame size changed to 320x240, rgb555le
Input Stream #0.1 frame size changed to 320x240, rgb555le

Change History (3)

comment:1 by Carl Eugen Hoyos, 14 years ago

Component: undeterminedavfilter
Priority: normalimportant
Reproduced by developer: set
Status: newopen
Version: unspecifiedgit

Plays fine with ffplay and --disable-avfilter (fails with ffmpeg and --disable-avfilter), crashes with --enable-avfilter.

(gdb) r -i kgv1.avi -f null -

FFmpeg version git-N-29061-g5c00687, Copyright (c) 2000-2011 the FFmpeg developers
  built on Apr 12 2011 18:07:12 with gcc 4.5.2
  configuration: --cc='/usr/local/gcc-4.5.2/bin/gcc -m32' --disable-asm
  libavutil    50. 40. 1 / 50. 40. 1
  libavcodec   52.119. 0 / 52.119. 0
  libavformat  52.106. 0 / 52.106. 0
  libavdevice  52.  4. 0 / 52.  4. 0
  libavfilter   1. 78. 0 /  1. 78. 0
  libswscale    0. 13. 0 /  0. 13. 0
Input #0, avi, from 'kgv1.avi':
  Duration: 00:00:05.21, start: 0.000000, bitrate: 1633 kb/s
    Stream #0.0: Audio: pcm_s16le, 44100 Hz, 2 channels, s16, 1411 kb/s
    Stream #0.1: Video: kgv1, rgb555le, 640x480, 60 tbr, 60 tbn, 60 tbc
[buffer @ 0x8bd6bd0] w:640 h:480 pixfmt:rgb555le
Output #0, null, to 'pipe:':
  Metadata:
    encoder         : Lavf52.106.0
    Stream #0.0: Video: rawvideo, rgb555le, 640x480, q=2-31, 200 kb/s, 90k tbn, 60 tbc
    Stream #0.1: Audio: pcm_s16le, 44100 Hz, 2 channels, s16, 1411 kb/s
Stream mapping:
  Stream #0.1 -> #0.0
  Stream #0.0 -> #0.1
Press [q] to stop encoding

Program received signal SIGSEGV, Segmentation fault.
0x0806b9ad in av_vsrc_buffer_add_frame2 (buffer_filter=0x8bd6bd0, frame=0xffffbe60, pts=0, pixel_aspect=..., width=320, height=240, pix_fmt=PIX_FMT_RGB555LE, sws_param=0x852d14b "0:0") at libavfilter/vsrc_buffer.c:61
61                     width,height,pix_fmt, c->pix_fmt, scale->outputs[0]->format);
gdb) bt
#0  0x0806b9ad in av_vsrc_buffer_add_frame2 (buffer_filter=0x8bd6bd0, frame=0xffffbe60, pts=0, pixel_aspect=..., width=320, height=240, pix_fmt=PIX_FMT_RGB555LE, sws_param=0x852d14b "0:0") at libavfilter/vsrc_buffer.c:61
#1  0x0804f1ef in output_packet (ist=0x8bd6b00, ist_index=1, ost_table=0x8bd6b60, nb_ostreams=2, pkt=0xffffce10) at ffmpeg.c:1638
#2  0x08053405 in transcode (nb_output_files=1, nb_input_files=1, stream_maps=0x0, nb_stream_maps=0, input_files=0x866e8c0, output_files=0x866e720) at ffmpeg.c:2709
#3  0x08058059 in main (argc=6, argv=0xffffd004) at ffmpeg.c:4459
(gdb) disass $pc-32 $pc+32
Dump of assembler code from 0x806b98d to 0x806b9cd:
0x0806b98d <av_vsrc_buffer_add_frame2+61>:      add    %eax,(%eax)
0x0806b98f <av_vsrc_buffer_add_frame2+63>:      add    %cl,0x1008b(%ebx)
0x0806b995 <av_vsrc_buffer_add_frame2+69>:      add    %cl,-0x749fdbac(%ebx)
0x0806b99b <av_vsrc_buffer_add_frame2+75>:      inc    %edx
0x0806b99c <av_vsrc_buffer_add_frame2+76>:      and    %cl,-0x7487dbac(%ebx)
0x0806b9a2 <av_vsrc_buffer_add_frame2+82>:      add    %cl,0x44890840(%ebx)
0x0806b9a8 <av_vsrc_buffer_add_frame2+88>:      and    $0x3c,%al
0x0806b9aa <av_vsrc_buffer_add_frame2+90>:      mov    0x20(%eax),%eax
0x0806b9ad <av_vsrc_buffer_add_frame2+93>:      mov    (%eax),%eax
0x0806b9af <av_vsrc_buffer_add_frame2+95>:      mov    0x38(%eax),%eax
0x0806b9b2 <av_vsrc_buffer_add_frame2+98>:      mov    %ecx,0x18(%esp)
0x0806b9b6 <av_vsrc_buffer_add_frame2+102>:     mov    0x80(%esp),%ecx
0x0806b9bd <av_vsrc_buffer_add_frame2+109>:     mov    %edx,0xc(%esp)
0x0806b9c1 <av_vsrc_buffer_add_frame2+113>:     movl   $0x8531cec,0x8(%esp)
0x0806b9c9 <av_vsrc_buffer_add_frame2+121>:     mov    %eax,0x1c(%esp)
End of assembler dump.
(gdb) info register
eax            0x0      0
ecx            0x2e     46
edx            0x140    320
ebx            0x8bd6c60        146631776
esp            0xffffbbe0       0xffffbbe0
ebp            0xffffbe60       0xffffbe60
esi            0xffffbe60       -16800
edi            0x0      0
eip            0x806b9ad        0x806b9ad <av_vsrc_buffer_add_frame2+93>
eflags         0x10202  [ IF RF ]
cs             0x23     35
ss             0x2b     43
ds             0x2b     43
es             0x2b     43
fs             0x0      0
gs             0x63     99

comment:2 by Michael Niedermayer, 14 years ago

Resolution: fixed
Status: openclosed

comment:3 by Michael Niedermayer, 13 years ago

ffplay supports reconfiguring the filterchain since a short while, and this seems to work

Version 0, edited 13 years ago by Michael Niedermayer (next)
Note: See TracTickets for help on using tickets.