[FFmpeg-trac] #9082(avcodec:new): Memory leak while trancoding on GPU

FFmpeg trac at avcodec.org
Tue Feb 9 21:39:02 EET 2021


#9082: Memory leak while trancoding on GPU
-------------------------------------+-------------------------------------
             Reporter:  misko        |                    Owner:
                 Type:  defect       |                   Status:  new
             Priority:  important    |                Component:  avcodec
              Version:  git-master   |               Resolution:
             Keywords:  cuda         |               Blocked By:
  regression                         |
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
Changes (by cehoyos):

 * keywords:  cuda => cuda regression
 * priority:  normal => important


Old description:

> Summary of the bug:
>
> While transcoding live SPTS with H.264/AVC video to multiple H.264/AVC
> output profiles and MPEG1 Layer 2 audio to AAC using nVidia GPU (Pascal)
> NVENC, all ffmpeg versions newer than commit 8a81820624 (022a12b306 and
> newer - found using git-bisect) are causing memory leak. Note: during a
> brief testing with single profile the leaking wasn't detected. But with
> at least 2 profiles being output simultaneously, memory leaking
> definitely occurs.
>
> How to reproduce:
> {{{
> /opt/ffmpeg/bin/ffmpeg -hide_banner -nostats -loglevel verbose -vsync -1
> -hwaccel cuvid -hwaccel_output_format cuda -hwaccel_device 1
> -init_hw_device cuda=cuda:1 -filter_hw_device cuda -threads 1 -fflags
> +discardcorrupt -c:v h264_cuvid -f mpegts -i
> 'udp://239.232.9.1:1234?sources=10.128.0.9&fifo_size=100000&timeout=2000000'
> -filter_complex
> '[0:v:0]yadif_cuda=mode=send_frame:parity=auto:deint=all,split=3[s_p1][s_p2][s_p3];[s_p1]scale_npp=-1:1080:interp_algo=lanczos[v_p1];[s_p2]scale_npp=-1:720:interp_algo=lanczos[v_p2];[s_p3]scale_npp=-1:576:interp_algo=lanczos[v_p3]'
> -map '[v_p1]' -map '#0xc86' -c:v h264_nvenc -preset:v p4 -rc:v vbr
> -profile:v high -forced-idr:v 1 -force_key_frames:v
> 'expr:gte(t,n_forced*2)' -b:v 5000000 -maxrate:v 5000000 -bufsize:v
> 2500000 -spatial-aq:v 1 -aq-strength:v 15 -bf:v 3 -b_ref_mode:v middle
> -no-scenecut:v 1 -rc-lookahead:v 32 -coder:v cabac -c:a:0 libfdk_aac
> -ac:a:0 2 -r:a:0 48000 -b:a:0 96k -f mpegts -mpegts_service_type
> advanced_codec_digital_hdtv -mpegts_flags system_b
> 'udp://239.232.229.61:10001?pkt_size=1316&fifo_size=100000' -map '[v_p2]'
> -map '#0xc86' -c:v h264_nvenc -preset:v p4 -rc:v vbr -profile:v high
> -forced-idr:v 1 -force_key_frames:v 'expr:gte(t,n_forced*2)' -b:v 2500000
> -maxrate:v 2500000 -bufsize:v 1250000 -spatial-aq:v 1 -aq-strength:v 15
> -bf:v 3 -b_ref_mode:v middle -no-scenecut:v 1 -rc-lookahead:v 32 -coder:v
> cabac -c:a:0 libfdk_aac -ac:a:0 2 -r:a:0 48000 -b:a:0 96k -f mpegts
> -mpegts_service_type advanced_codec_digital_hdtv -mpegts_flags system_b
> 'udp://239.232.229.61:10002?pkt_size=1316&fifo_size=100000' -map '[v_p3]'
> -map '#0xc86' -c:v h264_nvenc -preset:v p4 -rc:v vbr -profile:v main
> -forced-idr:v 1 -force_key_frames:v 'expr:gte(t,n_forced*2)' -b:v 1250000
> -maxrate:v 1250000 -bufsize:v 625000 -spatial-aq:v 1 -aq-strength:v 15
> -bf:v 3 -b_ref_mode:v middle -no-scenecut:v 1 -rc-lookahead:v 32 -coder:v
> cabac -c:a:0 libfdk_aac -ac:a:0 2 -r:a:0 48000 -b:a:0 96k -f mpegts
> -mpegts_service_type advanced_codec_digital_hdtv -mpegts_flags system_b
> 'udp://239.232.229.61:10003?pkt_size=1316&fifo_size=100000'
> }}}

New description:

 Summary of the bug:

 While transcoding live SPTS with H.264/AVC video to multiple H.264/AVC
 output profiles and MPEG1 Layer 2 audio to AAC using nVidia GPU (Pascal)
 NVENC, all ffmpeg versions since 022a12b306ab2096e6ac9fc9b149828a849d65b2
 are causing memory leak. Note: during a brief testing with single profile
 the leaking wasn't detected. But with at least 2 profiles being output
 simultaneously, memory leaking definitely occurs.

 How to reproduce:
 {{{
 /opt/ffmpeg/bin/ffmpeg -hide_banner -nostats -loglevel verbose -vsync -1
 -hwaccel cuvid -hwaccel_output_format cuda -hwaccel_device 1
 -init_hw_device cuda=cuda:1 -filter_hw_device cuda -threads 1 -fflags
 +discardcorrupt -c:v h264_cuvid -f mpegts -i
 'udp://239.232.9.1:1234?sources=10.128.0.9&fifo_size=100000&timeout=2000000'
 -filter_complex
 '[0:v:0]yadif_cuda=mode=send_frame:parity=auto:deint=all,split=3[s_p1][s_p2][s_p3];[s_p1]scale_npp=-1:1080:interp_algo=lanczos[v_p1];[s_p2]scale_npp=-1:720:interp_algo=lanczos[v_p2];[s_p3]scale_npp=-1:576:interp_algo=lanczos[v_p3]'
 -map '[v_p1]' -map '#0xc86' -c:v h264_nvenc -preset:v p4 -rc:v vbr
 -profile:v high -forced-idr:v 1 -force_key_frames:v
 'expr:gte(t,n_forced*2)' -b:v 5000000 -maxrate:v 5000000 -bufsize:v
 2500000 -spatial-aq:v 1 -aq-strength:v 15 -bf:v 3 -b_ref_mode:v middle
 -no-scenecut:v 1 -rc-lookahead:v 32 -coder:v cabac -c:a:0 libfdk_aac
 -ac:a:0 2 -r:a:0 48000 -b:a:0 96k -f mpegts -mpegts_service_type
 advanced_codec_digital_hdtv -mpegts_flags system_b
 'udp://239.232.229.61:10001?pkt_size=1316&fifo_size=100000' -map '[v_p2]'
 -map '#0xc86' -c:v h264_nvenc -preset:v p4 -rc:v vbr -profile:v high
 -forced-idr:v 1 -force_key_frames:v 'expr:gte(t,n_forced*2)' -b:v 2500000
 -maxrate:v 2500000 -bufsize:v 1250000 -spatial-aq:v 1 -aq-strength:v 15
 -bf:v 3 -b_ref_mode:v middle -no-scenecut:v 1 -rc-lookahead:v 32 -coder:v
 cabac -c:a:0 libfdk_aac -ac:a:0 2 -r:a:0 48000 -b:a:0 96k -f mpegts
 -mpegts_service_type advanced_codec_digital_hdtv -mpegts_flags system_b
 'udp://239.232.229.61:10002?pkt_size=1316&fifo_size=100000' -map '[v_p3]'
 -map '#0xc86' -c:v h264_nvenc -preset:v p4 -rc:v vbr -profile:v main
 -forced-idr:v 1 -force_key_frames:v 'expr:gte(t,n_forced*2)' -b:v 1250000
 -maxrate:v 1250000 -bufsize:v 625000 -spatial-aq:v 1 -aq-strength:v 15
 -bf:v 3 -b_ref_mode:v middle -no-scenecut:v 1 -rc-lookahead:v 32 -coder:v
 cabac -c:a:0 libfdk_aac -ac:a:0 2 -r:a:0 48000 -b:a:0 96k -f mpegts
 -mpegts_service_type advanced_codec_digital_hdtv -mpegts_flags system_b
 'udp://239.232.229.61:10003?pkt_size=1316&fifo_size=100000'
 }}}

--

--
Ticket URL: <https://trac.ffmpeg.org/ticket/9082#comment:15>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list