diff mbox series

[FFmpeg-devel,1/2] fftools/ffplay: add missing YUV metadata to buffersrc

Message ID 20240110090547.69151-1-ffmpeg@haasn.xyz
State Accepted
Commit dcc7263b0e7935b6864e43465cfeca423bdf9e77
Headers show
Series [FFmpeg-devel,1/2] fftools/ffplay: add missing YUV metadata to buffersrc | 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

Niklas Haas Jan. 10, 2024, 9:05 a.m. UTC
From: Niklas Haas <git@haasn.dev>

Fixes error spam from the `ffplay` tool since commit 2d555dc82d, caused
by an oversight on my part - I didn't notice during development that
`ffplay` goes through its own filtering code path separate from
fftools/ffmpeg_filter.c
---
 fftools/ffplay.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Comments

Anton Khirnov Jan. 26, 2024, 9:36 a.m. UTC | #1
Quoting Niklas Haas (2024-01-10 10:05:46)
> From: Niklas Haas <git@haasn.dev>
> 
> Fixes error spam from the `ffplay` tool since commit 2d555dc82d, caused
> by an oversight on my part - I didn't notice during development that
> `ffplay` goes through its own filtering code path separate from
> fftools/ffmpeg_filter.c

Wouldn't the same issue affect any other caller?
Zhao Zhili Jan. 26, 2024, 10:17 a.m. UTC | #2
> On Jan 26, 2024, at 17:36, Anton Khirnov <anton@khirnov.net> wrote:
> 
> Quoting Niklas Haas (2024-01-10 10:05:46)
>> From: Niklas Haas <git@haasn.dev>
>> 
>> Fixes error spam from the `ffplay` tool since commit 2d555dc82d, caused
>> by an oversight on my part - I didn't notice during development that
>> `ffplay` goes through its own filtering code path separate from
>> fftools/ffmpeg_filter.c
> 
> Wouldn't the same issue affect any other caller?

Firstly, can avfilter support color range/space change from unspecified to a specified value
on the first frame? I think it should silent the log most of the cases.

Secondly, log once for non-serious case.

> 
> -- 
> Anton Khirnov
> _______________________________________________
> 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".
Niklas Haas Feb. 1, 2024, 12:52 p.m. UTC | #3
On Wed, 10 Jan 2024 10:05:46 +0100 Niklas Haas <ffmpeg@haasn.xyz> wrote:
> From: Niklas Haas <git@haasn.dev>
> 
> Fixes error spam from the `ffplay` tool since commit 2d555dc82d, caused
> by an oversight on my part - I didn't notice during development that
> `ffplay` goes through its own filtering code path separate from
> fftools/ffmpeg_filter.c
> ---
>  fftools/ffplay.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/fftools/ffplay.c b/fftools/ffplay.c
> index 17861e60be..0771326d76 100644
> --- a/fftools/ffplay.c
> +++ b/fftools/ffplay.c
> @@ -1881,10 +1881,12 @@ static int configure_video_filters(AVFilterGraph *graph, VideoState *is, const c
>      graph->scale_sws_opts = av_strdup(sws_flags_str);
>  
>      snprintf(buffersrc_args, sizeof(buffersrc_args),
> -             "video_size=%dx%d:pix_fmt=%d:time_base=%d/%d:pixel_aspect=%d/%d",
> +             "video_size=%dx%d:pix_fmt=%d:time_base=%d/%d:pixel_aspect=%d/%d:"
> +             "colorspace=%d:range=%d",
>               frame->width, frame->height, frame->format,
>               is->video_st->time_base.num, is->video_st->time_base.den,
> -             codecpar->sample_aspect_ratio.num, FFMAX(codecpar->sample_aspect_ratio.den, 1));
> +             codecpar->sample_aspect_ratio.num, FFMAX(codecpar->sample_aspect_ratio.den, 1),
> +             frame->colorspace, frame->color_range);
>      if (fr.num && fr.den)
>          av_strlcatf(buffersrc_args, sizeof(buffersrc_args), ":frame_rate=%d/%d", fr.num, fr.den);
>  
> -- 
> 2.43.0
> 

Will merge tomorrow if there is no further objection, especially as it
now affects https://trac.ffmpeg.org/ticket/10839
Niklas Haas Feb. 1, 2024, 1:10 p.m. UTC | #4
On Fri, 26 Jan 2024 18:17:30 +0800 Zhao Zhili <quinkblack@foxmail.com> wrote:
> 
> 
> > On Jan 26, 2024, at 17:36, Anton Khirnov <anton@khirnov.net> wrote:
> > 
> > Quoting Niklas Haas (2024-01-10 10:05:46)
> >> From: Niklas Haas <git@haasn.dev>
> >> 
> >> Fixes error spam from the `ffplay` tool since commit 2d555dc82d, caused
> >> by an oversight on my part - I didn't notice during development that
> >> `ffplay` goes through its own filtering code path separate from
> >> fftools/ffmpeg_filter.c
> > 
> > Wouldn't the same issue affect any other caller?
> 
> Firstly, can avfilter support color range/space change from unspecified to a specified value
> on the first frame? I think it should silent the log most of the cases.
> 
> Secondly, log once for non-serious case.

To clarify, commit 94422871fce3b90bebc95f5cae939fbbc4e33224 makes this
message drop from WARNING to DEBUG verbosity for subsequent print-outs.

So the error spam is no longer a major consideration, however it remains
that ffplay needs to set the correct metadata for YUV colorspace
negotiation to work inside the ffplay filter graph. (See the issue
I linked in my other mail)
diff mbox series

Patch

diff --git a/fftools/ffplay.c b/fftools/ffplay.c
index 17861e60be..0771326d76 100644
--- a/fftools/ffplay.c
+++ b/fftools/ffplay.c
@@ -1881,10 +1881,12 @@  static int configure_video_filters(AVFilterGraph *graph, VideoState *is, const c
     graph->scale_sws_opts = av_strdup(sws_flags_str);
 
     snprintf(buffersrc_args, sizeof(buffersrc_args),
-             "video_size=%dx%d:pix_fmt=%d:time_base=%d/%d:pixel_aspect=%d/%d",
+             "video_size=%dx%d:pix_fmt=%d:time_base=%d/%d:pixel_aspect=%d/%d:"
+             "colorspace=%d:range=%d",
              frame->width, frame->height, frame->format,
              is->video_st->time_base.num, is->video_st->time_base.den,
-             codecpar->sample_aspect_ratio.num, FFMAX(codecpar->sample_aspect_ratio.den, 1));
+             codecpar->sample_aspect_ratio.num, FFMAX(codecpar->sample_aspect_ratio.den, 1),
+             frame->colorspace, frame->color_range);
     if (fr.num && fr.den)
         av_strlcatf(buffersrc_args, sizeof(buffersrc_args), ":frame_rate=%d/%d", fr.num, fr.den);