From patchwork Tue Jun 21 19:46:17 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Niklas Haas X-Patchwork-Id: 36373 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1a22:b0:84:42e0:ad30 with SMTP id cj34csp2414331pzb; Tue, 21 Jun 2022 12:46:30 -0700 (PDT) X-Google-Smtp-Source: AGRyM1tQJMgYfCVE0qd4tvBo0k86s4QAj4e6Vn5m6sF0w27yWPwA6PjO7m+W+//+tY1t8lFLe6yf X-Received: by 2002:a05:6402:3323:b0:435:775b:aece with SMTP id e35-20020a056402332300b00435775baecemr18332259eda.210.1655840790464; Tue, 21 Jun 2022 12:46:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655840790; cv=none; d=google.com; s=arc-20160816; b=dFwLmVREjfap0gOpHLdQGH1XwUq6ZuuH4VYpMBdlV/gydl7YUc5ylqARMSmFbQRgM+ Q7mZ7NmhzWB1NdimO2QUhBq21RIjkcw54WNY71HJ5PBosdgsM6r6rgg/nhLxK6HpYoZL 9zkXhQ7IMb5pPeituMpIlyt4HhXy6PTpwImsAelDqa5gr+22fxmfWFJ3tcJN1l2DHjww GT6yQ7a4x3/ttFmOKIdDsis17DBK/pcK/X4ihJ7q6XMhEIQkMD1a1mpjV+oAVcj7HvYI rpmxr+0LltUNudwvtp+Fqe5k/B6Ls3O93CAlcIw3nqBQEmY4R0fpvUhHZvhUdFDvhDkq EziA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=1vnk1TDacevSeRV2UrAA8Jmnz6WI0xKGuQ22O6rcLMU=; b=yZSEXLT4r/22AFIhd12+I1lQOrFWtXI2ZSZI6audMTZ7V+i68wnQpQ46DvnHhzWHTP ErIoZUlPynUcYNl9AqWxI28qPmivU3eLAedz/Htvxc728zw6lG0RPgK+iWk+d1FLYlhw ed3C20nBKGDMyteMAGBIVk20CPv8YLh4n/s1mFvHyCGhkntBcVk/uKCBI58+/yCpGaOI mlK7l+kSttCQ9RvK8FIBHcbOKWoJaRdiCvdtLPhf3cKWa9nG4P3Wv29WLUFjdBs+FHWu wiNLuR5Mmxu86j7vV4mR1DdjcdhV2wDf92V9i5/rxicodDPUukKHzWdT3nTwf11G+31R Zxqg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@haasn.xyz header.s=mail header.b=jPXJoDlh; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id e12-20020a17090658cc00b006febef95910si15411640ejs.332.2022.06.21.12.46.30; Tue, 21 Jun 2022 12:46:30 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@haasn.xyz header.s=mail header.b=jPXJoDlh; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2A28B68B65E; Tue, 21 Jun 2022 22:46:27 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from haasn.dev (haasn.dev [78.46.187.166]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8A4DF68B5F2 for ; Tue, 21 Jun 2022 22:46:20 +0300 (EEST) Received: from haasn.dev (unknown [10.30.0.2]) by haasn.dev (Postfix) with ESMTP id EE4F74A702; Tue, 21 Jun 2022 21:46:19 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=haasn.xyz; s=mail; t=1655840780; bh=jGIn04clmrW7RvVvSqwIC/ZPgVU51WvXA//JE7MynQU=; h=From:To:Cc:Subject:Date:From; b=jPXJoDlhCtjToC5PWFukVaYm4lvrLIFQkc+HRFBCebSOWEuw71D7+WpF0XoWDY8HG fuiYUqJci/rPUr2t3l+WanVQ7TMkOud9l0laygJ4S3ob0YcZI23SctA/DhK0yTshhP O/36Y/uY4Cob1g/erhPzaO+J757LDuEO69mN2ap8= From: Niklas Haas To: ffmpeg-devel@ffmpeg.org Date: Tue, 21 Jun 2022 21:46:17 +0200 Message-Id: <20220621194617.76561-1-ffmpeg@haasn.xyz> X-Mailer: git-send-email 2.36.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] fftools/ffplay: fix YUV conversion mode X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Niklas Haas Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: eQ3LuhmVfq5i From: Niklas Haas 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 --- 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) {