[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