Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
* [FFmpeg-devel] [PATCH 1/2] avcodec/libsvtav1: signal CPB properties through side data
@ 2022-03-27 18:02 Jan Ekström
  2022-03-27 18:02 ` [FFmpeg-devel] [PATCH 2/2] avcodec/libsvtav1: clean up unconditional override of avctx bit rate Jan Ekström
  0 siblings, 1 reply; 5+ messages in thread
From: Jan Ekström @ 2022-03-27 18:02 UTC (permalink / raw)
  To: ffmpeg-devel

This way values such as maxrate/bufsize can be utilized further
down the chain.

The libavcodec values are utilized instead of from the encoder
configuration struct since:

1) both utilize bits per second, so no loss of precision occured.
2) the struct defaults various values to nonzero - even though it
   is documented to be unused outside of bit rate based rate
   control modes.
---
 libavcodec/libsvtav1.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/libavcodec/libsvtav1.c b/libavcodec/libsvtav1.c
index 6cf280377e..d89fefdf4c 100644
--- a/libavcodec/libsvtav1.c
+++ b/libavcodec/libsvtav1.c
@@ -156,6 +156,9 @@ static int config_enc_params(EbSvtAv1EncConfiguration *param,
     SvtContext *svt_enc = avctx->priv_data;
     const AVPixFmtDescriptor *desc;
     AVDictionaryEntry *en = NULL;
+    AVCPBProperties *cpb_props = ff_add_cpb_side_data(avctx);
+    if (!cpb_props)
+        return AVERROR(ENOMEM);
 
     // Update param from options
 #if FF_API_SVTAV1_OPTS
@@ -191,6 +194,10 @@ static int config_enc_params(EbSvtAv1EncConfiguration *param,
         param->enable_adaptive_quantization = 0;
     }
 
+    cpb_props->buffer_size = avctx->rc_buffer_size;
+    cpb_props->max_bitrate = avctx->rc_max_rate;
+    cpb_props->avg_bitrate = avctx->bit_rate;;
+
 #if SVT_AV1_CHECK_VERSION(0, 9, 1)
     while ((en = av_dict_get(svt_enc->svtav1_opts, "", en, AV_DICT_IGNORE_SUFFIX))) {
         EbErrorType ret = svt_av1_enc_parse_parameter(param, en->key, en->value);
-- 
2.35.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".

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [FFmpeg-devel] [PATCH 2/2] avcodec/libsvtav1: clean up unconditional override of avctx bit rate
  2022-03-27 18:02 [FFmpeg-devel] [PATCH 1/2] avcodec/libsvtav1: signal CPB properties through side data Jan Ekström
@ 2022-03-27 18:02 ` Jan Ekström
  2022-03-29 13:09   ` lance.lmwang
  2022-03-30  2:20   ` James Almer
  0 siblings, 2 replies; 5+ messages in thread
From: Jan Ekström @ 2022-03-27 18:02 UTC (permalink / raw)
  To: ffmpeg-devel

This value is only documented to be utilized if rate control is
set to one of the bit rate based modes. These modes are not the
default and thus the wrapper itself configures a bit rate according
to the avctx if bit rate based encoding is requested, making the
relevant value already be set when relevant.
---
 libavcodec/libsvtav1.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/libavcodec/libsvtav1.c b/libavcodec/libsvtav1.c
index d89fefdf4c..fe0d100beb 100644
--- a/libavcodec/libsvtav1.c
+++ b/libavcodec/libsvtav1.c
@@ -271,7 +271,6 @@ static int config_enc_params(EbSvtAv1EncConfiguration *param,
         param->frame_rate_denominator = avctx->time_base.num * avctx->ticks_per_frame;
     }
 
-    avctx->bit_rate                 = param->target_bit_rate;
     if (avctx->bit_rate) {
         param->max_qp_allowed       = avctx->qmax;
         param->min_qp_allowed       = avctx->qmin;
-- 
2.35.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".

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [FFmpeg-devel] [PATCH 2/2] avcodec/libsvtav1: clean up unconditional override of avctx bit rate
  2022-03-27 18:02 ` [FFmpeg-devel] [PATCH 2/2] avcodec/libsvtav1: clean up unconditional override of avctx bit rate Jan Ekström
@ 2022-03-29 13:09   ` lance.lmwang
  2022-03-30  2:20   ` James Almer
  1 sibling, 0 replies; 5+ messages in thread
From: lance.lmwang @ 2022-03-29 13:09 UTC (permalink / raw)
  To: ffmpeg-devel

On Sun, Mar 27, 2022 at 09:02:11PM +0300, Jan Ekström wrote:
> This value is only documented to be utilized if rate control is
> set to one of the bit rate based modes. These modes are not the
> default and thus the wrapper itself configures a bit rate according
> to the avctx if bit rate based encoding is requested, making the
> relevant value already be set when relevant.
> ---
>  libavcodec/libsvtav1.c | 1 -
>  1 file changed, 1 deletion(-)
> 
> diff --git a/libavcodec/libsvtav1.c b/libavcodec/libsvtav1.c
> index d89fefdf4c..fe0d100beb 100644
> --- a/libavcodec/libsvtav1.c
> +++ b/libavcodec/libsvtav1.c
> @@ -271,7 +271,6 @@ static int config_enc_params(EbSvtAv1EncConfiguration *param,
>          param->frame_rate_denominator = avctx->time_base.num * avctx->ticks_per_frame;
>      }
>  
> -    avctx->bit_rate                 = param->target_bit_rate;
>      if (avctx->bit_rate) {
>          param->max_qp_allowed       = avctx->qmax;
>          param->min_qp_allowed       = avctx->qmin;
> -- 
> 2.35.1

The patch set is LGTM

> 
> _______________________________________________
> 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".

-- 
Thanks,
Limin Wang
_______________________________________________
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".

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [FFmpeg-devel] [PATCH 2/2] avcodec/libsvtav1: clean up unconditional override of avctx bit rate
  2022-03-27 18:02 ` [FFmpeg-devel] [PATCH 2/2] avcodec/libsvtav1: clean up unconditional override of avctx bit rate Jan Ekström
  2022-03-29 13:09   ` lance.lmwang
@ 2022-03-30  2:20   ` James Almer
  2022-03-30  9:36     ` Jan Ekström
  1 sibling, 1 reply; 5+ messages in thread
From: James Almer @ 2022-03-30  2:20 UTC (permalink / raw)
  To: ffmpeg-devel

On 3/27/2022 3:02 PM, Jan Ekström wrote:
> This value is only documented to be utilized if rate control is
> set to one of the bit rate based modes. These modes are not the
> default and thus the wrapper itself configures a bit rate according
> to the avctx if bit rate based encoding is requested, making the
> relevant value already be set when relevant.

You can pass about anything with svtav1-params, which can change 
param->target_bit_rate. It's better to reflect that in the AVCodecContext.

> ---
>   libavcodec/libsvtav1.c | 1 -
>   1 file changed, 1 deletion(-)
> 
> diff --git a/libavcodec/libsvtav1.c b/libavcodec/libsvtav1.c
> index d89fefdf4c..fe0d100beb 100644
> --- a/libavcodec/libsvtav1.c
> +++ b/libavcodec/libsvtav1.c
> @@ -271,7 +271,6 @@ static int config_enc_params(EbSvtAv1EncConfiguration *param,
>           param->frame_rate_denominator = avctx->time_base.num * avctx->ticks_per_frame;
>       }
>   
> -    avctx->bit_rate                 = param->target_bit_rate;
>       if (avctx->bit_rate) {
>           param->max_qp_allowed       = avctx->qmax;
>           param->min_qp_allowed       = avctx->qmin;
_______________________________________________
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".

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [FFmpeg-devel] [PATCH 2/2] avcodec/libsvtav1: clean up unconditional override of avctx bit rate
  2022-03-30  2:20   ` James Almer
@ 2022-03-30  9:36     ` Jan Ekström
  0 siblings, 0 replies; 5+ messages in thread
From: Jan Ekström @ 2022-03-30  9:36 UTC (permalink / raw)
  To: FFmpeg development discussions and patches

On Wed, Mar 30, 2022 at 5:21 AM James Almer <jamrial@gmail.com> wrote:
>
> On 3/27/2022 3:02 PM, Jan Ekström wrote:
> > This value is only documented to be utilized if rate control is
> > set to one of the bit rate based modes. These modes are not the
> > default and thus the wrapper itself configures a bit rate according
> > to the avctx if bit rate based encoding is requested, making the
> > relevant value already be set when relevant.
>
> You can pass about anything with svtav1-params, which can change
> param->target_bit_rate. It's better to reflect that in the AVCodecContext.
>

Yea, of course then you need to put it under if
(param->rate_control_mode > 0) since the bit rate value by default is
not unset but 2mbps, and thus you need to only apply the value IFF bit
rate based rate control is utilized.

Since that is what removing this override was fixing, you would get a
bit rate value of 2mbps even though that was not utilized nor set by
anything (other than being the default).

Jan
_______________________________________________
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".

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2022-03-30  9:36 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-27 18:02 [FFmpeg-devel] [PATCH 1/2] avcodec/libsvtav1: signal CPB properties through side data Jan Ekström
2022-03-27 18:02 ` [FFmpeg-devel] [PATCH 2/2] avcodec/libsvtav1: clean up unconditional override of avctx bit rate Jan Ekström
2022-03-29 13:09   ` lance.lmwang
2022-03-30  2:20   ` James Almer
2022-03-30  9:36     ` Jan Ekström

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