From patchwork Tue May 1 19:39:52 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul B Mahol X-Patchwork-Id: 8717 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:a02:155:0:0:0:0:0 with SMTP id c82-v6csp4903694jad; Tue, 1 May 2018 12:41:33 -0700 (PDT) X-Google-Smtp-Source: AB8JxZqVp/FNFIW9f5qflIwR2SBEOxDyMIa9qQuwVgewlwBDxPZZPfcm7Cg8f91KGmwRI6HqBpCp X-Received: by 2002:adf:e210:: with SMTP id j16-v6mr13336877wri.118.1525203693895; Tue, 01 May 2018 12:41:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1525203693; cv=none; d=google.com; s=arc-20160816; b=MUNBqiN7LXpPgLC7HzQszSD4X1XHYTRvepY8P3ygnQvuX1qq13gypey09i8bp4H9sG Sv7Wt6TdU+PmMqzCXx5hTT+M/E4mG8wfNNMgPntqqrBZEJFRfPj2Fch8ns+xhPmVDsix zTACKNqtjr06t/9UBeNfUnAjsbTtQuAKpODlc2D5kSM3fpqE8EmfQFTRs74eFCOTsjNG 448+d/LbEPxVyMo1G3jNUYpbU+M6kLpVKWEfPmL9w60snsHQyMixGU57vIz7liZp7a/Z 4gnNqjyDF7yYUjuDF4yj5iXC4XJlXFZ0b222gD0VQ4PTHRTw8BWSvKZpT96f3hCTxTMW wsxQ== 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:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=iisIzpa3ziyz+LBerUQBQT9+Al+mDi7cxS5FE8Ys+CY=; b=AmK7G/QIcgAMJq0rPYktYP+NewWr5tV8hcAk708ZqRX16Df+sE7bMS38AuTNB6xzYf Taxmdg5V0sDaqBnaPV/qq1ZgHlUIEppfcLxnWDKsKr3VFOL6pC+ND7AikLrnLQPAyXnb 0yqO/OPg5B7+uzYGC0sYcyIL8XuqOeTJyT2lwR6dgrm5TgBvMRbxHIOJnEwT+rcyzsDC /Q8gvah4Yg3iDeMYrsGaDggR23ssSFEqRq3Vu8M4CHKqf4sSwkhrlq0aoXl89VnNYNnP sm0qh/5f4/NCMgu7sPLh4Iv60YWpm6mGo0VW8rD2o+wDt1Bu9usIhUqUaU8/mKCkz+Om R+Hw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=nij2Ea7P; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id w185si1725369wmb.48.2018.05.01.12.41.33; Tue, 01 May 2018 12:41:33 -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=@gmail.com header.s=20161025 header.b=nij2Ea7P; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B511268A3C8; Tue, 1 May 2018 22:40:33 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr0-f195.google.com (mail-wr0-f195.google.com [209.85.128.195]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DE57A68A315 for ; Tue, 1 May 2018 22:40:26 +0300 (EEST) Received: by mail-wr0-f195.google.com with SMTP id 94-v6so10376320wrf.5 for ; Tue, 01 May 2018 12:40:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references; bh=BGtO+sAqSsfhQWxWzhgwY+yfK1/X3G8958Zwpuj8sGc=; b=nij2Ea7PKL7Fg3l9nyVRNXfvsAOZlUBL/uLXlppruH0eBBefN0qiA+KlHl8Zgq15Xg UJUz237RdXP21ns2btMg3ErYbAtgPPPON4W9Fg6m0P0TCF6EQhkAA93StzdNgiYQUk7w 0tC1MzaVpjiqMsQnBXgwh4XutZUfJpmkcjozYx5RjC8fU/Q7K0Wln5EUwuw065+DR/O3 FOh3QSJPOoVtYFFw5JdWvbnlEpvavQIlZIzz385Icrcm7A2p4+95C5ecqY+hOv1mT3b2 aNoQaAXu6QnP0EbMYVLdv3QTB/TTMMJwVisOwjGEr8OU1u6wDsar/NGpJup7YC8RdVfK dEHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=BGtO+sAqSsfhQWxWzhgwY+yfK1/X3G8958Zwpuj8sGc=; b=YBZnVQny7P1XNDRXiZmg//wKmOfkv59+RVOZ+ncP/C7p762mAsw8BZaswtQzUP7M6h eURGwGRuF0PzY9zS5IbDrf8z+iFzkpo67CbGLPxRHeEjHUCnQQeTODyWQsChOLYOrxuc bIjk1kjcoJ5to/LPyKTjd0+JtGY56yLBIQskpaNrsQeJG7xg9RrbSICqaGPivR/wlv09 /vpw5XX1Q7ixXC1XFVuUj/zuccHmngRyLzx30LhIpYnxuZLPLJQZK0Jq9OY5tKFAeCLj vGGcf9IvZ2+ytBB0ZkgGr8kOU8SC6vkt2npi8Hx9sDLXZHjxF3H5bqCVP4ISxUMUIs4G YYyA== X-Gm-Message-State: ALQs6tBZjAVS7VvSK5Skp7dqhkuJiXN8GsKMnRtl55g+R0oakxEYvPeP /dU0lkRuS1kbwCuPpPMEBcV4Lw== X-Received: by 2002:adf:e78b:: with SMTP id n11-v6mr12015546wrm.192.1525203659058; Tue, 01 May 2018 12:40:59 -0700 (PDT) Received: from localhost.localdomain ([94.250.174.60]) by smtp.gmail.com with ESMTPSA id h12sm11839115wmc.7.2018.05.01.12.40.58 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 01 May 2018 12:40:58 -0700 (PDT) From: Paul B Mahol To: ffmpeg-devel@ffmpeg.org Date: Tue, 1 May 2018 21:39:52 +0200 Message-Id: <20180501194013.9552-3-onemda@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180501194013.9552-1-onemda@gmail.com> References: <20180501194013.9552-1-onemda@gmail.com> Subject: [FFmpeg-devel] [PATCH 03/24] avfilter/buffersrc: recognize color_range as additonal parameter and set it to input link 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Paul B Mahol --- libavfilter/buffersrc.c | 18 ++++++++++++++++++ libavfilter/buffersrc.h | 5 +++++ 2 files changed, 23 insertions(+) diff --git a/libavfilter/buffersrc.c b/libavfilter/buffersrc.c index cd56f8ca45..51a1a9fb49 100644 --- a/libavfilter/buffersrc.c +++ b/libavfilter/buffersrc.c @@ -52,6 +52,7 @@ typedef struct BufferSourceContext { int w, h; enum AVPixelFormat pix_fmt; AVRational pixel_aspect; + int color_range; char *sws_param; AVBufferRef *hw_frames_ctx; @@ -109,6 +110,8 @@ int av_buffersrc_parameters_set(AVFilterContext *ctx, AVBufferSrcParameters *par s->h = param->height; if (param->sample_aspect_ratio.num > 0 && param->sample_aspect_ratio.den > 0) s->pixel_aspect = param->sample_aspect_ratio; + if (param->color_range > AVCOL_RANGE_UNSPECIFIED) + s->color_range = param->color_range; if (param->frame_rate.num > 0 && param->frame_rate.den > 0) s->frame_rate = param->frame_rate; if (param->hw_frames_ctx) { @@ -279,6 +282,11 @@ static av_cold int init_video(AVFilterContext *ctx) return AVERROR(EINVAL); } + if (!av_color_range_name(c->color_range)) { + av_log(ctx, AV_LOG_ERROR, "Invalid color_range parameter provided.\n"); + return AVERROR(EINVAL); + } + if (!(c->fifo = av_fifo_alloc(sizeof(AVFrame*)))) return AVERROR(ENOMEM); @@ -309,6 +317,15 @@ static const AVOption buffer_options[] = { { "time_base", NULL, OFFSET(time_base), AV_OPT_TYPE_RATIONAL, { .dbl = 0 }, 0, DBL_MAX, V }, { "frame_rate", NULL, OFFSET(frame_rate), AV_OPT_TYPE_RATIONAL, { .dbl = 0 }, 0, DBL_MAX, V }, { "sws_param", NULL, OFFSET(sws_param), AV_OPT_TYPE_STRING, .flags = V }, + { "color_range", NULL, OFFSET(color_range), AV_OPT_TYPE_INT, { .i64 = AVCOL_RANGE_UNSPECIFIED }, 0, INT_MAX, V, "range" }, + { "unspecified", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_RANGE_UNSPECIFIED}, 0, 0, V, "range"}, + { "unknown", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_RANGE_UNSPECIFIED}, 0, 0, V, "range"}, + { "limited", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_RANGE_MPEG}, 0, 0, V, "range"}, + { "tv", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_RANGE_MPEG}, 0, 0, V, "range"}, + { "mpeg", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_RANGE_MPEG}, 0, 0, V, "range"}, + { "full", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_RANGE_JPEG}, 0, 0, V, "range"}, + { "pc", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_RANGE_JPEG}, 0, 0, V, "range"}, + { "jpeg", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_RANGE_JPEG}, 0, 0, V, "range"}, { NULL }, }; @@ -434,6 +451,7 @@ static int config_props(AVFilterLink *link) link->w = c->w; link->h = c->h; link->sample_aspect_ratio = c->pixel_aspect; + link->color_range = c->color_range; if (c->hw_frames_ctx) { link->hw_frames_ctx = av_buffer_ref(c->hw_frames_ctx); diff --git a/libavfilter/buffersrc.h b/libavfilter/buffersrc.h index 0652113f2b..7129db6bd9 100644 --- a/libavfilter/buffersrc.h +++ b/libavfilter/buffersrc.h @@ -114,6 +114,11 @@ typedef struct AVBufferSrcParameters { * Audio only, the audio channel layout */ uint64_t channel_layout; + + /** + * Video only + */ + enum AVColorRange color_range; } AVBufferSrcParameters; /**