[FFmpeg-trac] #10137(avcodec:new): hevc_nvenc [Clipping lookahead depth] and surfaces

FFmpeg trac at avcodec.org
Mon Jan 9 23:57:44 EET 2023


#10137: hevc_nvenc [Clipping lookahead depth] and surfaces
-------------------------------------+-------------------------------------
             Reporter:  colemarc     |                     Type:  defect
               Status:  new          |                 Priority:  normal
            Component:  avcodec      |                  Version:
             Keywords:  hevc_nvenc   |  unspecified
  scenecut lookahead clipping        |               Blocked By:
  surfaces                           |
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
 Summary of the bug:
 How to reproduce:

 Goal: to enable scenecut (IFR frames at scene changes)
 Solution: add option `-rc-lookahead 59` (cannot find other means)

 {{{
 C:\>ffmpeg -loglevel debug -i Vinyl.S01E06_000520.mkv -to 00:00:01 -an
 -c:v hevc_nvenc -b_ref_mode 0 -rc-lookahead 59 -pix_fmt yuv420p output.mp4
 ffmpeg version N-109527-ga0b5aaceca-20230104 Copyright (c) 2000-2023 the
 FFmpeg developers
   built with gcc 12.2.0 (crosstool-NG 1.25.0.90_cf9beb1)
   configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static
 --pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64
 --target-os=mingw32 --enable-gpl --enable-version3 --disable-debug
 --disable-w32threads --enable-pthreads --enable-iconv --enable-libxml2
 --enable-zlib --enable-libfreetype --enable-libfribidi --enable-gmp
 --enable-lzma --enable-fontconfig --enable-libvorbis --enable-opencl
 --disable-libpulse --enable-libvmaf --disable-libxcb --disable-xlib
 --enable-amf --enable-libaom --enable-libaribb24 --enable-avisynth
 --enable-chromaprint --enable-libdav1d --enable-libdavs2 --disable-libfdk-
 aac --enable-ffnvcodec --enable-cuda-llvm --enable-frei0r --enable-libgme
 --enable-libkvazaar --enable-libass --enable-libbluray --enable-libjxl
 --enable-libmp3lame --enable-libopus --enable-librist --enable-libssh
 --enable-libtheora --enable-libvpx --enable-libwebp --enable-lv2
 --disable-libmfx --enable-libvpl --enable-openal --enable-libopencore-
 amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg
 --enable-libopenmpt --enable-librav1e --enable-librubberband --enable-
 schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libsvtav1
 --enable-libtwolame --enable-libuavs3d --disable-libdrm --disable-vaapi
 --enable-libvidstab --enable-vulkan --enable-libshaderc --enable-
 libplacebo --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-
 libxvid --enable-libzimg --enable-libzvbi --extra-
 cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-ldflags=-pthread
 --extra-ldexeflags= --extra-libs=-lgomp --extra-version=20230104
   libavutil      57. 43.100 / 57. 43.100
   libavcodec     59. 56.100 / 59. 56.100
   libavformat    59. 34.102 / 59. 34.102
   libavdevice    59.  8.101 / 59.  8.101
   libavfilter     8. 53.100 /  8. 53.100
   libswscale      6.  8.112 /  6.  8.112
   libswresample   4.  9.100 /  4.  9.100
   libpostproc    56.  7.100 / 56.  7.100
 Splitting the commandline.
 Reading option '-loglevel' ... matched as option 'loglevel' (set logging
 level) with argument 'debug'.
 Reading option '-i' ... matched as input url with argument
 'Vinyl.S01E06_000520.mkv'.
 Reading option '-to' ... matched as option 'to' (record or transcode stop
 time) with argument '00:00:01'.
 Reading option '-an' ... matched as option 'an' (disable audio) with
 argument '1'.
 Reading option '-c:v' ... matched as option 'c' (codec name) with argument
 'hevc_nvenc'.
 Reading option '-b_ref_mode' ... matched as AVOption 'b_ref_mode' with
 argument '0'.
 Reading option '-rc-lookahead' ... matched as AVOption 'rc-lookahead' with
 argument '59'.
 Reading option '-pix_fmt' ... matched as option 'pix_fmt' (set pixel
 format) with argument 'yuv420p'.
 Reading option 'output.mp4' ... matched as output url.
 Finished splitting the commandline.
 Parsing a group of options: global .
 Applying option loglevel (set logging level) with argument debug.
 Successfully parsed a group of options.
 Parsing a group of options: input url Vinyl.S01E06_000520.mkv.
 Successfully parsed a group of options.
 Opening an input file: Vinyl.S01E06_000520.mkv.
 [NULL @ 000001edcbbc9980] Opening 'Vinyl.S01E06_000520.mkv' for reading
 [file @ 000001edcbbc9fc0] Setting default whitelist 'file,crypto,data'
 [matroska,webm @ 000001edcbbc9980] Format matroska,webm probed with
 size=2048 and score=100
 st:0 removing common factor 1000000 from timebase
 st:1 removing common factor 1000000 from timebase
 [matroska,webm @ 000001edcbbc9980] Before avformat_find_stream_info() pos:
 2817 bytes read:32768 seeks:0 nb_streams:2
 [h264 @ 000001edcd844f80] nal_unit_type: 7(SPS), nal_ref_idc: 3
 [h264 @ 000001edcd844f80] Decoding VUI
 [h264 @ 000001edcd844f80] nal_unit_type: 8(PPS), nal_ref_idc: 3
 For transform of length 32, inverse, mdct_float, flags: [aligned,
 out_of_place], found 3 matches:
     1: mdct_inv_float_avx2 - type: mdct_float, len: [16, 8], factors[2]:
 [2, any], flags: [aligned, out_of_place, inv_only], prio: 544
     2: mdct_inv_float_c - type: mdct_float, len: [2, 8], factors[2]: [2,
 any], flags: [unaligned, out_of_place, inv_only], prio: 96
     3: mdct_naive_inv_float_c - type: mdct_float, len: [2, 8], factors[2]:
 [2, any], flags: [unaligned, out_of_place, inv_only], prio: -130976
 For transform of length 16, inverse, fft_float, flags: [aligned, inplace,
 preshuf, asm_call], found 2 matches:
     1: fft16_asm_float_fma3 - type: fft_float, len: 16, factor: 2, flags:
 [aligned, inplace, out_of_place, preshuf, asm_call], prio: 512
     2: fft16_asm_float_avx - type: fft_float, len: 16, factor: 2, flags:
 [aligned, inplace, out_of_place, preshuf, asm_call], prio: 480
 Transform tree:
     mdct_inv_float_avx2 - type: mdct_float, len: 32, factors[2]: [2, any],
 flags: [aligned, out_of_place, inv_only]
         fft16_asm_float_fma3 - type: fft_float, len: 16, factor: 2, flags:
 [aligned, inplace, out_of_place, preshuf, asm_call]
 For transform of length 64, inverse, mdct_float, flags: [aligned,
 out_of_place], found 3 matches:
     1: mdct_inv_float_avx2 - type: mdct_float, len: [16, 8], factors[2]:
 [2, any], flags: [aligned, out_of_place, inv_only], prio: 544
     2: mdct_inv_float_c - type: mdct_float, len: [2, 8], factors[2]: [2,
 any], flags: [unaligned, out_of_place, inv_only], prio: 96
     3: mdct_naive_inv_float_c - type: mdct_float, len: [2, 8], factors[2]:
 [2, any], flags: [unaligned, out_of_place, inv_only], prio: -130976
 For transform of length 32, inverse, fft_float, flags: [aligned, inplace,
 preshuf, asm_call], found 2 matches:
     1: fft32_asm_float_fma3 - type: fft_float, len: 32, factor: 2, flags:
 [aligned, inplace, out_of_place, preshuf, asm_call], prio: 512
     2: fft32_asm_float_avx - type: fft_float, len: 32, factor: 2, flags:
 [aligned, inplace, out_of_place, preshuf, asm_call], prio: 480
 Transform tree:
     mdct_inv_float_avx2 - type: mdct_float, len: 64, factors[2]: [2, any],
 flags: [aligned, out_of_place, inv_only]
         fft32_asm_float_fma3 - type: fft_float, len: 32, factor: 2, flags:
 [aligned, inplace, out_of_place, preshuf, asm_call]
 [h264 @ 000001edcd844f80] nal_unit_type: 7(SPS), nal_ref_idc: 3
 [h264 @ 000001edcd844f80] Decoding VUI
 [h264 @ 000001edcd844f80] nal_unit_type: 8(PPS), nal_ref_idc: 3
 [h264 @ 000001edcd844f80] nal_unit_type: 5(IDR), nal_ref_idc: 3
 [h264 @ 000001edcd844f80] Format yuv420p chosen by get_format().
 [h264 @ 000001edcd844f80] Reinit context to 1920x1088, pix_fmt: yuv420p
 [h264 @ 000001edcd844f80] no picture
 [matroska,webm @ 000001edcbbc9980] All info found
 [matroska,webm @ 000001edcbbc9980] After avformat_find_stream_info() pos:
 283335 bytes read:315473 seeks:0 frames:8
 Input #0, matroska,webm, from 'Vinyl.S01E06_000520.mkv':
   Metadata:
     title           :
     ENCODER         : Lavf58.20.100
   Duration: 00:05:17.03, start: 0.000000, bitrate: 11212 kb/s
   Chapters:
     Chapter #0:0: start 0.000000, end 303.498000
       Metadata:
         title           : 00:01:44.438
     Chapter #0:1: start 303.498000, end 870.731000
       Metadata:
         title           : 00:10:23.498
     Chapter #0:2: start 870.731000, end 1539.733000
       Metadata:
         title           : 00:19:50.731
     Chapter #0:3: start 1539.733000, end 2028.972000
       Metadata:
         title           : 00:30:59.733
     Chapter #0:4: start 2028.972000, end 2415.066000
       Metadata:
         title           : 00:39:08.972
     Chapter #0:5: start 2415.066000, end 2981.298000
       Metadata:
         title           : 00:45:35.066
     Chapter #0:6: start 2981.298000, end 3063.723000
       Metadata:
         title           : 00:55:01.298
   Stream #0:0(eng), 4, 1/1000: Video: h264 (High), 1 reference frame,
 yuv420p(progressive, left), 1920x1080 (1920x1088), 0/1, SAR 1:1 DAR 16:9,
 23.98 fps, 23.98 tbr, 1k tbn (default)
     Metadata:
       BPS             : 8563768
       BPS-eng         : 8563768
       DURATION-eng    : 00:56:23.678000000
       NUMBER_OF_FRAMES: 81127
       NUMBER_OF_FRAMES-eng: 81127
       NUMBER_OF_BYTES : 3622129594
       NUMBER_OF_BYTES-eng: 3622129594
       _STATISTICS_WRITING_APP: mkvmerge v8.3.0 ('Over the Horizon') 64bit
       _STATISTICS_WRITING_APP-eng: mkvmerge v8.3.0 ('Over the Horizon')
 64bit
       _STATISTICS_WRITING_DATE_UTC: 2016-05-20 04:40:35
       _STATISTICS_WRITING_DATE_UTC-eng: 2016-05-20 04:40:35
       _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
       _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
       DURATION        : 00:05:17.025000000
   Stream #0:1(eng), 4, 1/1000: Audio: dts (DTS), 48000 Hz, 5.1(side),
 fltp, 1536 kb/s (default)
     Metadata:
       BPS             : 1508999
       BPS-eng         : 1508999
       DURATION-eng    : 00:56:23.723000000
       NUMBER_OF_FRAMES: 317224
       NUMBER_OF_FRAMES-eng: 317224
       NUMBER_OF_BYTES : 638254688
       NUMBER_OF_BYTES-eng: 638254688
       _STATISTICS_WRITING_APP: mkvmerge v8.3.0 ('Over the Horizon') 64bit
       _STATISTICS_WRITING_APP-eng: mkvmerge v8.3.0 ('Over the Horizon')
 64bit
       _STATISTICS_WRITING_DATE_UTC: 2016-05-20 04:40:35
       _STATISTICS_WRITING_DATE_UTC-eng: 2016-05-20 04:40:35
       _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
       _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
       DURATION        : 00:05:16.941000000
 Successfully opened the file.
 Parsing a group of options: output url output.mp4.
 Applying option to (record or transcode stop time) with argument 00:00:01.
 Applying option an (disable audio) with argument 1.
 Applying option c:v (codec name) with argument hevc_nvenc.
 Applying option pix_fmt (set pixel format) with argument yuv420p.
 Successfully parsed a group of options.
 Opening an output file: output.mp4.
 [file @ 000001edcd8b0540] Setting default whitelist 'file,crypto,data'
 Successfully opened the file.
 detected 8 logical cores
 [h264 @ 000001edcdb2eb00] nal_unit_type: 7(SPS), nal_ref_idc: 3
 [h264 @ 000001edcdb2eb00] Decoding VUI
 [h264 @ 000001edcdb2eb00] nal_unit_type: 8(PPS), nal_ref_idc: 3
 Stream mapping:
   Stream #0:0 -> #0:0 (h264 (native) -> hevc (hevc_nvenc))
 Press [q] to stop, [?] for help
 cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless
 if it occurs once at the start per stream)
     Last message repeated 1 times
 [h264 @ 000001edcdb2eb00] nal_unit_type: 5(IDR), nal_ref_idc: 3
 [h264 @ 000001edcdb2eb00] Format yuv420p chosen by get_format().
 [h264 @ 000001edcdb2eb00] Reinit context to 1920x1088, pix_fmt: yuv420p
 [h264 @ 000001edcdb2eb00] no picture
 cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless
 if it occurs once at the start per stream)
 [h264 @ 000001edcdd40380] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 2
 [h264 @ 000001edcdd40380] no picture
 cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless
 if it occurs once at the start per stream)
 [h264 @ 000001edcd864480] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 2
 cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless
 if it occurs once at the start per stream)
     Last message repeated 4 times
 [h264 @ 000001edcdf91f00] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 0
 cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless
 if it occurs once at the start per stream)
 [h264 @ 000001edcdf92600] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 0
 cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless
 if it occurs once at the start per stream)
 [h264 @ 000001edcdae6e40] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 2
 cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless
 if it occurs once at the start per stream)
 [h264 @ 000001edcdae7800] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 2
 cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless
 if it occurs once at the start per stream)
 [h264 @ 000001edcdaf81c0] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 0
 cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless
 if it occurs once at the start per stream)
 [h264 @ 000001edcdaf89c0] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 0
 cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless
 if it occurs once at the start per stream)
 [h264 @ 000001edcdb2eb00] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 2
 [h264 @ 000001edcdd40380] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 2
 [graph 0 input from stream 0:0 @ 000001edcd858b80] Setting 'video_size' to
 value '1920x1080'
 [graph 0 input from stream 0:0 @ 000001edcd858b80] Setting 'pix_fmt' to
 value '0'
 [graph 0 input from stream 0:0 @ 000001edcd858b80] Setting 'time_base' to
 value '1/1000'
 [graph 0 input from stream 0:0 @ 000001edcd858b80] Setting 'pixel_aspect'
 to value '1/1'
 [graph 0 input from stream 0:0 @ 000001edcd858b80] Setting 'frame_rate' to
 value '13978/583'
 [graph 0 input from stream 0:0 @ 000001edcd858b80] w:1920 h:1080
 pixfmt:yuv420p tb:1/1000 fr:13978/583 sar:1/1
 [format @ 000001edcd859e80] Setting 'pix_fmts' to value 'yuv420p'
 [AVFilterGraph @ 000001edd0943000] query_formats: 5 queried, 4 merged, 0
 already done, 0 delayed
 [hevc_nvenc @ 000001edcdb2e700] Loaded lib: nvcuda.dll
 [hevc_nvenc @ 000001edcdb2e700] Loaded sym: cuInit
 [...]
 [hevc_nvenc @ 000001edcdb2e700] Loaded sym: cuArrayDestroy
 [hevc_nvenc @ 000001edcdb2e700] Cannot load optional
 cuEGLStreamProducerConnect
 [hevc_nvenc @ 000001edcdb2e700] Cannot load optional
 cuEGLStreamProducerDisconnect
 [hevc_nvenc @ 000001edcdb2e700] Cannot load optional
 cuEGLStreamConsumerDisconnect
 [hevc_nvenc @ 000001edcdb2e700] Cannot load optional
 cuEGLStreamProducerPresentFrame
 [hevc_nvenc @ 000001edcdb2e700] Cannot load optional
 cuEGLStreamProducerReturnFrame
 [hevc_nvenc @ 000001edcdb2e700] Loaded sym: cuD3D11GetDevice
 [hevc_nvenc @ 000001edcdb2e700] Loaded sym: cuD3D11GetDevices
 [hevc_nvenc @ 000001edcdb2e700] Loaded sym:
 cuGraphicsD3D11RegisterResource
 [hevc_nvenc @ 000001edcdb2e700] Loaded lib: nvEncodeAPI64.dll
 [hevc_nvenc @ 000001edcdb2e700] Loaded sym: NvEncodeAPICreateInstance
 [hevc_nvenc @ 000001edcdb2e700] Loaded sym:
 NvEncodeAPIGetMaxSupportedVersion
 [hevc_nvenc @ 000001edcdb2e700] Loaded Nvenc version 12.0
 [hevc_nvenc @ 000001edcdb2e700] Nvenc initialized successfully
 [hevc_nvenc @ 000001edcdb2e700] 1 CUDA capable devices found
 [hevc_nvenc @ 000001edcdb2e700] [ GPU #0 - < NVIDIA GeForce GTX 1080 Ti >
 has Compute SM 6.1 ]
 [hevc_nvenc @ 000001edcdb2e700] supports NVENC
 [hevc_nvenc @ 000001edcdb2e700] Lookahead enabled: depth 58, scenecut
 enabled, B-adapt disabled.
 [hevc_nvenc @ 000001edcdb2e700] Clipping lookahead depth to 58 (from 59)
 due to lack of surfaces/delayOutput #0, mp4, to 'output.mp4':
   Metadata:
     title           :
     encoder         : Lavf59.34.102
   Chapters:
     Chapter #0:0: start 0.000000, end 1.000000
       Metadata:
         title           : 00:01:44.438
   Stream #0:0(eng), 0, 1/13978: Video: hevc (Main), 1 reference frame
 (hev1 / 0x31766568), yuv420p(progressive, left), 1920x1080 (0x0) [SAR 1:1
 DAR 16:9], 0/1, q=2-31, 2000 kb/s, 23.98 fps, 13978 tbn (default)
     Metadata:
       BPS             : 8563768
       BPS-eng         : 8563768
       DURATION-eng    : 00:56:23.678000000
       NUMBER_OF_FRAMES: 81127
       NUMBER_OF_FRAMES-eng: 81127
       NUMBER_OF_BYTES : 3622129594
       NUMBER_OF_BYTES-eng: 3622129594
       _STATISTICS_WRITING_APP: mkvmerge v8.3.0 ('Over the Horizon') 64bit
       _STATISTICS_WRITING_APP-eng: mkvmerge v8.3.0 ('Over the Horizon')
 64bit
       _STATISTICS_WRITING_DATE_UTC: 2016-05-20 04:40:35
       _STATISTICS_WRITING_DATE_UTC-eng: 2016-05-20 04:40:35
       _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
       _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
       DURATION        : 00:05:17.025000000
       encoder         : Lavc59.56.100 hevc_nvenc
     Side data:
       cpb: bitrate max/min/avg: 0/0/2000000 buffer size: 4000000
 vbv_delay: N/A
 Clipping frame in rate conversion by 0.000008
 [h264 @ 000001edcd864480] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 0N/A
 [h264 @ 000001edcdf91f00] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 0
 Clipping frame in rate conversion by 0.002998
 [h264 @ 000001edcdf92600] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 2
 [h264 @ 000001edcdae6e40] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 2
 [h264 @ 000001edcdae7800] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 0
 [h264 @ 000001edcdaf81c0] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 0
 [h264 @ 000001edcdaf89c0] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 2
 [h264 @ 000001edcdb2eb00] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 2
 [h264 @ 000001edcdd40380] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 0
 Clipping frame in rate conversion by 0.002007
 [h264 @ 000001edcd864480] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 0
 [h264 @ 000001edcdf91f00] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 2
 [h264 @ 000001edcdf92600] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 2
 Clipping frame in rate conversion by 0.005013
 [h264 @ 000001edcdae6e40] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 0
 [h264 @ 000001edcdae7800] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 0
 [h264 @ 000001edcdaf81c0] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 2
 [h264 @ 000001edcdaf89c0] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 2
 Clipping frame in rate conversion by 0.001015
 [h264 @ 000001edcdb2eb00] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 0
 [h264 @ 000001edcdd40380] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 0
 [h264 @ 000001edcd864480] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 2
 Clipping frame in rate conversion by 0.004021
 [h264 @ 000001edcdf91f00] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 2
 [h264 @ 000001edcdf92600] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 0
 [h264 @ 000001edcdae6e40] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 0
 [h264 @ 000001edcdae7800] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 2
 [h264 @ 000001edcdaf81c0] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 2
 [out_0_0 @ 000001edcd858c80] EOF on sink link out_0_0:default.
 No more output streams to write to, finishing.
 All streams finished for output file #0
 Terminating muxer thread 0
 [AVIOContext @ 000001edcd8b29c0] Statistics: 296131 bytes written, 2
 seeks, 5 writeouts
 frame=   24 fps=0.0 q=27.0 Lsize=     289kB time=00:00:00.95
 bitrate=2469.5kbits/s speed=1.71x
 video:288kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
 muxing overhead: 0.564072%
 Input file #0 (Vinyl.S01E06_000520.mkv):
   Input stream #0:0 (video): 35 packets read (1446755 bytes); 26 frames
 decoded;
   Input stream #0:1 (audio): 4 packets read (8048 bytes);
   Total: 39 packets (1454803 bytes) demuxed
 Output file #0 (output.mp4):
   Output stream #0:0 (video): 24 frames encoded; 24 packets muxed (294466
 bytes);
   Total: 24 packets (294466 bytes) muxed
 26 frames successfully decoded, 0 decoding errors
 [hevc_nvenc @ 000001edcdb2e700] Nvenc unloaded
 Terminating demuxer thread 0
 [AVIOContext @ 000001edcbbca2c0] Statistics: 1794301 bytes read, 0 seeks
 }}}

 Please notice: `Clipping lookahead depth to 58 (from 59) due to lack of
 surfaces/delay`

 Adding option: `-surfaces 64`
 {{{
 C:\>ffmpeg -loglevel debug -i Vinyl.S01E06_000520.mkv -to 00:00:01 -an
 -c:v hevc_nvenc -b_ref_mode 0 -surfaces 64 -rc-lookahead 59 -pix_fmt
 yuv420p output.mp4
 [...Same log as before, until:]
 [hevc_nvenc @ 000001c1bb8b9800] Loaded Nvenc version 12.0
 [hevc_nvenc @ 000001c1bb8b9800] Nvenc initialized successfully
 [hevc_nvenc @ 000001c1bb8b9800] 1 CUDA capable devices found
 [hevc_nvenc @ 000001c1bb8b9800] [ GPU #0 - < NVIDIA GeForce GTX 1080 Ti >
 has Compute SM 6.1 ]
 [hevc_nvenc @ 000001c1bb8b9800] supports NVENC
 [hevc_nvenc @ 000001c1bb8b9800] Defined rc_lookahead requires more
 surfaces, increasing used surfaces 64 -> 65
 [hevc_nvenc @ 000001c1bb8b9800] Lookahead enabled: depth 58, scenecut
 enabled, B-adapt disabled.
 [hevc_nvenc @ 000001c1bb8b9800] Clipping lookahead depth to 58 (from 59)
 due to lack of surfaces/delayOutput #0, mp4, to 'output.mp4':
 [...]
 }}}

 Please notice: `Defined rc_lookahead requires more surfaces, increasing
 used surfaces 64 -> 65`
 Please notice: `Clipping lookahead depth to 58 (from 59) due to lack of
 surfaces/delay`

 Changing to: `-surfaces 100`
 {{{
 C:\>ffmpeg -loglevel debug -i Vinyl.S01E06_000520.mkv -to 00:00:01 -an
 -c:v hevc_nvenc -b_ref_mode 0 -surfaces 100 -rc-lookahead 59 -pix_fmt
 yuv420p output.mp4
 [...Same log as before, until:]
 [hevc_nvenc @ 000002767b2c9800] Loaded Nvenc version 12.0
 [hevc_nvenc @ 000002767b2c9800] Nvenc initialized successfully
 [hevc_nvenc @ 000002767b2c9800] 1 CUDA capable devices found
 [hevc_nvenc @ 000002767b2c9800] [ GPU #0 - < NVIDIA GeForce GTX 1080 Ti >
 has Compute SM 6.1 ]
 [hevc_nvenc @ 000002767b2c9800] supports NVENC
 [hevc_nvenc @ 000002767b2c9800] Defined rc_lookahead requires more
 surfaces, increasing used surfaces 64 -> 65
 [hevc_nvenc @ 000002767b2c9800] Lookahead enabled: depth 58, scenecut
 enabled, B-adapt disabled.
 [hevc_nvenc @ 000002767b2c9800] Clipping lookahead depth to 58 (from 59)
 due to lack of surfaces/delayOutput #0, mp4, to 'output.mp4':
 [...]
 hevc_nvenc @ 000001eff9e2fc00] Value 100.000000 for parameter 'surfaces'
 out of range [0 - 64]
 [hevc_nvenc @ 000001eff9e2fc00] Error setting option surfaces to value
 100.
 Error initializing output stream 0:0 -- Error while opening encoder for
 output stream #0:0 - maybe incorrect parameters such as bit_rate, rate,
 width or height
 }}}

 Please notice: `Defined rc_lookahead requires more surfaces, increasing
 used surfaces 64 -> 65`
 Please notice: `Clipping lookahead depth to 58 (from 59) due to lack of
 surfaces/delay`
 Please notice: `Value 100.000000 for parameter 'surfaces' out of range [0
 - 64]`

 So, max surfaces number seems to be 64 (documented by `ffmpeg -h
 encoder=hevc_nvenc`) but then it is nonetheless apparently increased to 65
 (???)

 Also, if I set `-surfaces 64 -rc-lookahead 100` then the message before
 `Clipping lookahead depth...` becomes `Defined rc_lookahead requires more
 surfaces, increasing used surfaces 64 -> 165`.

 If I set `-surfaces 64 -rc-lookahead 58` then there is no warning message
 about surfaces or lookahead clipping.
-- 
Ticket URL: <https://trac.ffmpeg.org/ticket/10137>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list