From patchwork Fri Aug 11 14:11:04 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vittorio Giovara X-Patchwork-Id: 4694 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.46.211 with SMTP id u202csp901747vsu; Fri, 11 Aug 2017 07:19:01 -0700 (PDT) X-Received: by 10.28.63.13 with SMTP id m13mr9173432wma.63.1502461141073; Fri, 11 Aug 2017 07:19:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1502461141; cv=none; d=google.com; s=arc-20160816; b=QscKlr0UlZci7N6bfITgrLcku7rICdIQyA7t8Fhc/PI+QhkytfwA+AQ9gfBTL8O0ju gIoS+1VHqpK0bAotgsUOQYTazdP3dFNArLPyCeEe3succEqhLLHL8RXTODBJlKOpszz7 B7Itd9mEVQCq5BNIlQIVC/jJJ10E54iKEKXCSn9xzovGQRIuMmLlG6Yxg8Kd4WbTxZPj ONxzpQmDLi5o49nXFGdJ7323QTpL12+ClEbn8ptLPfw/M4+ehFatb5pdTgTur2mNssJq d2j25qs0RZd+0vGZcJ+5IfS/V0RMvpwo9knBPt8BSx98PD8UG0FIK07v0tGgo9xxFxMK QZqg== 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=BMqkpjjvYlBJL2lEN6AhHeyzUz/WNStUuRlE1VldbRc=; b=qZU//eGEqv7jw9WlCnLmx0nqOBc7CNAjHjH7iYHXRLI3l7Dq2MPPHOUDyuksP+zcbU 0OLZlASt+izlKpyzT9B4SGLTNTaWQiRL/4EKLdna5nUFFkvT1JUKSiIka0o9NIgA01Wa jZk/nX1+LX/qxmcVn/BdDlc42MNokGlhm0fGGu55C4tzDPEdnZlvuaM8oKALXug037So wV0ZwPMxqjTqCQTC3610Ku922oiWoTakmKtosiaIAFW0rE2/oBF6untABcWs641kzM0b 2w6bMqHJgQyyCXWpo4UMcF9Xh8lIQ3XVDn1UMhLCNXSS7ymFguLu9839Qfc1Nr63Cho1 qhHw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=qWdy36Fm; 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=NONE 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 s131si838928wmf.163.2017.08.11.07.19.00; Fri, 11 Aug 2017 07:19:01 -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=qWdy36Fm; 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=NONE 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 746D5689A94; Fri, 11 Aug 2017 17:18:55 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk0-f196.google.com (mail-qk0-f196.google.com [209.85.220.196]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 766BB6898EB for ; Fri, 11 Aug 2017 17:18:53 +0300 (EEST) Received: by mail-qk0-f196.google.com with SMTP id m84so3603600qki.5 for ; Fri, 11 Aug 2017 07:18:56 -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=GGT0I8Se9onZ5wsxodSSzc1StiwhP1IQUkHyfZ7TaSY=; b=qWdy36FmLAXHUIhgFYDiPb6wZTO9Sa0V6aTGde1iT1euUkWqFPAHUb2DcBJyPpQiZO 083FmrI8suYc+h/O3Z41PRl4YK6K0OZXeBhGAi+R1H+cGnr24rPkTajwuycwODdekcNE GD4pmkRZLr2FRYe/J6VzBlVmC5z5f3QjsatP3yeBCy1++3ZHUs9b6hm31AEsUew4N6Pl JQltmgq4LOmSbjZJug8aAStaZ/1VjEl9ZS+qNd6tFri6wN4aiA5ZQsc4E0pUvPWbPfus Cv8aSBzYsWmgeCuBdn1Q/1Qg86G+kVPhBubixevEtCE8pFRgEI/JEnfVkJCZMNN97fh+ zVtw== 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=GGT0I8Se9onZ5wsxodSSzc1StiwhP1IQUkHyfZ7TaSY=; b=I2GpIE3BJH7p7OkcNI2q+uo5oN3/YjuxwRWkLHus8mEQ9ihdJOTJe7D0BnWi0ELxYC wnO0DoTK4V1Y8DY04Kfx6K7onw4Pdkx5VphSyjjgWshsT3vEUZVH4lE7o9/PT5ETGnYr G8AN45X3vv0tj5dvKlq/JtXXv5hUYzlyMAKHCPs40CBl1kX6KwwjuRNjZukIzA0eYSiT Omb4zarGEP6S8SkIyawnUyhjB2wWVq0LnsrU5Jzj8U+7v+wxUvYZTPJELFhuh8ett4H/ i784mFUq0pUUaS00BV9hnVSwNiyRXD+hsmPIzRQknl/hBsAT4cWNtXpsWvB9IrnayB6r FUVg== X-Gm-Message-State: AHYfb5imCavUmcafLMYAPoRZtHjnmekOxu8fQjL5Q7siktk60B8C6GVo 3Bo4odXk3+Pp1Q9u6s8= X-Received: by 10.55.181.196 with SMTP id e187mr19251191qkf.314.1502460673230; Fri, 11 Aug 2017 07:11:13 -0700 (PDT) Received: from vimacbookpro.vimeo.iac.corp (mi-18-14-204.service.infuturo.it. [151.18.14.204]) by smtp.gmail.com with ESMTPSA id v66sm611698qkg.72.2017.08.11.07.11.11 for (version=TLS1 cipher=AES128-SHA bits=128/128); Fri, 11 Aug 2017 07:11:12 -0700 (PDT) From: Vittorio Giovara To: ffmpeg-devel@ffmpeg.org Date: Fri, 11 Aug 2017 16:11:04 +0200 Message-Id: <20170811141106.85652-2-vittorio.giovara@gmail.com> X-Mailer: git-send-email 2.13.2 In-Reply-To: <20170811141106.85652-1-vittorio.giovara@gmail.com> References: <20170811141106.85652-1-vittorio.giovara@gmail.com> Subject: [FFmpeg-devel] [PATCH 1/3] Add single precision planar RGB 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Vittorio Giovara --- libavutil/pixdesc.c | 54 ++++++++++++++++++++++++++++++++++++++++ libavutil/pixdesc.h | 5 ++++ libavutil/pixfmt.h | 7 ++++++ tests/ref/fate/sws-pixdesc-query | 20 +++++++++++++++ 4 files changed, 86 insertions(+) diff --git a/libavutil/pixdesc.c b/libavutil/pixdesc.c index 59587328ea..d45eae5772 100644 --- a/libavutil/pixdesc.c +++ b/libavutil/pixdesc.c @@ -2183,6 +2183,60 @@ static const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { .name = "d3d11", .flags = AV_PIX_FMT_FLAG_HWACCEL, }, + [AV_PIX_FMT_GBRPF32BE] = { + .name = "gbrpf32be", + .nb_components = 3, + .log2_chroma_w = 0, + .log2_chroma_h = 0, + .comp = { + { 2, 4, 0, 0, 32, 3, 31, 1 }, /* R */ + { 0, 4, 0, 0, 32, 3, 31, 1 }, /* G */ + { 1, 4, 0, 0, 32, 3, 31, 1 }, /* B */ + }, + .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | + AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_FLOAT, + }, + [AV_PIX_FMT_GBRPF32LE] = { + .name = "gbrpf32le", + .nb_components = 3, + .log2_chroma_w = 0, + .log2_chroma_h = 0, + .comp = { + { 2, 4, 0, 0, 32, 3, 31, 1 }, /* R */ + { 0, 4, 0, 0, 32, 3, 31, 1 }, /* G */ + { 1, 4, 0, 0, 32, 3, 31, 1 }, /* B */ + }, + .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_FLOAT | AV_PIX_FMT_FLAG_RGB, + }, + [AV_PIX_FMT_GBRAPF32BE] = { + .name = "gbrapf32be", + .nb_components = 4, + .log2_chroma_w = 0, + .log2_chroma_h = 0, + .comp = { + { 2, 4, 0, 0, 32, 3, 31, 1 }, /* R */ + { 0, 4, 0, 0, 32, 3, 31, 1 }, /* G */ + { 1, 4, 0, 0, 32, 3, 31, 1 }, /* B */ + { 3, 4, 0, 0, 32, 3, 31, 1 }, /* A */ + }, + .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | + AV_PIX_FMT_FLAG_ALPHA | AV_PIX_FMT_FLAG_RGB | + AV_PIX_FMT_FLAG_FLOAT, + }, + [AV_PIX_FMT_GBRAPF32LE] = { + .name = "gbrapf32le", + .nb_components = 4, + .log2_chroma_w = 0, + .log2_chroma_h = 0, + .comp = { + { 2, 4, 0, 0, 32, 3, 31, 1 }, /* R */ + { 0, 4, 0, 0, 32, 3, 31, 1 }, /* G */ + { 1, 4, 0, 0, 32, 3, 31, 1 }, /* B */ + { 3, 4, 0, 0, 32, 3, 31, 1 }, /* A */ + }, + .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA | + AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_FLOAT, + }, }; #if FF_API_PLUS1_MINUS1 FF_ENABLE_DEPRECATION_WARNINGS diff --git a/libavutil/pixdesc.h b/libavutil/pixdesc.h index c3a6f27f49..294555260a 100644 --- a/libavutil/pixdesc.h +++ b/libavutil/pixdesc.h @@ -178,6 +178,11 @@ typedef struct AVPixFmtDescriptor { #define AV_PIX_FMT_FLAG_BAYER (1 << 8) /** + * The pixel format contains IEEE-754 single precision floating point values. + */ +#define AV_PIX_FMT_FLAG_FLOAT (1 << 10) + +/** * Return the number of bits per pixel used by the pixel format * described by pixdesc. Note that this is not the same as the number * of bits per sample. diff --git a/libavutil/pixfmt.h b/libavutil/pixfmt.h index d4a39dcc01..6012bcebde 100644 --- a/libavutil/pixfmt.h +++ b/libavutil/pixfmt.h @@ -329,6 +329,11 @@ enum AVPixelFormat { AV_PIX_FMT_GRAY9BE, ///< Y , 9bpp, big-endian AV_PIX_FMT_GRAY9LE, ///< Y , 9bpp, little-endian + AV_PIX_FMT_GBRPF32BE, ///< IEEE-754 single precision planar GBR 4:4:4, 96bpp, big-endian + AV_PIX_FMT_GBRPF32LE, ///< IEEE-754 single precision planar GBR 4:4:4, 96bpp, little-endian + AV_PIX_FMT_GBRAPF32BE, ///< IEEE-754 single precision planar GBR 4:4:4:4, 128bpp, big-endian + AV_PIX_FMT_GBRAPF32LE, ///< IEEE-754 single precision planar GBR 4:4:4:4, 128bpp, 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 }; @@ -393,6 +398,8 @@ enum AVPixelFormat { #define AV_PIX_FMT_BAYER_GBRG16 AV_PIX_FMT_NE(BAYER_GBRG16BE, BAYER_GBRG16LE) #define AV_PIX_FMT_BAYER_GRBG16 AV_PIX_FMT_NE(BAYER_GRBG16BE, BAYER_GRBG16LE) +#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_YUVA420P9 AV_PIX_FMT_NE(YUVA420P9BE , YUVA420P9LE) #define AV_PIX_FMT_YUVA422P9 AV_PIX_FMT_NE(YUVA422P9BE , YUVA422P9LE) diff --git a/tests/ref/fate/sws-pixdesc-query b/tests/ref/fate/sws-pixdesc-query index 9510b4ee0e..0adfdcaf98 100644 --- a/tests/ref/fate/sws-pixdesc-query +++ b/tests/ref/fate/sws-pixdesc-query @@ -112,11 +112,13 @@ isBE: gbrap10be gbrap12be gbrap16be + gbrapf32be gbrp10be gbrp12be gbrp14be gbrp16be gbrp9be + gbrpf32be gray10be gray12be gray16be @@ -362,6 +364,8 @@ isRGB: gbrap12le gbrap16be gbrap16le + gbrapf32be + gbrapf32le gbrp gbrp10be gbrp10le @@ -373,6 +377,8 @@ isRGB: gbrp16le gbrp9be gbrp9le + gbrpf32be + gbrpf32le rgb0 rgb24 rgb32 @@ -498,6 +504,8 @@ AnyRGB: gbrap12le gbrap16be gbrap16le + gbrapf32be + gbrapf32le gbrp gbrp10be gbrp10le @@ -509,6 +517,8 @@ AnyRGB: gbrp16le gbrp9be gbrp9le + gbrpf32be + gbrpf32le monob monow rgb0 @@ -543,6 +553,8 @@ ALPHA: gbrap12le gbrap16be gbrap16le + gbrapf32be + gbrapf32le pal8 rgb32 rgb32_1 @@ -645,6 +657,8 @@ Planar: gbrap12le gbrap16be gbrap16le + gbrapf32be + gbrapf32le gbrp gbrp10be gbrp10le @@ -656,6 +670,8 @@ Planar: gbrp16le gbrp9be gbrp9le + gbrpf32be + gbrpf32le nv12 nv16 nv20be @@ -790,6 +806,8 @@ PlanarRGB: gbrap12le gbrap16be gbrap16le + gbrapf32be + gbrapf32le gbrp gbrp10be gbrp10le @@ -801,6 +819,8 @@ PlanarRGB: gbrp16le gbrp9be gbrp9le + gbrpf32be + gbrpf32le usePal: bgr4_byte