[FFmpeg-devel] [PATCH 1/2] ffplay: add -scaling_quality option for SDL

Marton Balint cus at passwd.hu
Mon Jun 10 22:04:05 EEST 2024



On Tue, 4 Jun 2024, Ramiro Polla wrote:

> On Thu, May 30, 2024 at 11:36 PM Ramiro Polla <ramiro.polla at gmail.com> wrote:
>>
>> ---
>>  doc/ffplay.texi  | 2 ++
>>  fftools/ffplay.c | 6 +++++-
>>  2 files changed, 7 insertions(+), 1 deletion(-)
>>
>> diff --git a/doc/ffplay.texi b/doc/ffplay.texi
>> index 93f77eeece..60f883e159 100644
>> --- a/doc/ffplay.texi
>> +++ b/doc/ffplay.texi
>> @@ -72,6 +72,8 @@ as 100.
>>  Force format.
>>  @item -window_title @var{title}
>>  Set window title (default is the input filename).
>> + at item -scaling_quality @var{value}
>> +Set SDL_HINT_RENDER_SCALE_QUALITY value (default is "linear").
>>  @item -left @var{title}
>>  Set the x position for the left of the window (default is a centered window).
>>  @item -top @var{title}
>> diff --git a/fftools/ffplay.c b/fftools/ffplay.c
>> index b9d11eecee..75d2bec777 100644
>> --- a/fftools/ffplay.c
>> +++ b/fftools/ffplay.c
>> @@ -351,6 +351,7 @@ static int filter_nbthreads = 0;
>>  static int enable_vulkan = 0;
>>  static char *vulkan_params = NULL;
>>  static const char *hwaccel = NULL;
>> +static const char *scaling_quality = NULL;
>>
>>  /* current context */
>>  static int is_full_screen;
>> @@ -3683,6 +3684,7 @@ static const OptionDef options[] = {
>>      { "framedrop",          OPT_TYPE_BOOL,   OPT_EXPERT, { &framedrop }, "drop frames when cpu is too slow", "" },
>>      { "infbuf",             OPT_TYPE_BOOL,   OPT_EXPERT, { &infinite_buffer }, "don't limit the input buffer size (useful with realtime streams)", "" },
>>      { "window_title",       OPT_TYPE_STRING,          0, { &window_title }, "set window title", "window title" },
>> +    { "scaling_quality",    OPT_TYPE_STRING, OPT_EXPERT, { &scaling_quality }, "set SDL_HINT_RENDER_SCALE_QUALITY value (default=linear)", "value" },
>>      { "left",               OPT_TYPE_INT,    OPT_EXPERT, { &screen_left }, "set the x position for the left of the window", "x pos" },
>>      { "top",                OPT_TYPE_INT,    OPT_EXPERT, { &screen_top }, "set the y position for the top of the window", "y pos" },
>>      { "vf",                 OPT_TYPE_FUNC, OPT_FUNC_ARG | OPT_EXPERT, { .func_arg = opt_add_vfilter }, "set video filters", "filter_graph" },
>> @@ -3831,7 +3833,9 @@ int main(int argc, char **argv)
>>              }
>>          }
>>          window = SDL_CreateWindow(program_name, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, default_width, default_height, flags);
>> -        SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "linear");
>> +        if (!scaling_quality)
>> +            scaling_quality = "linear";
>> +        SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, scaling_quality);
>>          if (!window) {
>>              av_log(NULL, AV_LOG_FATAL, "Failed to create window: %s", SDL_GetError());
>>              do_exit(NULL);
>> --
>> 2.39.2
>>
>
> Can anyone comment on this? I had a few doubts on this patch:
> - does the option name properly convey its functionality?
> - is the documentation too terse?
> - should we include the accepted values in the documentation, even
> though they are sdl-specific?

What is the benefit of having such option? I don't really see a strong use 
case for it. Also you want to propagate the scaling quality to placebo 
backend as well? Does it acutally make sense to do that?

Thanks,
Marton


More information about the ffmpeg-devel mailing list