[FFmpeg-trac] #4832(avcodec:open): Freeze when scaling and encoding h264_qsv
FFmpeg
trac at avcodec.org
Sun Mar 6 22:10:40 CET 2016
#4832: Freeze when scaling and encoding h264_qsv
--------------------------------------+-----------------------------------
Reporter: babgvant | Owner: IvUs
Type: defect | Status: open
Priority: important | Component: avcodec
Version: git-master | Resolution:
Keywords: qsv deadlock | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
--------------------------------------+-----------------------------------
Comment (by Zeranoe):
Reproduced using db44b599805fdd96940cf2e5a336f872648bbda1 and the unsharp
filter.
Version 1.17 of the MFX library was used, and the latest display drivers.
Command was
{{{
ffmpeg -i in.mp4 -c:v h264_qsv -vf
unsharp=lx=7:ly=7:la=0.56:cx=7:cy=7:ca=0.28 -b:v 2M -preset:v veryfast -y
out.mp4
}}}
Uncut console output
{{{
ffmpeg version N-78940-gdb44b59 Copyright (c) 2000-2016 the FFmpeg
developers
built with gcc 5.3.0 (GCC)
configuration: --disable-static --enable-shared --enable-version3
--disable-w32threads --enable-libmfx --enable-opencl --disable-stripping
libavutil 55. 19.100 / 55. 19.100
libavcodec 57. 27.101 / 57. 27.101
libavformat 57. 28.100 / 57. 28.100
libavdevice 57. 0.101 / 57. 0.101
libavfilter 6. 39.100 / 6. 39.100
libswscale 4. 0.100 / 4. 0.100
libswresample 2. 0.101 / 2. 0.101
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'in.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf55.19.104
Duration: 00:00:08.33, start: 0.021333, bitrate: 50268 kb/s
Stream #0:0(eng): Video: h264 (High), 4 reference frames (avc1 /
0x31637661), yuv420p, 3840x2160 [SAR 1:1 DAR 16:9], 50262 kb/s, 30 fps, 30
tbr, 15360 tbn, 60 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz,
stereo, fltp, 2 kb/s (default)
Metadata:
handler_name : SoundHandler
[graph 0 input from stream 0:0 @ 00000201b35cc400] w:3840 h:2160
pixfmt:yuv420p tb:1/15360 fr:30/1 sar:1/1 sws_param:flags=2
[auto-inserted scaler 0 @ 00000201b35cd4a0] w:iw h:ih flags:'bicubic'
interl:0
[format @ 00000201b35cc880] auto-inserting filter 'auto-inserted scaler 0'
between the filter 'Parsed_unsharp_0' and the filter 'format'
[Parsed_unsharp_0 @ 00000201b2ef6160] effect:sharpen type:luma msize_x:7
msize_y:7 amount:0.56
[Parsed_unsharp_0 @ 00000201b2ef6160] effect:sharpen type:chroma msize_x:7
msize_y:7 amount:0.28
[auto-inserted scaler 0 @ 00000201b35cd4a0] w:3840 h:2160 fmt:yuv420p
sar:1/1 -> w:3840 h:2160 fmt:nv12 sar:1/1 flags:0x4
[graph 1 input from stream 0:1 @ 00000201b2fe74a0] tb:1/48000
samplefmt:fltp samplerate:48000 chlayout:0x3
[h264_qsv @ 00000201b3480740] Initialized an internal MFX session using
hardware accelerated implementation
[h264_qsv @ 00000201b3480740] Using the VBR with lookahead (LA)
ratecontrol method
[h264_qsv @ 00000201b3480740] profile: high; level: 51
[h264_qsv @ 00000201b3480740] GopPicSize: 250; GopRefDist: 4; GopOptFlag:
closed ; IdrInterval: 0
[h264_qsv @ 00000201b3480740] TargetUsage: 7; RateControlMethod: LA
[h264_qsv @ 00000201b3480740] TargetKbps: 4265; LookAheadDepth: 40
[h264_qsv @ 00000201b3480740] NumSlice: 1; NumRefFrame: 2
[h264_qsv @ 00000201b3480740] RateDistortionOpt: OFF
[h264_qsv @ 00000201b3480740] RecoveryPointSEI: OFF IntRefType: 0;
IntRefCycleSize: 0; IntRefQPDelta: 0
[h264_qsv @ 00000201b3480740] MaxFrameSize: 6220800; MaxSliceSize: 0;
[h264_qsv @ 00000201b3480740] BitrateLimit: ON; MBBRC: OFF; ExtBRC:
unknown
[h264_qsv @ 00000201b3480740] Trellis: auto
[h264_qsv @ 00000201b3480740] RepeatPPS: ON; NumMbPerSlice: 0;
LookAheadDS: unknown
[h264_qsv @ 00000201b3480740] AdaptiveI: unknown; AdaptiveB: unknown;
BRefType: off
[h264_qsv @ 00000201b3480740] MinQPI: 0; MaxQPI: 0; MinQPP: 0; MaxQPP: 0;
MinQPB: 0; MaxQPB: 0
[h264_qsv @ 00000201b3480740] Entropy coding: CABAC; MaxDecFrameBuffering:
2
[h264_qsv @ 00000201b3480740] NalHrdConformance: OFF; SingleSeiNalUnit:
ON; VuiVclHrdParameters: OFF VuiNalHrdParameters: OFF
Output #0, mp4, to 'out.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf57.28.100
Stream #0:0(eng): Video: h264 (h264_qsv) ([33][0][0][0] / 0x0021),
nv12, 3840x2160 [SAR 1:1 DAR 16:9], q=2-31, 2000 kb/s, 30 fps, 15360 tbn,
30 tbc (default)
Metadata:
handler_name : VideoHandler
encoder : Lavc57.27.101 h264_qsv
Side data:
cpb: bitrate max/min/avg: 0/0/2000000 buffer size: 0 vbv_delay: -1
Stream #0:1(eng): Audio: aac (LC) ([64][0][0][0] / 0x0040), 48000 Hz,
stereo, fltp, 128 kb/s (default)
Metadata:
handler_name : SoundHandler
encoder : Lavc57.27.101 aac
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> h264 (h264_qsv))
Stream #0:1 -> #0:1 (aac (native) -> aac (native))
Press [q] to stop, [?] for help
*** 1 dup!
frame= 47 fps=8.4 q=0.0 size= 0kB time=00:00:01.64 bitrate=
0.2kbits/s dup=1 drop=0 speed=0.295x
}}}
Backtrace
{{{
#0 0x00007ff8e04df8ce in libmfxhw64!MFXVideoVPP_GetVPPStat () from
/cygdrive/c/Program Files/Intel/Media SDK/libmfxhw64.dll
#1 0x00007ff8e04e1df2 in libmfxhw64!MFXVideoVPP_GetVPPStat () from
/cygdrive/c/Program Files/Intel/Media SDK/libmfxhw64.dll
#2 0x00007ff8e04df7a7 in libmfxhw64!MFXVideoVPP_GetVPPStat () from
/cygdrive/c/Program Files/Intel/Media SDK/libmfxhw64.dll
#3 0x00007ff8e01c5344 in libmfxhw64!MFXVideoVPP_GetVPPStat () from
/cygdrive/c/Program Files/Intel/Media SDK/libmfxhw64.dll
#4 0x00007ff8e0192669 in libmfxhw64!MFXVideoENC_Reset () from
/cygdrive/c/Program Files/Intel/Media SDK/libmfxhw64.dll
#5 0x00007ff8e01944e0 in libmfxhw64!MFXVideoENCODE_EncodeFrameAsync ()
from /cygdrive/c/Program Files/Intel/Media SDK/libmfxhw64.dll
#6 0x00007ff8d85b4cde in MFXVideoENCODE_EncodeFrameAsync
(session=0x201b14e75e8, ctrl=0x201eec02770, surface=0x201eec027a8,
bs=0x201eeced080, syncp=0x5a8dbff010) at
/home/kyle/software/ffmpeg/pkgs/libmfx/src/libmfx-1.17/include/mfx/mfx_exposed_functions_list.h:68
#7 0x00007ff8d815cfcd in encode_frame (frame=0x201b359aa60,
q=0x201b3480be8, avctx=0x201b3480740) at src/libavcodec/qsvenc.c:965
#8 ff_qsv_encode (avctx=0x201b3480740, q=0x201b3480be8, pkt=0x5a8dbff360,
frame=0x201b359aa60, got_packet=0x5a8dbff21c) at
src/libavcodec/qsvenc.c:1006
#9 0x00007ff8d815d61f in qsv_enc_frame (avctx=<optimized out>,
pkt=<optimized out>, frame=<optimized out>, got_packet=<optimized out>) at
src/libavcodec/qsvenc_h264.c:120
#10 0x00007ff8d824f263 in avcodec_encode_video2 (avctx=0x201b3480740,
avpkt=0x5a8dbff360, frame=0x201b359aa60, got_packet_ptr=0x5a8dbff21c) at
src/libavcodec/utils.c:1927
}}}
disass $pc-32,$pc+32
{{{
Dump of assembler code from 0x7ff8e04df8ae to 0x7ff8e04df8ee:
0x00007ff8e04df8ae <libmfxhw64!MFXVideoVPP_GetVPPStat+3437150>:
add %dh,-0x75(%rsi,%rdx,1)
0x00007ff8e04df8b2 <libmfxhw64!MFXVideoVPP_GetVPPStat+3437154>: or
$0x0,%al
0x00007ff8e04df8b5 <libmfxhw64!MFXVideoVPP_GetVPPStat+3437157>:
add %al,(%rax)
0x00007ff8e04df8b7 <libmfxhw64!MFXVideoVPP_GetVPPStat+3437159>:
test %eax,0x55dc7f(%rip) # 0x7ff8e0a3d53c
0x00007ff8e04df8bd <libmfxhw64!MFXVideoVPP_GetVPPStat+3437165>:
jne 0x7ff8e04df8c7 <libmfxhw64!MFXVideoVPP_GetVPPStat+3437175>
0x00007ff8e04df8bf <libmfxhw64!MFXVideoVPP_GetVPPStat+3437167>:
callq 0x7ff8e04e6380 <libmfxhw64!MFXVideoVPP_GetVPPStat+3464496>
0x00007ff8e04df8c4 <libmfxhw64!MFXVideoVPP_GetVPPStat+3437172>:
mov %rax,(%rbx)
0x00007ff8e04df8c7 <libmfxhw64!MFXVideoVPP_GetVPPStat+3437175>:
mov 0x55d50a(%rip),%rax # 0x7ff8e0a3cdd8
=> 0x00007ff8e04df8ce <libmfxhw64!MFXVideoVPP_GetVPPStat+3437182>:
cmp %rax,0x8(%rbx)
0x00007ff8e04df8d2 <libmfxhw64!MFXVideoVPP_GetVPPStat+3437186>: je
0x7ff8e04df8ef <libmfxhw64!MFXVideoVPP_GetVPPStat+3437215>
0x00007ff8e04df8d4 <libmfxhw64!MFXVideoVPP_GetVPPStat+3437188>:
mov 0x10(%rbx),%rax
0x00007ff8e04df8d8 <libmfxhw64!MFXVideoVPP_GetVPPStat+3437192>:
mov 0xc8(%rax),%ecx
0x00007ff8e04df8de <libmfxhw64!MFXVideoVPP_GetVPPStat+3437198>:
test %ecx,0x55dc58(%rip) # 0x7ff8e0a3d53c
0x00007ff8e04df8e4 <libmfxhw64!MFXVideoVPP_GetVPPStat+3437204>:
jne 0x7ff8e04df8ef <libmfxhw64!MFXVideoVPP_GetVPPStat+3437215>
0x00007ff8e04df8e6 <libmfxhw64!MFXVideoVPP_GetVPPStat+3437206>:
callq 0x7ff8e04e6778 <libmfxhw64!MFXVideoVPP_GetVPPStat+3465512>
0x00007ff8e04df8eb <libmfxhw64!MFXVideoVPP_GetVPPStat+3437211>:
mov %rax,0x8(%rbx)
}}}
info all-registers
{{{
rax 0x201b14de400 2206292894720
rbx 0x5a8dbfe4a8 388925220008
rcx 0x201b14de400 2206292894720
rdx 0x7ff8e0a3d3e0 140706897449952
rsi 0x201eec027a8 2207323793320
rdi 0x7ff8e09a3468 140706896819304
rbp 0x5a8dbfe500 0x5a8dbfe500
rsp 0x5a8dbfe3d0 0x5a8dbfe3d0
r8 0x5a8d893000 388921634816
r9 0x5a8dbfe7a0 388925220768
r10 0x7ff8e09a3248 140706896818760
r11 0x5a8dbfe748 388925220680
r12 0x0 0
r13 0x5a8dbfe7a0 388925220768
r14 0x0 0
r15 0x201eeced080 2207324754048
rip 0x7ff8e04df8ce 0x7ff8e04df8ce
<libmfxhw64!MFXVideoVPP_GetVPPStat+3437182>
eflags 0x246 [ PF ZF IF ]
cs 0x33 51
ss 0x2b 43
ds 0x2b 43
es 0x2b 43
fs 0x53 83
gs 0x2b 43
st0 -nan(0x8080808080808080) (raw 0xffff8080808080808080)
st1 -nan(0x8080808080808080) (raw 0xffff8080808080808080)
st2 -0.25814843750000449063009000383317471 (raw
0xbffd842c083126ec0000)
st3 1 (raw 0x3fff8000000000000000)
st4 0.9981689453125 (raw 0x3ffeff88000000000000)
st5 1 (raw 0x3fff8000000000000000)
st6 0.20685943247792956907525705606554212 (raw
0x3ffcd3d2f5857282f8a9)
st7 0.20685943247792956907525705606554212 (raw
0x3ffcd3d2f5857282f8a9)
fctrl 0x420037f 69206911
fstat 0x420 1056
ftag 0x0 0
fiseg 0x0 0
fioff 0xd85f0855 -664860587
foseg 0x0 0
fooff 0x8dbfda98 -1916806504
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, 0x1, 0x0, 0x0}, v2_double = {0x1, 0x0},
v16_int8 = {0x9a, 0x99, 0x99, 0x99, 0x99, 0x99, 0xf9, 0x3f, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x999a, 0x9999, 0x9999, 0x3ff9, 0x0,
0x0, 0x0, 0x0}, v4_int32 = {0x9999999a,
0x3ff99999, 0x0, 0x0}, v2_int64 = {0x3ff999999999999a, 0x0}, uint128 =
0x00000000000000003ff999999999999a}
xmm7 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double =
{0x8000000000000000, 0x0}, v16_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf8,
0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0, 0x0,
0x7ff8, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x7ff80000,
0x0, 0x0}, v2_int64 = {0x7ff8000000000000, 0x0}, uint128 =
0x00000000000000007ff8000000000000}
xmm8 {v4_float = {0x0, 0x1, 0x0, 0x0}, v2_double = {0x1, 0x0},
v16_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf0, 0x3f, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0, 0x0, 0x3ff0, 0x0, 0x0, 0x0,
0x0}, v4_int32 = {0x0, 0x3ff00000, 0x0, 0x0},
v2_int64 = {0x3ff0000000000000, 0x0}, uint128 =
0x00000000000000003ff0000000000000}
xmm9 {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}
xmm10 {v4_float = {0x0, 0x1, 0x0, 0x0}, v2_double = {0x1, 0x0},
v16_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf0, 0x3f, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0, 0x0, 0x3ff0, 0x0, 0x0, 0x0,
0x0}, v4_int32 = {0x0, 0x3ff00000, 0x0, 0x0},
v2_int64 = {0x3ff0000000000000, 0x0}, uint128 =
0x00000000000000003ff0000000000000}
xmm11 {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}
xmm12 {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}
xmm13 {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}
xmm14 {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}
xmm15 {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 0x1fbf [ IE DE ZE OE UE PE IM DM ZM OM UM PM ]
}}}
The video filter used doesn't seem to matter, just that filtering is
occurring.
--
Ticket URL: <https://trac.ffmpeg.org/ticket/4832#comment:10>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list