From patchwork Thu Aug 4 22:18:19 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 37139 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:1649:b0:8b:613a:194d with SMTP id no9csp658832pzb; Thu, 4 Aug 2022 15:19:06 -0700 (PDT) X-Google-Smtp-Source: AA6agR7aFtdoONR1mkh2imz2so2pyqPafumX93kIeQM0jh+oRJh3CX4atiTSrBr8zo9wecIamSpU X-Received: by 2002:a17:907:7615:b0:730:e1ad:b132 with SMTP id jx21-20020a170907761500b00730e1adb132mr1403805ejc.744.1659651546652; Thu, 04 Aug 2022 15:19:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1659651546; cv=none; d=google.com; s=arc-20160816; b=vEY0hkLXNPs5gFmUuFeL4Bw4PAy3o1t3piCDTB/7ghNo/LZpsCzKxV4yoXtAA3I8y+ Bjj+SDn5OBMBBHD1MlrtpKghCXBkOgERX4I57Mh+8xzLYOogk/0MoQOWYf+8atzu/6NP iHAKY1XCYTdvXfXCs2/C+1ESPQRtbd0Mj7DsqgSxCoUv/r3zP8GK3E5uf9AvAu0Pixt3 4jh4XIz9+GXrw4zG/TZR5b3Kdho9YkoH89T9WnTb1mRqxFQ40ENSG0TmEk98z12KaCGO gWjnDyCbWZYZmvlXxSPoxuN2HPccwRplMosx02K08UCPozobxJSGmdwAad4PoM9Ktdjk tkUw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding: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=XlOchcgsZhUGjHnpWNalXD3GWWLGxcb9n466kXW10Zk=; b=aRY5/8mMOqocKcDDdA9Uv0BtYizMnN3qQEdMPWZRoeZdEGDb8YA83VE2DTBYUx8n8+ YRRLf9Wu17gYw798kwGrwoB7eyre5P54Vo+6EpbhJt8f3AsqiaXHfP+boJl2GQuTg+El 25qJJQFPD5B6vYrz+FB8RPSM27pOf8xERGRXO78VhfNZ68CZwsP4L1UYRvfTsdP8OYab qge6Rx33SqYICH4W1nLicDo4X71A8S7lsO1DYWZfoYKeL32o34txYJeG6lJZJRo0y1tD xyThaWNUFmeUhKNTbfEHUVHdfNfUCFM5vHxbZff34iK3mAf1dJz9yKjBAKV5eYCiJGhN 6JwA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=E+ThodHm; 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 bl1-20020a170906c24100b006ffe48f0c5bsi1707606ejb.346.2022.08.04.15.19.04; Thu, 04 Aug 2022 15:19:06 -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=20210112 header.b=E+ThodHm; 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 5ED2468B986; Fri, 5 Aug 2022 01:19:01 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-vs1-f47.google.com (mail-vs1-f47.google.com [209.85.217.47]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4D7FE68B810 for ; Fri, 5 Aug 2022 01:18:54 +0300 (EEST) Received: by mail-vs1-f47.google.com with SMTP id 129so840421vsq.8 for ; Thu, 04 Aug 2022 15:18:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc; bh=Pjdc+N5zokgUEmUjP4/iBm0BkKKYFUWqyRpQmBP9vBs=; b=E+ThodHmLQtOKXgMhrXJC/zSQ6PjasXTFijUDy5aiKztcHv3OGMcbIfcLOTsA3TcoU CSDxppG98A0m29HwWxrX9szVLtZ1+5X6ZMozbJcwhQ0NlF8hFdDz2koSl66HrwV41bFI ZIBUr+fIiBuTdun0Sb54u35PTFwanwcVwrkOyWxdbl31h259Cfzcufsi3J4fiJsIeCs0 MCaR27IfwGy/zLoR1fl3YF9vJbyZ0CCvf0iYPkQy4TGrhSFH+LjzlXXmUxDiBKnWEDB2 rz9kEe0lY7M7NhjSp5BJunOr0J3ohFL+EyzDOBznEc1aJCkiQKE9deBhmGWV2v62czUn 6x9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc; bh=Pjdc+N5zokgUEmUjP4/iBm0BkKKYFUWqyRpQmBP9vBs=; b=qLlcdNBQannG642uW9UsYFbN/+ZZcRy9gXl3yM8+jsbWkF0OEcSJUGeL7XK58xavZo vHj3V2KMsgdD+UIC7e/Khmn89cUtDpc+fh4d2hlLY96NQtbk6qD6CV+YH1ENQKg3g0m0 KDM5XshwvP7WVG6qvYMrjjj8/MTooctD7uUygAwdRihAaJmg6NcMGFCkRV+d3N/B/uiJ 8f4bX+e38WzJccaOU+VcRUaWZ/P9eD48d5H60qZ9IJ3z2sKTciO3HkAtw/sbvxE2UX7u 3iU0GKWw5/tdwq2nFFKu+VMk7X3/uxZezwZ0FVwusJay44J3HjMqlFlrVglooW3ZkUw6 6GAg== X-Gm-Message-State: ACgBeo2klMmVUR0qc3qtf21UpN0+Wa4w2HvIPDAx7lMU3E4MtkTyYupc EcLGWqXGH7K5AP9aBzlyb7aNFDM3BLk= X-Received: by 2002:a67:e012:0:b0:385:33b0:8fbf with SMTP id c18-20020a67e012000000b0038533b08fbfmr1931754vsl.8.1659651531608; Thu, 04 Aug 2022 15:18:51 -0700 (PDT) Received: from localhost.localdomain ([186.136.131.204]) by smtp.gmail.com with ESMTPSA id w8-20020ab07288000000b00384293c4199sm2039371uao.23.2022.08.04.15.18.50 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Aug 2022 15:18:50 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Thu, 4 Aug 2022 19:18:19 -0300 Message-Id: <20220804221819.3720-1-jamrial@gmail.com> X-Mailer: git-send-email 2.37.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] swscale/input: add VUYA input support 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: EvNek5KQ+gdP Signed-off-by: James Almer --- libswscale/input.c | 35 +++++++++++++++++++++++++++++++++++ libswscale/utils.c | 1 + 2 files changed, 36 insertions(+) diff --git a/libswscale/input.c b/libswscale/input.c index 750367b28b..68abc4d62c 100644 --- a/libswscale/input.c +++ b/libswscale/input.c @@ -650,6 +650,32 @@ static void read_ayuv64le_A_c(uint8_t *dst, const uint8_t *src, const uint8_t *u AV_WN16(dst + i * 2, AV_RL16(src + i * 8)); } +static void read_vuya_UV_c(uint8_t *dstU, uint8_t *dstV, const uint8_t *unused0, const uint8_t *src, + const uint8_t *unused1, int width, uint32_t *unused2) +{ + int i; + for (i = 0; i < width; i++) { + dstU[i] = src[i * 4 + 1]; + dstV[i] = src[i * 4]; + } +} + +static void read_vuya_Y_c(uint8_t *dst, const uint8_t *src, const uint8_t *unused0, const uint8_t *unused1, int width, + uint32_t *unused2) +{ + int i; + for (i = 0; i < width; i++) + dst[i] = src[i * 4 + 2]; +} + +static void read_vuya_A_c(uint8_t *dst, const uint8_t *src, const uint8_t *unused0, const uint8_t *unused1, int width, + uint32_t *unused2) +{ + int i; + for (i = 0; i < width; i++) + dst[i] = src[i * 4 + 3]; +} + /* This is almost identical to the previous, end exists only because * yuy2ToY/UV)(dst, src + 1, ...) would have 100% unaligned accesses. */ static void uyvyToY_c(uint8_t *dst, const uint8_t *src, const uint8_t *unused1, const uint8_t *unused2, int width, @@ -1229,6 +1255,9 @@ av_cold void ff_sws_init_input_funcs(SwsContext *c) c->chrToYV12 = bswap16UV_c; break; #endif + case AV_PIX_FMT_VUYA: + c->chrToYV12 = read_vuya_UV_c; + break; case AV_PIX_FMT_AYUV64LE: c->chrToYV12 = read_ayuv64le_UV_c; break; @@ -1591,6 +1620,9 @@ av_cold void ff_sws_init_input_funcs(SwsContext *c) case AV_PIX_FMT_YA16BE: c->lumToYV12 = read_ya16be_gray_c; break; + case AV_PIX_FMT_VUYA: + c->lumToYV12 = read_vuya_Y_c; + break; case AV_PIX_FMT_AYUV64LE: c->lumToYV12 = read_ayuv64le_Y_c; break; @@ -1746,6 +1778,9 @@ av_cold void ff_sws_init_input_funcs(SwsContext *c) case AV_PIX_FMT_YA16BE: c->alpToYV12 = read_ya16be_alpha_c; break; + case AV_PIX_FMT_VUYA: + c->alpToYV12 = read_vuya_A_c; + break; case AV_PIX_FMT_AYUV64LE: c->alpToYV12 = read_ayuv64le_A_c; break; diff --git a/libswscale/utils.c b/libswscale/utils.c index c0504a6dfc..bc3d1c955c 100644 --- a/libswscale/utils.c +++ b/libswscale/utils.c @@ -258,6 +258,7 @@ static const FormatEntry format_entries[] = { [AV_PIX_FMT_P416BE] = { 1, 1 }, [AV_PIX_FMT_P416LE] = { 1, 1 }, [AV_PIX_FMT_NV16] = { 1, 1 }, + [AV_PIX_FMT_VUYA] = { 1, 0 }, }; int ff_shuffle_filter_coefficients(SwsContext *c, int *filterPos,