From patchwork Sat Sep 2 09:22:17 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Sun X-Patchwork-Id: 9824 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:a02:104:0:0:0:0:0 with SMTP id c4-v6csp1342400jad; Fri, 27 Jul 2018 16:05:19 -0700 (PDT) X-Google-Smtp-Source: AAOMgpehDuiQV2NYa0WZhHxQOvJNRGaJANg2UrvAXODOa2vPM0W9o25UhS/YrenxuBx5JcIZMLmY X-Received: by 2002:adf:c554:: with SMTP id s20-v6mr6967138wrf.46.1532732719827; Fri, 27 Jul 2018 16:05:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1532732719; cv=none; d=google.com; s=arc-20160816; b=LpXjlD0Zus8N6faDcO8lHPT9j+/ls4eQq69K4Fbdf+IZYHOlZgGtudJVxf/Uqx9MM0 x1a8DBHF5rAQgBp7Y0+Bz7S3z13YLhT+8R7nf9ByHSMNpQsIgyJ+gaCXjcKJgGYA2cqn 62emEUCukHtk+zhIcGEfVn4SUxBo4MZufE5rSXMt31RGGCLk3jXIdb7iITIVlxSQsmZ5 tAYKupCCbXUowrgOpe2QVbLmtmeRTdTQ4nq3lKGeXV4A5tLjqiPwlaIpXL7ihR/kK6m9 tfhTXVrYeowmfEq+ixcboBkfUXdVAx3rWJwrQLoMQdH3AWwFQP3NN8pOlm+klQB0VouR OGvQ== 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:dkim-signature :delivered-to:arc-authentication-results; bh=FvhJgLpAfrT5/lfBHtB4CN8ZhSGD+dSFYBHrIMxkvHA=; b=HAueqtgTktWT3ysWgMglFxhYxv/dDIMvhSIjnFoSEfDJBs2qoVFPVUlGEPNPRK5jex 688Xy386N/9wGCJ7HmKzRcD9vAMJiaWFTrKswcwGE33ev6/Lw+ttYJYRxrREw/BWCMcN NfQnvzaUua116firXN6ZcLXZK4R8+tMisnskCBp4bSF0tKZYN9H/TakXzK6m5DOtNzFZ RExjQTTgTpftQVKrHk72yx7C0RWJpBUWpfLJ+V7awTOk0KhaiZdPW679XlkLGQoPtDho fYJJLAsb8kRVVKuNYd/04Es2GAcQLqTjQ5xArr/jyLT0C3xcZCqaxE7VZ5AyQocX4IgC wD1Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=cGpMXqNF; 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 a84-v6si571621wme.146.2018.07.27.16.05.19; Fri, 27 Jul 2018 16:05:19 -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=cGpMXqNF; 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 BF69C68A50D; Sat, 28 Jul 2018 02:05:01 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm0-f54.google.com (mail-wm0-f54.google.com [74.125.82.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2AB8C68A4AC for ; Sat, 28 Jul 2018 02:04:56 +0300 (EEST) Received: by mail-wm0-f54.google.com with SMTP id t25-v6so7086295wmi.3 for ; Fri, 27 Jul 2018 16:05:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=myhUrKKa2EVIiDA6LGghCx6+EfX8BkpV63Qr7VXmoKQ=; b=cGpMXqNFLOqcOSN6IEPDexhdA4e7Da1PmoUO93vKCf5IjA1IN0v9w0btwSAOjyjUJ/ VDvhlD1LH9vNJl3S2g5vLlyy6vG9Ej/tPbGw0ZEEYqNbcFAS/e3wFXxRIHaZS2dCsHDB WOwACaZzOLHKF3kTzsqBDLnPqv6h9j+mbhTAR2iE8Z4ikDB4n/+0jUfk3qHDPjkQgJaA EsXz3RipXOVKawqKH3gkTs36QYEgNHIBd3jcYPtPrh/e9i106MMRVvE5+e6STnT7mux6 k95UQXkzkc1LRHfDnM9zGvXj1DN0NU4DQoRjyzwYnRKCnM0u+O54z57VMJbwet6qIRVQ zmLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=myhUrKKa2EVIiDA6LGghCx6+EfX8BkpV63Qr7VXmoKQ=; b=sqz3XAfb7xAQcok3xsJ3v9WQ1s+XzaDDvlYau9FwnL82Qok7Ob7tI7XmnGc5IFbLzn txspNO/RYeHOT6jEe09XYp4hD9Ar9EfdKVMnVFqyNNTRefh61MLfD4e2yTFPIBeRT/Fg gT/4KPsV8QeeAe4HtyNzI7uBvtO6n1T2yQvLaxJoa95+yx1mxZzxsXZd0diDpbPfqH7v WQOQRLTv9K5evXizPk3VVd8qWcbfHTcLAOn0kHQcKZJcww/cjsQ/VeU+Ma4VvgnRarQi c1GWq2lAmvv4bRCft5pOLUCMTFT/OixIS0QhP2XMKvGwAr3Q+TgeVx7dYUU94mRlVsEz hsrQ== X-Gm-Message-State: AOUpUlELHkW6pza/XI/vTzzFSArbF6B3tB+HMcrupOF3++rUJ2oxHcVL GAbgbc8qrDqAiahYwBzMvCoBgqyC X-Received: by 2002:a1c:3697:: with SMTP id y23-v6mr5666995wmh.71.1532732710839; Fri, 27 Jul 2018 16:05:10 -0700 (PDT) Received: from localhost.localdomain ([128.237.135.229]) by smtp.gmail.com with ESMTPSA id q11-v6sm4469703wrp.58.2018.07.27.16.05.09 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 27 Jul 2018 16:05:10 -0700 (PDT) Received: by localhost.localdomain (Postfix, from userid 1000) id 14F57A8078C; Sat, 2 Sep 2017 05:25:05 -0400 (EDT) From: Andrew Sun To: ffmpeg-devel@ffmpeg.org Date: Sat, 2 Sep 2017 09:22:17 +0000 Message-Id: <20170902092217.6116-1-adsun701@gmail.com> X-Mailer: git-send-email 2.14.1 Subject: [FFmpeg-devel] [PATCH] Add YUV-based floating-point pixel formats. 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: Andrew Sun MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" This commit adds support for 32-bpc YUV-based floating-point pixel formats. --- doc/APIchanges | 2 ++ libavutil/pixdesc.c | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++ libavutil/pixfmt.h | 11 ++++++++ libavutil/version.h | 2 +- 4 files changed, 89 insertions(+), 1 deletion(-) diff --git a/doc/APIchanges b/doc/APIchanges index 4effbf9364..980b6e01bf 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -14,6 +14,8 @@ libavutil: 2015-08-28 API changes, most recent first: +2017-09-01 - xxxxxxx - lavu 57.82.100 - pixfmt.h + Add YUV-based floating-point pixel formats. 2017-09-01 - xxxxxxx - lavf 57.81.100 - avio.h Add avio_read_partial(). diff --git a/libavutil/pixdesc.c b/libavutil/pixdesc.c index d45eae5772..d954866470 100644 --- a/libavutil/pixdesc.c +++ b/libavutil/pixdesc.c @@ -2237,6 +2237,81 @@ static const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA | AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_FLOAT, }, + [AV_PIX_FMT_YUV420PF32BE] = { + .name = "yuv420pf32be", + .nb_components = 3, + .log2_chroma_w = 1, + .log2_chroma_h = 1, + .comp = { + { 0, 4, 0, 0, 32, 3, 31, 1 }, /* R */ + { 1, 4, 0, 0, 32, 3, 31, 1 }, /* G */ + { 2, 4, 0, 0, 32, 3, 31, 1 }, /* B */ + }, + .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | + AV_PIX_FMT_FLAG_FLOAT, + }, + [AV_PIX_FMT_YUV420PF32LE] = { + .name = "yuv420pf32le", + .nb_components = 3, + .log2_chroma_w = 1, + .log2_chroma_h = 1, + .comp = { + { 0, 4, 0, 0, 32, 3, 31, 1 }, /* R */ + { 1, 4, 0, 0, 32, 3, 31, 1 }, /* G */ + { 2, 4, 0, 0, 32, 3, 31, 1 }, /* B */ + }, + .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_FLOAT, + }, + [AV_PIX_FMT_YUV422PF32BE] = { + .name = "yuv422pf32be", + .nb_components = 3, + .log2_chroma_w = 1, + .log2_chroma_h = 0, + .comp = { + { 0, 4, 0, 0, 32, 3, 31, 1 }, /* R */ + { 1, 4, 0, 0, 32, 3, 31, 1 }, /* G */ + { 2, 4, 0, 0, 32, 3, 31, 1 }, /* B */ + }, + .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | + AV_PIX_FMT_FLAG_FLOAT, + }, + [AV_PIX_FMT_YUV422PF32LE] = { + .name = "yuv422pf32le", + .nb_components = 3, + .log2_chroma_w = 1, + .log2_chroma_h = 0, + .comp = { + { 0, 4, 0, 0, 32, 3, 31, 1 }, /* R */ + { 1, 4, 0, 0, 32, 3, 31, 1 }, /* G */ + { 2, 4, 0, 0, 32, 3, 31, 1 }, /* B */ + }, + .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_FLOAT, + }, + [AV_PIX_FMT_YUV444PF32BE] = { + .name = "yuv444pf32be", + .nb_components = 3, + .log2_chroma_w = 0, + .log2_chroma_h = 0, + .comp = { + { 0, 4, 0, 0, 32, 3, 31, 1 }, /* R */ + { 1, 4, 0, 0, 32, 3, 31, 1 }, /* G */ + { 2, 4, 0, 0, 32, 3, 31, 1 }, /* B */ + }, + .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | + AV_PIX_FMT_FLAG_FLOAT, + }, + [AV_PIX_FMT_YUV444PF32LE] = { + .name = "yuv444pf32le", + .nb_components = 3, + .log2_chroma_w = 0, + .log2_chroma_h = 0, + .comp = { + { 0, 4, 0, 0, 32, 3, 31, 1 }, /* R */ + { 1, 4, 0, 0, 32, 3, 31, 1 }, /* G */ + { 2, 4, 0, 0, 32, 3, 31, 1 }, /* B */ + }, + .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_FLOAT, + }, }; #if FF_API_PLUS1_MINUS1 FF_ENABLE_DEPRECATION_WARNINGS diff --git a/libavutil/pixfmt.h b/libavutil/pixfmt.h index 6dd094376f..3863e1c9a9 100644 --- a/libavutil/pixfmt.h +++ b/libavutil/pixfmt.h @@ -334,6 +334,13 @@ enum AVPixelFormat { AV_PIX_FMT_GBRAPF32BE, ///< IEEE-754 single precision planar GBRA 4:4:4:4, 128bpp, big-endian AV_PIX_FMT_GBRAPF32LE, ///< IEEE-754 single precision planar GBRA 4:4:4:4, 128bpp, little-endian + AV_PIX_FMT_YUV420PF32BE, ///< IEEE-754 single precision planar YUV 4:2:0 (1 Cr & Cb sample per 2x2 Y samples), 48bpp, big-endian + AV_PIX_FMT_YUV420PF32LE, ///< IEEE-754 single precision planar YUV 4:2:0 (1 Cr & Cb sample per 2x2 Y samples), 48bpp, little-endian + AV_PIX_FMT_YUV422PF32BE, ///< IEEE-754 single precision planar YUV 4:2:2 (1 Cr & Cb sample per 2x1 Y samples), 64bpp, big-endian + AV_PIX_FMT_YUV422PF32LE, ///< IEEE-754 single precision planar YUV 4:2:2 (1 Cr & Cb sample per 2x1 Y samples), 64bpp, little-endian + AV_PIX_FMT_YUV444PF32BE, ///< IEEE-754 single precision planar YUV 4:4:4 (1 Cr & Cb sample per 1x1 Y samples), 96bpp, big-endian + AV_PIX_FMT_YUV444PF32LE, ///< IEEE-754 single precision planar YUV 4:4:4 (1 Cr & Cb sample per 1x1 Y samples), 96bpp, little-endian + AV_PIX_FMT_NB ///< number of pixel formats, DO NOT USE THIS if you want to link with shared libav* because the number of formats might differ between versions }; @@ -401,6 +408,10 @@ enum AVPixelFormat { #define AV_PIX_FMT_GBRPF32 AV_PIX_FMT_NE(GBRPF32BE, GBRPF32LE) #define AV_PIX_FMT_GBRAPF32 AV_PIX_FMT_NE(GBRAPF32BE, GBRAPF32LE) +#define AV_PIX_FMT_YUV420PF32 AV_PIX_FMT_NE(YUV420PF32BE, YUV420PF32LE) +#define AV_PIX_FMT_YUV422PF32 AV_PIX_FMT_NE(YUV422PF32BE, YUV422PF32LE) +#define AV_PIX_FMT_YUV444PF32 AV_PIX_FMT_NE(YUV444PF32BE, YUV444PF32LE) + #define AV_PIX_FMT_YUVA420P9 AV_PIX_FMT_NE(YUVA420P9BE , YUVA420P9LE) #define AV_PIX_FMT_YUVA422P9 AV_PIX_FMT_NE(YUVA422P9BE , YUVA422P9LE) #define AV_PIX_FMT_YUVA444P9 AV_PIX_FMT_NE(YUVA444P9BE , YUVA444P9LE) diff --git a/libavutil/version.h b/libavutil/version.h index 6e25b4690c..d99eff5d15 100644 --- a/libavutil/version.h +++ b/libavutil/version.h @@ -80,7 +80,7 @@ #define LIBAVUTIL_VERSION_MAJOR 55 -#define LIBAVUTIL_VERSION_MINOR 74 +#define LIBAVUTIL_VERSION_MINOR 75 #define LIBAVUTIL_VERSION_MICRO 100 #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \