Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
* [FFmpeg-devel] [PATCH] fftools/ffplay: fix YUV conversion mode
@ 2022-06-21 19:46 Niklas Haas
  2022-06-27  7:03 ` Jan Ekström
  0 siblings, 1 reply; 3+ messages in thread
From: Niklas Haas @ 2022-06-21 19:46 UTC (permalink / raw)
  To: ffmpeg-devel; +Cc: Niklas Haas

From: Niklas Haas <git@haasn.dev>

GL and Metal cache the state at time of texture creation. GLES2 and
Direct3D 11 use the state at time of the render copy call.

So the only way we can get the correct behavior consistently is by
making sure the state is set for both the upload *and* the draw call.
This probably isn't our bug to fix (upstream should make itself behave
consistently and also document its functions), but as it stands,
`ffplay` is misrendering BT.709 as BT.601 on my stock Linux system, and
that leaves a bad taste in my mouth.

Signed-off-by: Niklas Haas <git@haasn.dev>
---
 fftools/ffplay.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/fftools/ffplay.c b/fftools/ffplay.c
index 040afa0189..9242047f5c 100644
--- a/fftools/ffplay.c
+++ b/fftools/ffplay.c
@@ -1011,15 +1011,17 @@ static void video_image_display(VideoState *is)
     }
 
     calculate_display_rect(&rect, is->xleft, is->ytop, is->width, is->height, vp->width, vp->height, vp->sar);
+    set_sdl_yuv_conversion_mode(vp->frame);
 
     if (!vp->uploaded) {
-        if (upload_texture(&is->vid_texture, vp->frame, &is->img_convert_ctx) < 0)
+        if (upload_texture(&is->vid_texture, vp->frame, &is->img_convert_ctx) < 0) {
+            set_sdl_yuv_conversion_mode(NULL);
             return;
+        }
         vp->uploaded = 1;
         vp->flip_v = vp->frame->linesize[0] < 0;
     }
 
-    set_sdl_yuv_conversion_mode(vp->frame);
     SDL_RenderCopyEx(renderer, is->vid_texture, NULL, &rect, 0, NULL, vp->flip_v ? SDL_FLIP_VERTICAL : 0);
     set_sdl_yuv_conversion_mode(NULL);
     if (sp) {
-- 
2.36.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".

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [FFmpeg-devel] [PATCH] fftools/ffplay: fix YUV conversion mode
  2022-06-21 19:46 [FFmpeg-devel] [PATCH] fftools/ffplay: fix YUV conversion mode Niklas Haas
@ 2022-06-27  7:03 ` Jan Ekström
  2022-06-27 10:20   ` Niklas Haas
  0 siblings, 1 reply; 3+ messages in thread
From: Jan Ekström @ 2022-06-27  7:03 UTC (permalink / raw)
  To: FFmpeg development discussions and patches

On Tue, Jun 21, 2022 at 10:46 PM Niklas Haas <ffmpeg@haasn.xyz> wrote:
>
> From: Niklas Haas <git@haasn.dev>
>
> GL and Metal cache the state at time of texture creation. GLES2 and
> Direct3D 11 use the state at time of the render copy call.
>
> So the only way we can get the correct behavior consistently is by
> making sure the state is set for both the upload *and* the draw call.
> This probably isn't our bug to fix (upstream should make itself behave
> consistently and also document its functions), but as it stands,
> `ffplay` is misrendering BT.709 as BT.601 on my stock Linux system, and
> that leaves a bad taste in my mouth.
>
> Signed-off-by: Niklas Haas <git@haasn.dev>
> ---

Moves the color space setting earlier, as well as clears the state in
case of an additional failure exit case with upload.

LGTM.

Jan
_______________________________________________
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".

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [FFmpeg-devel] [PATCH] fftools/ffplay: fix YUV conversion mode
  2022-06-27  7:03 ` Jan Ekström
@ 2022-06-27 10:20   ` Niklas Haas
  0 siblings, 0 replies; 3+ messages in thread
From: Niklas Haas @ 2022-06-27 10:20 UTC (permalink / raw)
  To: FFmpeg development discussions and patches

On Mon, 27 Jun 2022 10:03:55 +0300 Jan Ekström <jeebjp@gmail.com> wrote:
> On Tue, Jun 21, 2022 at 10:46 PM Niklas Haas <ffmpeg@haasn.xyz> wrote:
> >
> > From: Niklas Haas <git@haasn.dev>
> >
> > GL and Metal cache the state at time of texture creation. GLES2 and
> > Direct3D 11 use the state at time of the render copy call.
> >
> > So the only way we can get the correct behavior consistently is by
> > making sure the state is set for both the upload *and* the draw call.
> > This probably isn't our bug to fix (upstream should make itself behave
> > consistently and also document its functions), but as it stands,
> > `ffplay` is misrendering BT.709 as BT.601 on my stock Linux system, and
> > that leaves a bad taste in my mouth.
> >
> > Signed-off-by: Niklas Haas <git@haasn.dev>
> > ---
> 
> Moves the color space setting earlier, as well as clears the state in
> case of an additional failure exit case with upload.
> 
> LGTM.
> 
> Jan

Merged.
_______________________________________________
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".

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-06-27 10:20 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-21 19:46 [FFmpeg-devel] [PATCH] fftools/ffplay: fix YUV conversion mode Niklas Haas
2022-06-27  7:03 ` Jan Ekström
2022-06-27 10:20   ` Niklas Haas

Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
		ffmpegdev@gitmailbox.com
	public-inbox-index ffmpegdev

Example config snippet for mirrors.


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git