diff mbox series

[FFmpeg-devel] lavc/qsvenc: Set default bitrate to 2M

Message ID 20231205081511.2794166-1-haihao.xiang@intel.com
State New
Headers show
Series [FFmpeg-devel] lavc/qsvenc: Set default bitrate to 2M | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

Xiang, Haihao Dec. 5, 2023, 8:15 a.m. UTC
From: Haihao Xiang <haihao.xiang@intel.com>

2M is suitable for more cases, e.g. 4K video.

Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
---
 libavcodec/qsvenc_av1.c   | 2 +-
 libavcodec/qsvenc_h264.c  | 2 +-
 libavcodec/qsvenc_hevc.c  | 2 +-
 libavcodec/qsvenc_mpeg2.c | 2 +-
 libavcodec/qsvenc_vp9.c   | 2 +-
 5 files changed, 5 insertions(+), 5 deletions(-)

Comments

Timo Rothenpieler Dec. 5, 2023, 11:47 a.m. UTC | #1
On 05.12.2023 09:15, Xiang, Haihao wrote:
> From: Haihao Xiang <haihao.xiang@intel.com>
> 
> 2M is suitable for more cases, e.g. 4K video.
> 
> Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
> ---
>   libavcodec/qsvenc_av1.c   | 2 +-
>   libavcodec/qsvenc_h264.c  | 2 +-
>   libavcodec/qsvenc_hevc.c  | 2 +-
>   libavcodec/qsvenc_mpeg2.c | 2 +-
>   libavcodec/qsvenc_vp9.c   | 2 +-
>   5 files changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/libavcodec/qsvenc_av1.c b/libavcodec/qsvenc_av1.c
> index c697845d7b..78c92c1844 100644
> --- a/libavcodec/qsvenc_av1.c
> +++ b/libavcodec/qsvenc_av1.c
> @@ -129,7 +129,7 @@ static const AVClass class = {
>   };
>   
>   static const FFCodecDefault qsv_enc_defaults[] = {
> -    { "b",         "1M"   },
> +    { "b",         "2M"   },

Wouldn't it be better to use a constant quality option as default, 
rather than a fixed bitrate?
2M still seems incredibly low for 1080p, let alone for 4K content.

>       { "g",         "-1"   },
>       { "bf",        "-1"   },
>       { "refs",      "0"    },
> diff --git a/libavcodec/qsvenc_h264.c b/libavcodec/qsvenc_h264.c
> index 071a9a79e9..37b39cb441 100644
> --- a/libavcodec/qsvenc_h264.c
> +++ b/libavcodec/qsvenc_h264.c
> @@ -178,7 +178,7 @@ static const AVClass class = {
>   };
>   
>   static const FFCodecDefault qsv_enc_defaults[] = {
> -    { "b",         "1M"    },
> +    { "b",         "2M"    },
>       { "refs",      "0"     },
>       { "g",         "-1"    },
>       { "bf",        "-1"    },
> diff --git a/libavcodec/qsvenc_hevc.c b/libavcodec/qsvenc_hevc.c
> index c5b7ac7cc4..181d06cb00 100644
> --- a/libavcodec/qsvenc_hevc.c
> +++ b/libavcodec/qsvenc_hevc.c
> @@ -374,7 +374,7 @@ static const AVClass class = {
>   };
>   
>   static const FFCodecDefault qsv_enc_defaults[] = {
> -    { "b",         "1M"    },
> +    { "b",         "2M"    },
>       { "refs",      "0"     },
>       { "g",         "248"   },
>       { "bf",        "-1"    },
> diff --git a/libavcodec/qsvenc_mpeg2.c b/libavcodec/qsvenc_mpeg2.c
> index 22f1ff7c0d..012cec3a58 100644
> --- a/libavcodec/qsvenc_mpeg2.c
> +++ b/libavcodec/qsvenc_mpeg2.c
> @@ -82,7 +82,7 @@ static const AVClass class = {
>   };
>   
>   static const FFCodecDefault qsv_enc_defaults[] = {
> -    { "b",         "1M"    },
> +    { "b",         "2M"    },
>       { "refs",      "0"     },
>       // same as the x264 default
>       { "g",         "250"   },
> diff --git a/libavcodec/qsvenc_vp9.c b/libavcodec/qsvenc_vp9.c
> index d0340ef94b..8658b8ec2d 100644
> --- a/libavcodec/qsvenc_vp9.c
> +++ b/libavcodec/qsvenc_vp9.c
> @@ -93,7 +93,7 @@ static const AVClass class = {
>   };
>   
>   static const FFCodecDefault qsv_enc_defaults[] = {
> -    { "b",         "1M"    },
> +    { "b",         "2M"    },
>       { "refs",      "0"     },
>       { "g",         "250"   },
>       { "trellis",   "-1"    },
Xiang, Haihao Dec. 6, 2023, 6:51 a.m. UTC | #2
On Di, 2023-12-05 at 12:47 +0100, Timo Rothenpieler wrote:
> On 05.12.2023 09:15, Xiang, Haihao wrote:
> > From: Haihao Xiang <haihao.xiang@intel.com>
> > 
> > 2M is suitable for more cases, e.g. 4K video.
> > 
> > Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
> > ---
> >   libavcodec/qsvenc_av1.c   | 2 +-
> >   libavcodec/qsvenc_h264.c  | 2 +-
> >   libavcodec/qsvenc_hevc.c  | 2 +-
> >   libavcodec/qsvenc_mpeg2.c | 2 +-
> >   libavcodec/qsvenc_vp9.c   | 2 +-
> >   5 files changed, 5 insertions(+), 5 deletions(-)
> > 
> > diff --git a/libavcodec/qsvenc_av1.c b/libavcodec/qsvenc_av1.c
> > index c697845d7b..78c92c1844 100644
> > --- a/libavcodec/qsvenc_av1.c
> > +++ b/libavcodec/qsvenc_av1.c
> > @@ -129,7 +129,7 @@ static const AVClass class = {
> >   };
> >   
> >   static const FFCodecDefault qsv_enc_defaults[] = {
> > -    { "b",         "1M"   },
> > +    { "b",         "2M"   },
> 
> Wouldn't it be better to use a constant quality option as default, 
> rather than a fixed bitrate?

Did you mean change the default bitrate control mode to CQP ? I was concerned
about the impact to current users.

> 2M still seems incredibly low for 1080p, let alone for 4K content.

Some other HW encoders also use 2M, I'd like to use the same default value. 

Thanks
Haihao

> 
> >       { "g",         "-1"   },
> >       { "bf",        "-1"   },
> >       { "refs",      "0"    },
> > diff --git a/libavcodec/qsvenc_h264.c b/libavcodec/qsvenc_h264.c
> > index 071a9a79e9..37b39cb441 100644
> > --- a/libavcodec/qsvenc_h264.c
> > +++ b/libavcodec/qsvenc_h264.c
> > @@ -178,7 +178,7 @@ static const AVClass class = {
> >   };
> >   
> >   static const FFCodecDefault qsv_enc_defaults[] = {
> > -    { "b",         "1M"    },
> > +    { "b",         "2M"    },
> >       { "refs",      "0"     },
> >       { "g",         "-1"    },
> >       { "bf",        "-1"    },
> > diff --git a/libavcodec/qsvenc_hevc.c b/libavcodec/qsvenc_hevc.c
> > index c5b7ac7cc4..181d06cb00 100644
> > --- a/libavcodec/qsvenc_hevc.c
> > +++ b/libavcodec/qsvenc_hevc.c
> > @@ -374,7 +374,7 @@ static const AVClass class = {
> >   };
> >   
> >   static const FFCodecDefault qsv_enc_defaults[] = {
> > -    { "b",         "1M"    },
> > +    { "b",         "2M"    },
> >       { "refs",      "0"     },
> >       { "g",         "248"   },
> >       { "bf",        "-1"    },
> > diff --git a/libavcodec/qsvenc_mpeg2.c b/libavcodec/qsvenc_mpeg2.c
> > index 22f1ff7c0d..012cec3a58 100644
> > --- a/libavcodec/qsvenc_mpeg2.c
> > +++ b/libavcodec/qsvenc_mpeg2.c
> > @@ -82,7 +82,7 @@ static const AVClass class = {
> >   };
> >   
> >   static const FFCodecDefault qsv_enc_defaults[] = {
> > -    { "b",         "1M"    },
> > +    { "b",         "2M"    },
> >       { "refs",      "0"     },
> >       // same as the x264 default
> >       { "g",         "250"   },
> > diff --git a/libavcodec/qsvenc_vp9.c b/libavcodec/qsvenc_vp9.c
> > index d0340ef94b..8658b8ec2d 100644
> > --- a/libavcodec/qsvenc_vp9.c
> > +++ b/libavcodec/qsvenc_vp9.c
> > @@ -93,7 +93,7 @@ static const AVClass class = {
> >   };
> >   
> >   static const FFCodecDefault qsv_enc_defaults[] = {
> > -    { "b",         "1M"    },
> > +    { "b",         "2M"    },
> >       { "refs",      "0"     },
> >       { "g",         "250"   },
> >       { "trellis",   "-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".
Timo Rothenpieler Dec. 6, 2023, 12:26 p.m. UTC | #3
On 06/12/2023 07:51, Xiang, Haihao wrote:
> On Di, 2023-12-05 at 12:47 +0100, Timo Rothenpieler wrote:
>> On 05.12.2023 09:15, Xiang, Haihao wrote:
>>> From: Haihao Xiang <haihao.xiang@intel.com>
>>>
>>> 2M is suitable for more cases, e.g. 4K video.
>>>
>>> Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
>>> ---
>>>    libavcodec/qsvenc_av1.c   | 2 +-
>>>    libavcodec/qsvenc_h264.c  | 2 +-
>>>    libavcodec/qsvenc_hevc.c  | 2 +-
>>>    libavcodec/qsvenc_mpeg2.c | 2 +-
>>>    libavcodec/qsvenc_vp9.c   | 2 +-
>>>    5 files changed, 5 insertions(+), 5 deletions(-)
>>>
>>> diff --git a/libavcodec/qsvenc_av1.c b/libavcodec/qsvenc_av1.c
>>> index c697845d7b..78c92c1844 100644
>>> --- a/libavcodec/qsvenc_av1.c
>>> +++ b/libavcodec/qsvenc_av1.c
>>> @@ -129,7 +129,7 @@ static const AVClass class = {
>>>    };
>>>    
>>>    static const FFCodecDefault qsv_enc_defaults[] = {
>>> -    { "b",         "1M"   },
>>> +    { "b",         "2M"   },
>>
>> Wouldn't it be better to use a constant quality option as default,
>> rather than a fixed bitrate?
> 
> Did you mean change the default bitrate control mode to CQP ? I was concerned
> about the impact to current users.

Yeah, it's technically a breaking change.
Though at least libx264 also at some point changed its default to a 
reasonable medium quality crf mode, away from a fixed, rather low, bitrate.
Not sure if that was done on a major bump, or if it was considered low 
impact enough to just push out.

>> 2M still seems incredibly low for 1080p, let alone for 4K content.
> 
> Some other HW encoders also use 2M, I'd like to use the same default value.

It's probably worth considering switching those to a crf equivalent as 
well, where possible.
It matches much more what a typical user would expect if they input a 
commandline with no further options.

> Thanks
> Haihao
> 
>>
>>>        { "g",         "-1"   },
>>>        { "bf",        "-1"   },
>>>        { "refs",      "0"    },
>>> diff --git a/libavcodec/qsvenc_h264.c b/libavcodec/qsvenc_h264.c
>>> index 071a9a79e9..37b39cb441 100644
>>> --- a/libavcodec/qsvenc_h264.c
>>> +++ b/libavcodec/qsvenc_h264.c
>>> @@ -178,7 +178,7 @@ static const AVClass class = {
>>>    };
>>>    
>>>    static const FFCodecDefault qsv_enc_defaults[] = {
>>> -    { "b",         "1M"    },
>>> +    { "b",         "2M"    },
>>>        { "refs",      "0"     },
>>>        { "g",         "-1"    },
>>>        { "bf",        "-1"    },
>>> diff --git a/libavcodec/qsvenc_hevc.c b/libavcodec/qsvenc_hevc.c
>>> index c5b7ac7cc4..181d06cb00 100644
>>> --- a/libavcodec/qsvenc_hevc.c
>>> +++ b/libavcodec/qsvenc_hevc.c
>>> @@ -374,7 +374,7 @@ static const AVClass class = {
>>>    };
>>>    
>>>    static const FFCodecDefault qsv_enc_defaults[] = {
>>> -    { "b",         "1M"    },
>>> +    { "b",         "2M"    },
>>>        { "refs",      "0"     },
>>>        { "g",         "248"   },
>>>        { "bf",        "-1"    },
>>> diff --git a/libavcodec/qsvenc_mpeg2.c b/libavcodec/qsvenc_mpeg2.c
>>> index 22f1ff7c0d..012cec3a58 100644
>>> --- a/libavcodec/qsvenc_mpeg2.c
>>> +++ b/libavcodec/qsvenc_mpeg2.c
>>> @@ -82,7 +82,7 @@ static const AVClass class = {
>>>    };
>>>    
>>>    static const FFCodecDefault qsv_enc_defaults[] = {
>>> -    { "b",         "1M"    },
>>> +    { "b",         "2M"    },
>>>        { "refs",      "0"     },
>>>        // same as the x264 default
>>>        { "g",         "250"   },
>>> diff --git a/libavcodec/qsvenc_vp9.c b/libavcodec/qsvenc_vp9.c
>>> index d0340ef94b..8658b8ec2d 100644
>>> --- a/libavcodec/qsvenc_vp9.c
>>> +++ b/libavcodec/qsvenc_vp9.c
>>> @@ -93,7 +93,7 @@ static const AVClass class = {
>>>    };
>>>    
>>>    static const FFCodecDefault qsv_enc_defaults[] = {
>>> -    { "b",         "1M"    },
>>> +    { "b",         "2M"    },
>>>        { "refs",      "0"     },
>>>        { "g",         "250"   },
>>>        { "trellis",   "-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".
> 
> _______________________________________________
> 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".
Zhao Zhili Dec. 6, 2023, 1:04 p.m. UTC | #4
> On Dec 6, 2023, at 20:26, Timo Rothenpieler <timo@rothenpieler.org> wrote:
> 
> On 06/12/2023 07:51, Xiang, Haihao wrote:
>> On Di, 2023-12-05 at 12:47 +0100, Timo Rothenpieler wrote:
>>> On 05.12.2023 09:15, Xiang, Haihao wrote:
>>>> From: Haihao Xiang <haihao.xiang@intel.com>
>>>> 
>>>> 2M is suitable for more cases, e.g. 4K video.
>>>> 
>>>> Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
>>>> ---
>>>>   libavcodec/qsvenc_av1.c   | 2 +-
>>>>   libavcodec/qsvenc_h264.c  | 2 +-
>>>>   libavcodec/qsvenc_hevc.c  | 2 +-
>>>>   libavcodec/qsvenc_mpeg2.c | 2 +-
>>>>   libavcodec/qsvenc_vp9.c   | 2 +-
>>>>   5 files changed, 5 insertions(+), 5 deletions(-)
>>>> 
>>>> diff --git a/libavcodec/qsvenc_av1.c b/libavcodec/qsvenc_av1.c
>>>> index c697845d7b..78c92c1844 100644
>>>> --- a/libavcodec/qsvenc_av1.c
>>>> +++ b/libavcodec/qsvenc_av1.c
>>>> @@ -129,7 +129,7 @@ static const AVClass class = {
>>>>   };
>>>>      static const FFCodecDefault qsv_enc_defaults[] = {
>>>> -    { "b",         "1M"   },
>>>> +    { "b",         "2M"   },
>>> 
>>> Wouldn't it be better to use a constant quality option as default,
>>> rather than a fixed bitrate?
>> Did you mean change the default bitrate control mode to CQP ? I was concerned
>> about the impact to current users.
> 
> Yeah, it's technically a breaking change.
> Though at least libx264 also at some point changed its default to a reasonable medium quality crf mode, away from a fixed, rather low, bitrate.
> Not sure if that was done on a major bump, or if it was considered low impact enough to just push out.
> 
>>> 2M still seems incredibly low for 1080p, let alone for 4K content.
>> Some other HW encoders also use 2M, I'd like to use the same default value.
> 
> It's probably worth considering switching those to a crf equivalent as well, where possible.
> It matches much more what a typical user would expect if they input a commandline with no further options.

Without a strategy to adapt to different needs automatically like crf, I prefer error out than
a default bitrate TBH. Of course we cannot do that now since it will suddenly  break current
use cases. How about set default bitrate to zero, then add a warning message if user don’t
change it, then set bitrate to any default/heuristics value?

> 
>> Thanks
>> Haihao
>>> 
>>>>       { "g",         "-1"   },
>>>>       { "bf",        "-1"   },
>>>>       { "refs",      "0"    },
>>>> diff --git a/libavcodec/qsvenc_h264.c b/libavcodec/qsvenc_h264.c
>>>> index 071a9a79e9..37b39cb441 100644
>>>> --- a/libavcodec/qsvenc_h264.c
>>>> +++ b/libavcodec/qsvenc_h264.c
>>>> @@ -178,7 +178,7 @@ static const AVClass class = {
>>>>   };
>>>>      static const FFCodecDefault qsv_enc_defaults[] = {
>>>> -    { "b",         "1M"    },
>>>> +    { "b",         "2M"    },
>>>>       { "refs",      "0"     },
>>>>       { "g",         "-1"    },
>>>>       { "bf",        "-1"    },
>>>> diff --git a/libavcodec/qsvenc_hevc.c b/libavcodec/qsvenc_hevc.c
>>>> index c5b7ac7cc4..181d06cb00 100644
>>>> --- a/libavcodec/qsvenc_hevc.c
>>>> +++ b/libavcodec/qsvenc_hevc.c
>>>> @@ -374,7 +374,7 @@ static const AVClass class = {
>>>>   };
>>>>      static const FFCodecDefault qsv_enc_defaults[] = {
>>>> -    { "b",         "1M"    },
>>>> +    { "b",         "2M"    },
>>>>       { "refs",      "0"     },
>>>>       { "g",         "248"   },
>>>>       { "bf",        "-1"    },
>>>> diff --git a/libavcodec/qsvenc_mpeg2.c b/libavcodec/qsvenc_mpeg2.c
>>>> index 22f1ff7c0d..012cec3a58 100644
>>>> --- a/libavcodec/qsvenc_mpeg2.c
>>>> +++ b/libavcodec/qsvenc_mpeg2.c
>>>> @@ -82,7 +82,7 @@ static const AVClass class = {
>>>>   };
>>>>      static const FFCodecDefault qsv_enc_defaults[] = {
>>>> -    { "b",         "1M"    },
>>>> +    { "b",         "2M"    },
>>>>       { "refs",      "0"     },
>>>>       // same as the x264 default
>>>>       { "g",         "250"   },
>>>> diff --git a/libavcodec/qsvenc_vp9.c b/libavcodec/qsvenc_vp9.c
>>>> index d0340ef94b..8658b8ec2d 100644
>>>> --- a/libavcodec/qsvenc_vp9.c
>>>> +++ b/libavcodec/qsvenc_vp9.c
>>>> @@ -93,7 +93,7 @@ static const AVClass class = {
>>>>   };
>>>>      static const FFCodecDefault qsv_enc_defaults[] = {
>>>> -    { "b",         "1M"    },
>>>> +    { "b",         "2M"    },
>>>>       { "refs",      "0"     },
>>>>       { "g",         "250"   },
>>>>       { "trellis",   "-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".
>> _______________________________________________
>> 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".
> _______________________________________________
> 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".
Anton Khirnov Dec. 7, 2023, 4:59 p.m. UTC | #5
Quoting Timo Rothenpieler (2023-12-06 13:26:51)
> On 06/12/2023 07:51, Xiang, Haihao wrote:
> > On Di, 2023-12-05 at 12:47 +0100, Timo Rothenpieler wrote:
> >> On 05.12.2023 09:15, Xiang, Haihao wrote:
> >>> From: Haihao Xiang <haihao.xiang@intel.com>
> >>>
> >>> 2M is suitable for more cases, e.g. 4K video.
> >>>
> >>> Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
> >>> ---
> >>>    libavcodec/qsvenc_av1.c   | 2 +-
> >>>    libavcodec/qsvenc_h264.c  | 2 +-
> >>>    libavcodec/qsvenc_hevc.c  | 2 +-
> >>>    libavcodec/qsvenc_mpeg2.c | 2 +-
> >>>    libavcodec/qsvenc_vp9.c   | 2 +-
> >>>    5 files changed, 5 insertions(+), 5 deletions(-)
> >>>
> >>> diff --git a/libavcodec/qsvenc_av1.c b/libavcodec/qsvenc_av1.c
> >>> index c697845d7b..78c92c1844 100644
> >>> --- a/libavcodec/qsvenc_av1.c
> >>> +++ b/libavcodec/qsvenc_av1.c
> >>> @@ -129,7 +129,7 @@ static const AVClass class = {
> >>>    };
> >>>    
> >>>    static const FFCodecDefault qsv_enc_defaults[] = {
> >>> -    { "b",         "1M"   },
> >>> +    { "b",         "2M"   },
> >>
> >> Wouldn't it be better to use a constant quality option as default,
> >> rather than a fixed bitrate?
> > 
> > Did you mean change the default bitrate control mode to CQP ? I was concerned
> > about the impact to current users.
> 
> Yeah, it's technically a breaking change.
> Though at least libx264 also at some point changed its default to a 
> reasonable medium quality crf mode, away from a fixed, rather low, bitrate.
> Not sure if that was done on a major bump, or if it was considered low 
> impact enough to just push out.

FYI we should have a major bump if the next few months (before 7.0).

So you could schedule the switch for then, ideally with a runtime
warning and perhaps a changelog entry.
Xiang, Haihao Dec. 18, 2023, 6:51 a.m. UTC | #6
On Do, 2023-12-07 at 17:59 +0100, Anton Khirnov wrote:
> Quoting Timo Rothenpieler (2023-12-06 13:26:51)
> > On 06/12/2023 07:51, Xiang, Haihao wrote:
> > > On Di, 2023-12-05 at 12:47 +0100, Timo Rothenpieler wrote:
> > > > On 05.12.2023 09:15, Xiang, Haihao wrote:
> > > > > From: Haihao Xiang <haihao.xiang@intel.com>
> > > > > 
> > > > > 2M is suitable for more cases, e.g. 4K video.
> > > > > 
> > > > > Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
> > > > > ---
> > > > >    libavcodec/qsvenc_av1.c   | 2 +-
> > > > >    libavcodec/qsvenc_h264.c  | 2 +-
> > > > >    libavcodec/qsvenc_hevc.c  | 2 +-
> > > > >    libavcodec/qsvenc_mpeg2.c | 2 +-
> > > > >    libavcodec/qsvenc_vp9.c   | 2 +-
> > > > >    5 files changed, 5 insertions(+), 5 deletions(-)
> > > > > 
> > > > > diff --git a/libavcodec/qsvenc_av1.c b/libavcodec/qsvenc_av1.c
> > > > > index c697845d7b..78c92c1844 100644
> > > > > --- a/libavcodec/qsvenc_av1.c
> > > > > +++ b/libavcodec/qsvenc_av1.c
> > > > > @@ -129,7 +129,7 @@ static const AVClass class = {
> > > > >    };
> > > > >    
> > > > >    static const FFCodecDefault qsv_enc_defaults[] = {
> > > > > -    { "b",         "1M"   },
> > > > > +    { "b",         "2M"   },
> > > > 
> > > > Wouldn't it be better to use a constant quality option as default,
> > > > rather than a fixed bitrate?
> > > 
> > > Did you mean change the default bitrate control mode to CQP ? I was
> > > concerned
> > > about the impact to current users.
> > 
> > Yeah, it's technically a breaking change.
> > Though at least libx264 also at some point changed its default to a 
> > reasonable medium quality crf mode, away from a fixed, rather low, bitrate.
> > Not sure if that was done on a major bump, or if it was considered low 
> > impact enough to just push out.
> 
> FYI we should have a major bump if the next few months (before 7.0).
> 
> So you could schedule the switch for then, ideally with a runtime
> warning and perhaps a changelog entry.

Thanks for the info, we'll try to change the default mode.

BRs
Haihao

>
Xiang, Haihao Feb. 8, 2024, 7:43 a.m. UTC | #7
On Ma, 2023-12-18 at 06:51 +0000, Xiang, Haihao wrote:
> On Do, 2023-12-07 at 17:59 +0100, Anton Khirnov wrote:
> > Quoting Timo Rothenpieler (2023-12-06 13:26:51)
> > > On 06/12/2023 07:51, Xiang, Haihao wrote:
> > > > On Di, 2023-12-05 at 12:47 +0100, Timo Rothenpieler wrote:
> > > > > On 05.12.2023 09:15, Xiang, Haihao wrote:
> > > > > > From: Haihao Xiang <haihao.xiang@intel.com>
> > > > > > 
> > > > > > 2M is suitable for more cases, e.g. 4K video.
> > > > > > 
> > > > > > Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
> > > > > > ---
> > > > > >    libavcodec/qsvenc_av1.c   | 2 +-
> > > > > >    libavcodec/qsvenc_h264.c  | 2 +-
> > > > > >    libavcodec/qsvenc_hevc.c  | 2 +-
> > > > > >    libavcodec/qsvenc_mpeg2.c | 2 +-
> > > > > >    libavcodec/qsvenc_vp9.c   | 2 +-
> > > > > >    5 files changed, 5 insertions(+), 5 deletions(-)
> > > > > > 
> > > > > > diff --git a/libavcodec/qsvenc_av1.c b/libavcodec/qsvenc_av1.c
> > > > > > index c697845d7b..78c92c1844 100644
> > > > > > --- a/libavcodec/qsvenc_av1.c
> > > > > > +++ b/libavcodec/qsvenc_av1.c
> > > > > > @@ -129,7 +129,7 @@ static const AVClass class = {
> > > > > >    };
> > > > > >    
> > > > > >    static const FFCodecDefault qsv_enc_defaults[] = {
> > > > > > -    { "b",         "1M"   },
> > > > > > +    { "b",         "2M"   },
> > > > > 
> > > > > Wouldn't it be better to use a constant quality option as default,
> > > > > rather than a fixed bitrate?
> > > > 
> > > > Did you mean change the default bitrate control mode to CQP ? I was
> > > > concerned
> > > > about the impact to current users.
> > > 
> > > Yeah, it's technically a breaking change.
> > > Though at least libx264 also at some point changed its default to a 
> > > reasonable medium quality crf mode, away from a fixed, rather low,
> > > bitrate.
> > > Not sure if that was done on a major bump, or if it was considered low 
> > > impact enough to just push out.
> > 
> > FYI we should have a major bump if the next few months (before 7.0).
> > 
> > So you could schedule the switch for then, ideally with a runtime
> > warning and perhaps a changelog entry.
> 
> Thanks for the info, we'll try to change the default mode.

See https://ffmpeg.org/pipermail/ffmpeg-devel/2024-February/321088.html

Thanks
Haihao
diff mbox series

Patch

diff --git a/libavcodec/qsvenc_av1.c b/libavcodec/qsvenc_av1.c
index c697845d7b..78c92c1844 100644
--- a/libavcodec/qsvenc_av1.c
+++ b/libavcodec/qsvenc_av1.c
@@ -129,7 +129,7 @@  static const AVClass class = {
 };
 
 static const FFCodecDefault qsv_enc_defaults[] = {
-    { "b",         "1M"   },
+    { "b",         "2M"   },
     { "g",         "-1"   },
     { "bf",        "-1"   },
     { "refs",      "0"    },
diff --git a/libavcodec/qsvenc_h264.c b/libavcodec/qsvenc_h264.c
index 071a9a79e9..37b39cb441 100644
--- a/libavcodec/qsvenc_h264.c
+++ b/libavcodec/qsvenc_h264.c
@@ -178,7 +178,7 @@  static const AVClass class = {
 };
 
 static const FFCodecDefault qsv_enc_defaults[] = {
-    { "b",         "1M"    },
+    { "b",         "2M"    },
     { "refs",      "0"     },
     { "g",         "-1"    },
     { "bf",        "-1"    },
diff --git a/libavcodec/qsvenc_hevc.c b/libavcodec/qsvenc_hevc.c
index c5b7ac7cc4..181d06cb00 100644
--- a/libavcodec/qsvenc_hevc.c
+++ b/libavcodec/qsvenc_hevc.c
@@ -374,7 +374,7 @@  static const AVClass class = {
 };
 
 static const FFCodecDefault qsv_enc_defaults[] = {
-    { "b",         "1M"    },
+    { "b",         "2M"    },
     { "refs",      "0"     },
     { "g",         "248"   },
     { "bf",        "-1"    },
diff --git a/libavcodec/qsvenc_mpeg2.c b/libavcodec/qsvenc_mpeg2.c
index 22f1ff7c0d..012cec3a58 100644
--- a/libavcodec/qsvenc_mpeg2.c
+++ b/libavcodec/qsvenc_mpeg2.c
@@ -82,7 +82,7 @@  static const AVClass class = {
 };
 
 static const FFCodecDefault qsv_enc_defaults[] = {
-    { "b",         "1M"    },
+    { "b",         "2M"    },
     { "refs",      "0"     },
     // same as the x264 default
     { "g",         "250"   },
diff --git a/libavcodec/qsvenc_vp9.c b/libavcodec/qsvenc_vp9.c
index d0340ef94b..8658b8ec2d 100644
--- a/libavcodec/qsvenc_vp9.c
+++ b/libavcodec/qsvenc_vp9.c
@@ -93,7 +93,7 @@  static const AVClass class = {
 };
 
 static const FFCodecDefault qsv_enc_defaults[] = {
-    { "b",         "1M"    },
+    { "b",         "2M"    },
     { "refs",      "0"     },
     { "g",         "250"   },
     { "trellis",   "-1"    },