Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
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".

      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