From patchwork Mon Jul 2 21:53:40 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marton Balint X-Patchwork-Id: 9577 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:a02:104:0:0:0:0:0 with SMTP id c4-v6csp431542jad; Mon, 2 Jul 2018 14:53:55 -0700 (PDT) X-Google-Smtp-Source: AAOMgpdFWy+ICF9SS6xO34n/whM1TlGJLsq7JI8npI2wbhRTIKSptVDfjbWRG/qRu3yr8cv0IgBW X-Received: by 2002:adf:ef50:: with SMTP id c16-v6mr19379931wrp.182.1530568435361; Mon, 02 Jul 2018 14:53:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1530568435; cv=none; d=google.com; s=arc-20160816; b=uwc6ZJWP9wncxj2BY9DrlLVeMyd1nEWNN6ZpX3478F5qGEEvWODQAXzQwu8WQbw7ot tWrD+qu4FzJ2/df6gs62UTXLU7Sgoar6XCTWWNmi2f5M2F6L6yH/RRtly1Vgni8lnVtP wHMyziRfrqgQc2PI2jyKkacugU+7huU9MJyrkVfvPSrw7cVuXRSREWlYRn1t92aLl/0v GLMfhmMpbcY+OXDq5CRDtcO2AH5gbyyoIr0k6hKBqkyaqiB3ThCtQHA0hSpsIbXgIXzz dVvkQ4tLdnsjU73cMnO7W8nYpQegppn9Bo7D/0ZdTpeSNzkzUblwolibFoKuGrgEr6xh Mhsg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:message-id:date:to:from:delivered-to :arc-authentication-results; bh=ZzProgUutalaDZgRvEIdZQnLk54axy9aXz799Czj85A=; b=zMQvG4V0yEir9gfIkMRHDpkT4KeB5yAS1z+PAJBIUyT2pkijvT18Xm8v6XotxzHJ0i kPFdqmo2A47NKAa75NqnrVL89Yo5U3aVGKnuVmNr9bicHUQ620COxGzNEi4Q130XVKOV teX8OBqWRdMRKtmkbwKSiXqQ/rkTjNbqcVArpvUIOVZ8JSmSlWE130LKqPFi/WqsL1/y evFsUYcKEYcw5iblVPSArSvWFilAESVkh5oaGqna5ZzaXDRUyJ8Foc/NXxreccUfH2jp zQ9rYolOUk2PeGYFG4YLq1FOl13Lg8yLlYPeEnwcY0u40F34KgVIGy2/s/1Lm3XbuwaO KP6g== ARC-Authentication-Results: i=1; mx.google.com; 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 190-v6si7599477wmp.24.2018.07.02.14.53.54; Mon, 02 Jul 2018 14:53:55 -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; 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 0CDE068A6E1; Tue, 3 Jul 2018 00:53:49 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from iq.passwd.hu (iq.passwd.hu [217.27.212.140]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 68FDF68A6AE for ; Tue, 3 Jul 2018 00:53:42 +0300 (EEST) Received: from localhost (localhost [127.0.0.1]) by iq.passwd.hu (Postfix) with ESMTP id BEE2AE10F6; Mon, 2 Jul 2018 23:53:45 +0200 (CEST) X-Virus-Scanned: amavisd-new at passwd.hu Received: from iq.passwd.hu ([127.0.0.1]) by localhost (iq.passwd.hu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 9wmBUvfo1Phe; Mon, 2 Jul 2018 23:53:44 +0200 (CEST) Received: from bluegene.passwd.hu (localhost [127.0.0.1]) by iq.passwd.hu (Postfix) with ESMTP id CE421E05CA; Mon, 2 Jul 2018 23:53:43 +0200 (CEST) From: Marton Balint To: ffmpeg-devel@ffmpeg.org Date: Mon, 2 Jul 2018 23:53:40 +0200 Message-Id: <20180702215340.22095-1-cus@passwd.hu> X-Mailer: git-send-email 2.16.4 Subject: [FFmpeg-devel] [PATCH] ffplay: add support for various YUV conversion modes X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Marton Balint MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" SDL from version 2.0.8 has support for full range YUV and specifying BT601/BT709 color space for YUV->RGB conversion. Signed-off-by: Marton Balint --- fftools/ffplay.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/fftools/ffplay.c b/fftools/ffplay.c index 55cea32cae..368e262123 100644 --- a/fftools/ffplay.c +++ b/fftools/ffplay.c @@ -954,6 +954,22 @@ static int upload_texture(SDL_Texture **tex, AVFrame *frame, struct SwsContext * return ret; } +static void set_sdl_yuv_conversion_mode(AVFrame *frame) +{ +#if SDL_VERSION_ATLEAST(2,0,8) + SDL_YUV_CONVERSION_MODE mode = SDL_YUV_CONVERSION_AUTOMATIC; + if (frame && (frame->format == AV_PIX_FMT_YUV420P || frame->format == AV_PIX_FMT_YUYV422 || frame->format == AV_PIX_FMT_UYVY422)) { + if (frame->color_range == AVCOL_RANGE_JPEG) + mode = SDL_YUV_CONVERSION_JPEG; + else if (frame->colorspace == AVCOL_SPC_BT709) + mode = SDL_YUV_CONVERSION_BT709; + else if (frame->colorspace == AVCOL_SPC_BT470BG || frame->colorspace == AVCOL_SPC_SMPTE170M || frame->colorspace == AVCOL_SPC_SMPTE240M) + mode = SDL_YUV_CONVERSION_BT601; + } + SDL_SetYUVConversionMode(mode); +#endif +} + static void video_image_display(VideoState *is) { Frame *vp; @@ -1015,7 +1031,9 @@ static void video_image_display(VideoState *is) 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) { #if USE_ONEPASS_SUBTITLE_RENDER SDL_RenderCopy(renderer, is->sub_texture, NULL, &rect);