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

James Almer jamrial at gmail.com
Sat Mar 7 00:58:46 EET 2020


On 3/6/2020 7:42 PM, Timo Rothenpieler wrote:
> On 06.03.2020 23:39, James Almer wrote:
>> On 3/6/2020 7:35 PM, Timo Rothenpieler wrote:
>>> On 06.03.2020 23:17, James Almer wrote:
>>>> 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.
>>>
>>> It can still be overridden by the user, but yeah, a deprecation warning
>>> is probably in order.
>>> For both cuvid and nvdec actually.
>>
>> nvdec didn't default to the cuda pixfmt, afaik, so not necessary for
>> that one. Or you mean you want to deprecate the nvdec alias and keep
>> only "cuda"?
> 
> Yes, as seen on recent github threads, the multitude of different
> -hwaccel names, which do the exact same thing, causes great confusion.

Not sure if removing the nvdec alias is a good idea, considering the
lavc hwaccels are called like that.
If i configure ffmpeg with --enable-nvdec --enable-hwaccel=hevc_nvdec,
expecting a command line like -hwaccel nvdec to work is not outlandish.

How about making sure cuvid is a term left exclusively for the relevant
lavc hardware decoders, and nvdec for the relevant lavc hwaccels?
Although I'm not sure how the hardware based filters play into this.


More information about the ffmpeg-devel mailing list