[FFmpeg-soc] Segmentation Fault when using -vfilters "movie ...; overlay"
Brandon Mintern
bmintern at gmail.com
Fri Mar 26 01:15:27 CET 2010
I am trying to overlay a transparent PNG (using alpha blending) of size 800x600
on an 11-second wmv file of size 800x600. In doing so, I get a Segmentation
Fault immediately after the "Press [q] to stop encoding" message comes up.
I already filed a bug at https://roundup.ffmpeg.org/issue1841 but
cehoyos (the only responder thus far) said, "Imo, problems with a
patch from the soc repository should be reported to the ffmpeg-soc
mailing list."
I'll provide here all of the information that I have provided so far
in my bug report.
The command I executed:
ffmpeg -y -i intro-base.wmv -vfilters "movie=0:png:title-overlay.png [title];
[in][title] overlay=0:0:1 [out]" -vcodec wmv2 intro-title.wmv
I have tried it both with and without the "[out]", with no change. When I omit
all -vfilters stuff, the command works fine, so I'm quite sure the segfault is
happening as a result of the libavfilter operations.
My libavfilter info:
$ svn info libavfilter
Path: libavfilter
URL: svn://svn.ffmpeg.org/soc/libavfilter
Repository Root: svn://svn.ffmpeg.org/soc
Repository UUID: 66570020-b32e-0410-962d-e44e8f9afd43
Revision: 5717
Node Kind: directory
Schedule: normal
Last Changed Author: stefano
Last Changed Rev: 5717
Last Changed Date: 2010-03-24 19:25:00 -0400 (Wed, 24 Mar 2010)
To build ffmpeg with libavfilter, I followed this process:
http://ubuntuforums.org/showthread.php?t=1438052 (skip down to "Updating to
latest..." for a quick look at how I'm doing it). I wrote that guide yesterday;
it's quite possible I'm making a mistake in the build process.
My ffmpeg info:
$ ffmpeg -v 9 -loglevel 99 -i intro-base.wmv
FFmpeg version SVN-r22626, Copyright (c) 2000-2010 the FFmpeg developers
built on Mar 25 2010 02:46:11 with gcc 4.4.1
configuration: --enable-gpl --enable-version3 --enable-nonfree
--enable-postproc --enable-pthreads --enable-libfaac --enable-libfaad
--enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb
--enable-libx264 --enable-libxvid --enable-x11grab --enable-avfilter
--enable-avfilter-lavf --enable-debug
libavutil 50.12. 0 / 50.12. 0
libavcodec 52.59. 0 / 52.59. 0
libavformat 52.56. 1 / 52.56. 1
libavdevice 52. 2. 0 / 52. 2. 0
libavfilter 1.18. 0 / 1.18. 0
libswscale 0.10. 0 / 0.10. 0
libpostproc 51. 2. 0 / 51. 2. 0
[NULL @ 0x90d93d0]Probed with size=2048 and score=100
[asf @ 0x90d93d0]Unsupported value type 1 in tag ASFLeakyBucketPairs.
[wmv3 @ 0x90e7eb0]Header: 47F10801
[wmv3 @ 0x90e7eb0]Profile 1:
frmrtq_postproc=3, bitrtq_postproc=31
LoopFilter=0, MultiRes=0, FastUVMC=0, Extended MV=0
Rangered=0, VSTransform=1, Overlap=0, SyncMarker=0
DQuant=0, Quantizer mode=0, Max B frames=0
[wmv3 @ 0x90e7eb0]Extra data: 8 bits left, value: 0
[asf @ 0x90d93d0]All info found
Seems stream 1 codec frame rate differs from container frame rate: 1000.00
(1000/1) -> 15.00 (15/1)
Input #0, asf, from 'intro-base.wmv':
Metadata:
title : GS-IntroV2
author :
copyright :
comment :
WMFSDKVersion : 11.0.5721.5145
WMFSDKNeeded : 0.0.0.0000
IsVBR : 1
VBR Peak : 240
Buffer Average : 716
Duration: 00:00:11.33, start: 5.000000, bitrate: 409 kb/s
Stream #0.0(eng), 8, 1/1000: Audio: wmav2, 44100 Hz, 1 channels,
s16, 48 kb/s
Stream #0.1(eng), 21, 1/1000: Video: wmv3, yuv420p, 800x600, 1/1000, 343
kb/s, 15 tbr, 1k tbn, 1k tbc
The program as run under gdb
$ gdb --args ~/ffmpeg-x264-avfilter/libavfilter/ffmpeg/ffmpeg_g -y -i
intro-base.wmv
-vfilters "movie=0:png:title-overlay.png [title]; [in][title] overlay=0:0:1"
-vcodec wmv2 intro-title.wmv
GNU gdb (GDB) 7.0-ubuntu
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from
/home/brandon/ffmpeg-x264-avfilter/libavfilter/ffmpeg/ffmpeg_g...done.
(gdb) r
Starting program:
/home/brandon/ffmpeg-x264-avfilter/libavfilter/ffmpeg/ffmpeg_g -y -i
intro-base.wmv -vfilters movie=0:png:title-overlay.png\ \[title\]\;\
\[in\]\[title\]\ overlay=0:0:1 -vcodec wmv2 intro-title.wmv
[Thread debugging using libthread_db enabled]
FFmpeg version SVN-r22626, Copyright (c) 2000-2010 the FFmpeg developers
built on Mar 25 2010 02:46:11 with gcc 4.4.1
configuration: --enable-gpl --enable-version3 --enable-nonfree
--enable-postproc --enable-pthreads --enable-libfaac --enable-libfaad
--enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb
--enable-libx264 --enable-libxvid --enable-x11grab --enable-avfilter
--enable-avfilter-lavf --enable-debug
libavutil 50.12. 0 / 50.12. 0
libavcodec 52.59. 0 / 52.59. 0
libavformat 52.56. 1 / 52.56. 1
libavdevice 52. 2. 0 / 52. 2. 0
libavfilter 1.18. 0 / 1.18. 0
libswscale 0.10. 0 / 0.10. 0
libpostproc 51. 2. 0 / 51. 2. 0
[wmv3 @ 0x8c94eb0]Extra data: 8 bits left, value: 0
Seems stream 1 codec frame rate differs from container frame rate: 1000.00
(1000/1) -> 15.00 (15/1)
Input #0, asf, from 'intro-base.wmv':
Metadata:
title : GS-IntroV2
author :
copyright :
comment :
WMFSDKVersion : 11.0.5721.5145
WMFSDKNeeded : 0.0.0.0000
IsVBR : 1
VBR Peak : 240
Buffer Average : 716
Duration: 00:00:11.33, start: 5.000000, bitrate: 409 kb/s
Stream #0.0(eng): Audio: wmav2, 44100 Hz, 1 channels, s16, 48 kb/s
Stream #0.1(eng): Video: wmv3, yuv420p, 800x600, 343 kb/s, 15 tbr, 1k tbn,
1k tbc
[overlay @ 0x8cc55c0]auto-inserting filter 'auto-inserted scaler 0' between the
filter 'Parsed filter 0' and the filter 'Parsed filter 1'
[scale @ 0x8cc5d10]w:800 h:600 fmt:yuva420p
[wmv3 @ 0x8c94eb0]Extra data: 8 bits left, value: 0
Output #0, asf, to 'intro-title.wmv':
Metadata:
WM/EncodingSettings: Lavf52.56.1
Stream #0.0(eng): Video: wmv2, yuv420p, 800x600, q=2-31, 200 kb/s, 1k tbn,
15 tbc
Stream #0.1(eng): Audio: libmp3lame, 44100 Hz, 1 channels, s16, 64 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.
0x08076ace in output_packet (ist=0x8ca3a10, ist_index=<value optimized out>,
ost_table=<value optimized out>, nb_ostreams=2, pkt=0xbfffe460)
at ffmpeg.c:1692
1692 ost->st->codec->sample_aspect_ratio =
ist->picref->pixel_aspect;
(gdb) bt
#0 0x08076ace in output_packet (ist=0x8ca3a40,
ist_index=<value optimized out>, ost_table=<value optimized out>,
nb_ostreams=2, pkt=0xbfffe460) at ffmpeg.c:1692
#1 0x0807ccf2 in av_encode (nb_output_files=<value optimized out>,
nb_input_files=<value optimized out>,
nb_stream_maps=<value optimized out>, stream_maps=<value optimized out>,
input_files=<value optimized out>, output_files=<value optimized out>)
at ffmpeg.c:2617
#2 0x0807d71b in main (argc=9, argv=0xbffff3a4) at ffmpeg.c:4375
(gdb) disass $pc-32 $pc+32
Dump of assembler code from 0x8076aae to 0x8076aee:
0x08076aae <output_packet+2350>: add %al,-0x7bf0fc08(%ebx)
0x08076ab4 <output_packet+2356>: nop
0x08076ab5 <output_packet+2357>: or %al,(%eax)
0x08076ab7 <output_packet+2359>: add %al,-0x7f7af040(%ebp)
0x08076abd <output_packet+2365>: or %al,(%eax)
0x08076abf <output_packet+2367>: add %cl,-0x4372afbb(%ebx)
0x08076ac5 <output_packet+2373>: and $0x80,%al
0x08076ac7 <output_packet+2375>: add (%eax),%al
0x08076ac9 <output_packet+2377>: add %cl,-0x7487db8c(%ebx)
0x08076acf <output_packet+2383>: push %eax
0x08076ad0 <output_packet+2384>: inc %eax
0x08076ad1 <output_packet+2385>: mov 0x3c(%eax),%eax
0x08076ad4 <output_packet+2388>: mov %edx,0x18c(%esi)
0x08076ada <output_packet+2394>: mov %eax,0x188(%esi)
0x08076ae0 <output_packet+2400>: mov %edi,(%esp)
0x08076ae3 <output_packet+2403>: lea 0x1b4(%esp),%edi
0x08076aea <output_packet+2410>: call 0x837b6a0 <avcodec_get_frame_defaults>
End of assembler dump.
(gdb) info all-registers
eax 0x0 0
ecx 0x1 1
edx 0x2 2
ebx 0x8ca3ae0 147471072
esp 0xbfffdde0 0xbfffdde0
ebp 0x8ca3a40 0x8ca3a40
esi 0x8c96500 147416320
edi 0xbfffe060 -1073749920
eip 0x8076ace 0x8076ace <output_packet+2382>
eflags 0x10246 [ PF ZF IF RF ]
cs 0x73 115
ss 0x7b 123
ds 0x7b 123
es 0x7b 123
fs 0x0 0
gs 0x33 51
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 0 (raw 0x00000000000000000000)
fctrl 0x37f 895
fstat 0x4020 16416
ftag 0xffff 65535
fiseg 0x73 115
fioff 0x8077eb4 134708916
foseg 0x7b 123
fooff 0x8c94d0c 147410188
fop 0x15e 350
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},
---Type <return> to continue, or q <return> to quit---
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}}
---Type <return> to continue, or q <return> to quit---
mm7 {uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0,
0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}
If there's anything else I can provide to help this along, I'd be happy to do
so. I can upload the 2 sample files somewhere if that will be of assistance.
More information about the FFmpeg-soc
mailing list