From: Timo Rothenpieler <timo@rothenpieler.org> To: Cameron Gutman <aicommander@gmail.com> Cc: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org> Subject: Re: [FFmpeg-devel] [PATCH v2] avcodec/nvenc: add option to skip padding OBUs Date: Sat, 29 Mar 2025 23:31:16 +0100 Message-ID: <33a6ba16-9f46-469d-a566-da854d1f84f6@rothenpieler.org> (raw) In-Reply-To: <CAAfxzZ22E74JT1QY_7P67D6CvKjfFboig8RQ_L3axFSgHx=LEg@mail.gmail.com> On 29.03.2025 23:28, Cameron Gutman wrote: > On Sat, Mar 29, 2025 at 4:42 PM Timo Rothenpieler <timo@rothenpieler.org> wrote: >> >> On 29.03.2025 22:37, Cameron Gutman wrote: >>> On Sat, Mar 29, 2025 at 4:26 PM Timo Rothenpieler <timo@rothenpieler.org> wrote: >>>> >>>> On 29.03.2025 22:17, Cameron Gutman wrote: >>>>> On Sat, Mar 29, 2025 at 4:02 PM Timo Rothenpieler <timo@rothenpieler.org> wrote: >>>>>> >>>>>> On 29.03.2025 21:58, Cameron Gutman wrote: >>>>>>> Some scenarios (such as game streaming or videoconferencing) may use CBR >>>>>>> to strictly cap the maximum encoded bitrate, but they don't mind the >>>>>>> bitrate falling below the target if the encoder doesn't need the >>>>>>> additional headroom. >>>>>> >>>>>> But why aren't they using vbr with a maxrate then? >>>>>> I didn't add this conditionally since when in CBR mode, you actually >>>>>> really want a constant bitrate. >>>>>> If you're okay with it dropping lower, why not use another mode with a >>>>>> maxrate set? >>>>>> >>>>> >>>>> As I understand it, the rate control behavior of CBR without filler is >>>>> different from >>>>> just using VBR, particularly for low latency applications. Nvidia recommends use >>>>> of CBR [0] (with or without filler depending on application needs [1]) >>>>> rather than >>>>> using VBR for low latency applications. >>>>> >>>>> Also FWIW, we don't set enableFillerDataInsertion for CBR on H.264 and HEVC, >>>>> so those will dip below the target bitrate in CBR mode while AV1 will not. >>>> >>>> We probably should really. In the past outputBufferingPeriodSEI >>>> controlled this in some weird way. >>>> >>>> The expectation of CBR by default should be to be actually constant no >>>> matter what. >>>> >>>> I just don't know what actual role the buffering period SEI plays this >>>> day, with the new option now existing. >>>> >>>> If you like you can add the same logic for that flag as well. >>>> >>>> I'd also prefer this to be called strict_cbr or cbr_padding or >>>> something, to make it obvious what it relates to. >>> >>> To ensure I understand, you want the following: >>> 1. Rename the filler_data option in this patch to strict_cbr (keeping >>> the default value of 1) >> >> Yes, definitely keep it enabled by default. >> I'm not too picky about the exact name, as long as it contains cbr. >> >> Might even slightly prefer cbr_padding, since it's more obvious to the >> common user what it does. >> > > Sounds good to me. > >>> 2. Change H.264 and HEVC to set enableFillerDataInsertion for CBR by >>> default and add strict_cbr option to those too >> >> Yes, or whatever the option ends up named. >> >>> 3. Don't set outputBufferingPeriodSEI = 1 unless filler data is also enabled >> >> That's what I'm not sure about. >> To my knowledge, and given that people stream to Twitch and other >> services with strict CBR requirements, h264 and hevc already produce >> strict CBR. >> >> I'd want the new option to toggle the strict CBR behaviour, and would >> need to investigate first what that implies. >> >> Might just be that filler data insertion is enabled by default there, >> but not for AV1. >> Or it's actually somehow related to the buffering period SEI. Since it's >> the only original user of the IS_CBR check. >> > > When looking through the older headers, I saw that > outputBufferingPeriodSEI used to have the following comment: > > "When set for following rateControlMode : NV_ENC_PARAMS_RC_CBR, > NV_ENC_PARAMS_RC_CBR_LOWDELAY_HQ, NV_ENC_PARAMS_RC_CBR_HQ, filler data > is inserted if needed to achieve HRD bitrate" > > However, this was removed starting in SDK 12.0. Since it's hard to say > what each driver version between SDK 9.1 and SDK 12.0 will do with a > mismatch between outputBufferingPeriodSEI and > enableFillerDataInsertion, I think it's probably safest to tie the > options together for now. Sounds good to me >> So for now, if you want to add the option for the other codecs to, just >> make it toggle the new flag. >> >> (And keep in mind that the oldest SDK still supported does not have that >> flag, so it'll need a feature guard) > > Thanks for the heads up. Looks like it was added in SDK 9.1. > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
prev parent reply other threads:[~2025-03-29 22:31 UTC|newest] Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top 2025-03-29 20:58 Cameron Gutman 2025-03-29 21:02 ` Timo Rothenpieler 2025-03-29 21:17 ` Cameron Gutman 2025-03-29 21:26 ` Timo Rothenpieler 2025-03-29 21:37 ` Cameron Gutman 2025-03-29 21:42 ` Timo Rothenpieler 2025-03-29 22:28 ` Cameron Gutman 2025-03-29 22:31 ` Timo Rothenpieler [this message]
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=33a6ba16-9f46-469d-a566-da854d1f84f6@rothenpieler.org \ --to=timo@rothenpieler.org \ --cc=aicommander@gmail.com \ --cc=ffmpeg-devel@ffmpeg.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel This inbox may be cloned and mirrored by anyone: git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \ ffmpegdev@gitmailbox.com public-inbox-index ffmpegdev Example config snippet for mirrors. AGPL code for this site: git clone https://public-inbox.org/public-inbox.git