[FFmpeg-devel] [PATCH] ffmpeg: default hwaccel_output_format to cuda when hwaccel is cuvid

James Almer jamrial at gmail.com
Sat Mar 7 00:17:59 EET 2020


On 3/6/2020 11:45 AM, James Almer wrote:
> On 3/6/2020 10:35 AM, Timo Rothenpieler wrote:
>> This ensures old commandlines using -hwaccel cuvid don't break due to
>> the recent removal of the the cuvid-specific hwaccel bringup.
>> ---
>>  fftools/ffmpeg_opt.c | 26 ++++++++++++++------------
>>  1 file changed, 14 insertions(+), 12 deletions(-)
>>
>> diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c
>> index 1b721c4954..c8fe263730 100644
>> --- a/fftools/ffmpeg_opt.c
>> +++ b/fftools/ffmpeg_opt.c
>> @@ -816,6 +816,20 @@ static void add_input_streams(OptionsContext *o, AVFormatContext *ic)
>>              ist->top_field_first = -1;
>>              MATCH_PER_STREAM_OPT(top_field_first, i, ist->top_field_first, ic, st);
>>  
>> +            MATCH_PER_STREAM_OPT(hwaccel_output_formats, str,
>> +                                 hwaccel_output_format, ic, st);
>> +            if (!hwaccel_output_format && hwaccel && !strcmp(hwaccel, "cuvid")) {
> 
> Isn't hwaccel first set in the MATCH_PER_STREAM_OPT() call bellow?

This change also needs both a code comment explaining why it's being
done, and a log message informing the CLI user a hardware pix_fmt is
forcefully being chosen for backwards compat reasons, that it's
deprecated behavior, and that it will stop working after a while.

> 
>> +                ist->hwaccel_output_format = AV_PIX_FMT_CUDA;
>> +            } else if (hwaccel_output_format) {
>> +                ist->hwaccel_output_format = av_get_pix_fmt(hwaccel_output_format);
>> +                if (ist->hwaccel_output_format == AV_PIX_FMT_NONE) {
>> +                    av_log(NULL, AV_LOG_FATAL, "Unrecognised hwaccel output "
>> +                           "format: %s", hwaccel_output_format);
>> +                }
>> +            } else {
>> +                ist->hwaccel_output_format = AV_PIX_FMT_NONE;
>> +            }
>> +
>>              MATCH_PER_STREAM_OPT(hwaccels, str, hwaccel, ic, st);
>>              if (hwaccel) {
>>                  // The NVDEC hwaccels use a CUDA device, so remap the name here.
>> @@ -868,18 +882,6 @@ static void add_input_streams(OptionsContext *o, AVFormatContext *ic)
>>                      exit_program(1);
>>              }
>>  
>> -            MATCH_PER_STREAM_OPT(hwaccel_output_formats, str,
>> -                                 hwaccel_output_format, ic, st);
>> -            if (hwaccel_output_format) {
>> -                ist->hwaccel_output_format = av_get_pix_fmt(hwaccel_output_format);
>> -                if (ist->hwaccel_output_format == AV_PIX_FMT_NONE) {
>> -                    av_log(NULL, AV_LOG_FATAL, "Unrecognised hwaccel output "
>> -                           "format: %s", hwaccel_output_format);
>> -                }
>> -            } else {
>> -                ist->hwaccel_output_format = AV_PIX_FMT_NONE;
>> -            }
>> -
>>              ist->hwaccel_pix_fmt = AV_PIX_FMT_NONE;
>>  
>>              break;
>>
> 



More information about the ffmpeg-devel mailing list