Opened 5 years ago

Closed 3 years ago

#839 closed enhancement (fixed)

grayscale support in snow

Reported by: ami_stuff Owned by:
Priority: wish Component: avcodec
Version: git-master Keywords: snow gray
Cc: Blocked By:
Blocking: Reproduced by developer: yes
Analyzed by developer: no

Description

https://ffmpeg.org/trac/ffmpeg/attachment/ticket/833/gray.png

(gdb) r -i gray.png -vcodec snow -strict -2 out.avi
Starting program: F:\MinGW\msys\1.0\ffmpeg-HEAD-834f80d/ffmpeg_g.exe -i gray.png
 -vcodec snow -strict -2 out.avi
[New Thread 3404.0xf18]
ffmpeg version 0.9.0.git-834f80d, Copyright (c) 2000-2011 the FFmpeg developers
  built on Dec 22 2011 14:07:40 with gcc 4.5.2
  configuration: --disable-ffplay --disable-ffserver --disable-asm --disable-yas
m --disable-shared --enable-static
  libavutil      51. 32.100 / 51. 32.100
  libavcodec     53. 47.100 / 53. 47.100
  libavformat    53. 28.100 / 53. 28.100
  libavdevice    53.  4.100 / 53.  4.100
  libavfilter     2. 53.  0 /  2. 53.  0
  libswscale      2.  1.100 /  2.  1.100
  libswresample   0.  5.100 /  0.  0.100
Input #0, image2, from 'gray.png':
  Duration: 00:00:00.04, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: png, gray, 1024x768, 25 tbr, 25 tbn, 25 tbc
[buffer @ 03d61640] w:1024 h:768 pixfmt:gray tb:1/1000000 sar:0/1 sws_param:
Output #0, avi, to 'out.avi':
  Metadata:
    ISFT            : Lavf53.28.100
    Stream #0:0: Video: snow (SNOW / 0x574F4E53), gray, 1024x768, q=2-31, 200 kb
/s, 25 tbn, 25 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (png -> snow)
Press [q] to stop, [?] for help

Program received signal SIGSEGV, Segmentation fault.
0x0080e15f in encode_frame (avctx=0x3d5f8b8, buf=0x4a10020 "",
    buf_size=5515024, data=0x22daf0) at libavcodec/snowenc.c:1619
1619                memcpy(&s->input_picture.data[i][y * s->input_picture.linesi
ze[i]],
(gdb) bt
#0  0x0080e15f in encode_frame (avctx=0x3d5f8b8, buf=0x4a10020 "",
    buf_size=5515024, data=0x22daf0) at libavcodec/snowenc.c:1619
#1  0x00509101 in avcodec_encode_video (avctx=0x3d5f8b8, buf=0x4a10020 "",
    buf_size=5515024, pict=0x22daf0) at libavcodec/utils.c:881
#2  0x00404f6e in do_video_out (s=0x3d5f3b0, ost=0x3d5fcd0,
    in_picture=0x3d62220, frame_size=0x22de9c, quality=0,
    ist=<value optimized out>) at ffmpeg.c:1349
#3  0x004068c5 in transcode_video (ist=0x3d611d0, ost_table=0x3d5fcd0,
    nb_ostreams=1, pkt=0x22fbb8) at ffmpeg.c:1955
#4  output_packet (ist=0x3d611d0, ost_table=0x3d5fcd0, nb_ostreams=1,
    pkt=0x22fbb8) at ffmpeg.c:2046
#5  0x0040a63e in transcode (output_files=<value optimized out>,
    nb_output_files=0, input_files=0x0, nb_input_files=4256952)
    at ffmpeg.c:2804
#6  0x0022ff48 in ?? ()
#7  0x00000000 in ?? ()
(gdb) disass $pc-32,$pc+32
Dump of assembler code from 0x80e13f to 0x80e17f:
   0x0080e13f <encode_frame+187>:       add    %al,(%eax)
   0x0080e141 <encode_frame+189>:       add    0x1040(%esi,%eax,4),%edx
   0x0080e148 <encode_frame+196>:       mov    %ebx,%esi
   0x0080e14a <encode_frame+198>:       mov    0xa0(%esp),%edi
   0x0080e151 <encode_frame+205>:       imul   0x10(%edi,%eax,4),%esi
   0x0080e156 <encode_frame+210>:       add    (%edi,%eax,4),%esi
   0x0080e159 <encode_frame+213>:       mov    %edx,%edi
   0x0080e15b <encode_frame+215>:       mov    0x50(%esp),%ecx
=> 0x0080e15f <encode_frame+219>:       rep movsb %ds:(%esi),%es:(%edi)
   0x0080e161 <encode_frame+221>:       inc    %ebx
   0x0080e162 <encode_frame+222>:       cmp    0x54(%esp),%ebx
   0x0080e166 <encode_frame+226>:       jl     0x80e133 <encode_frame+175>
   0x0080e168 <encode_frame+228>:       inc    %eax
   0x0080e169 <encode_frame+229>:       cmp    $0x3,%eax
   0x0080e16c <encode_frame+232>:       jne    0x80e116 <encode_frame+146>
   0x0080e16e <encode_frame+234>:       mov    0x6c(%esp),%edi
   0x0080e172 <encode_frame+238>:       add    $0xf20,%edi
   0x0080e178 <encode_frame+244>:       mov    $0x48,%ecx
   0x0080e17d <encode_frame+249>:       mov    0xa0(%esp),%esi
End of assembler dump.
(gdb) info all-registers
eax            0x1      1
ecx            0x200    512
edx            0x0      0
ebx            0x0      0
esp            0x22c860 0x22c860
ebp            0x400    0x400
esi            0x0      0
edi            0x0      0
eip            0x80e15f 0x80e15f <encode_frame+219>
eflags         0x10246  [ PF ZF IF RF ]
cs             0x1b     27
ss             0x23     35
ds             0x23     35
es             0x23     35
fs             0x3b     59
gs             0x0      0
st0            0        (raw 0x00000000000000000000)
st1            0        (raw 0x00000000000000000000)
st2            0        (raw 0x00000000000000000000)
st3            -2147483648      (raw 0xc01e8000000000000000)
st4            -1.1000000000000001      (raw 0xbfff8ccccccccccccccd)
st5            0        (raw 0x00000000000000000000)
st6            0.59999999999999998      (raw 0x3ffe999999999999999a)
st7            0        (raw 0x00000000000000000000)
fctrl          0xffff037f       -64641
fstat          0xffff0120       -65248
ftag           0xffffffff       -1
fiseg          0x0      0
fioff          0x0      0
foseg          0xffff0000       -65536
fooff          0x0      0
fop            0x0      0
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 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0,
    0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}
mm1            {uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0,
    0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}
mm2            {uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0,
    0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}
mm3            {uint64 = 0x8000000000000000, v2_int32 = {0x0, 0x80000000},
  v4_int16 = {0x0, 0x0, 0x0, 0x8000}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0,
    0x0, 0x0, 0x80}}
mm4            {uint64 = 0x8ccccccccccccccd, v2_int32 = {0xcccccccd,
    0x8ccccccc}, v4_int16 = {0xcccd, 0xcccc, 0xcccc, 0x8ccc}, v8_int8 = {
    0xcd, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x8c}}
mm5            {uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0,
    0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}
mm6            {uint64 = 0x999999999999999a, v2_int32 = {0x9999999a,
    0x99999999}, v4_int16 = {0x999a, 0x9999, 0x9999, 0x9999}, v8_int8 = {
    0x9a, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99}}
mm7            {uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0,
    0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}

Change History (6)

comment:1 Changed 5 years ago by cehoyos

  • Component changed from undetermined to avcodec
  • Keywords snow gray added
  • Priority changed from normal to important
  • Reproduced by developer set
  • Status changed from new to open
  • Version changed from unspecified to git-master

Also reproducible with
$ ./ffmpeg -i tests/lena.pnm -pix_fmt gray -vcodec snow -vstrict experimental out.avi

comment:2 Changed 5 years ago by dbuitenh

I have sent a possible fix to the ML.

comment:3 Changed 5 years ago by michael

  • Priority changed from important to normal
  • Type changed from defect to enhancement

Crash fixed locally, which makes gray support a feature req

comment:4 Changed 4 years ago by michael

  • Summary changed from crash with png (gray) to snow (gray) conversion to grayscale support in snow

comment:5 Changed 4 years ago by richardpl

  • Priority changed from normal to wish

comment:6 Changed 3 years ago by michael

  • Resolution set to fixed
  • Status changed from open to closed
Note: See TracTickets for help on using tickets.