From patchwork Thu Jul 22 02:21:20 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 29002 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a5d:965a:0:0:0:0:0 with SMTP id d26csp150607ios; Wed, 21 Jul 2021 19:37:44 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwbSzohUmYp986y+xp9ghcso5ohqMH+y/XMaGow1PHGcGwbZ7eCQ5REgZ+QRHvdiG5uL0jX X-Received: by 2002:a17:906:9c84:: with SMTP id fj4mr41176709ejc.438.1626921464433; Wed, 21 Jul 2021 19:37:44 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id i19si30845753edj.376.2021.07.21.19.37.43; Wed, 21 Jul 2021 19:37:44 -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=@outlook.com header.s=selector1 header.b=Xo4dU0NN; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9A3EC68A360; Thu, 22 Jul 2021 05:37:39 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-oln040092075050.outbound.protection.outlook.com [40.92.75.50]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 86C06680087 for ; Thu, 22 Jul 2021 05:37:32 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JoMUhEdb2zJcUEdlh/uOl2nLFviQVho5QLp2QPDaESrFmlCTfozO2XWAOVqH/QROnmvRFQ/HPE38QUdaN5F65VriB7GXzZnEiUlF3x2AgekjjzbdnIsHSJm5IM0CV4zQQr9Kqc86e6VZxNhDmZGu5IjSKrOoPig7+YEHD2Cv9EvyYfXoUMe6i7auFtRc3KIXuIStIGaHaLqjl2JlpFZWWyHSRn/ZyEk5jDl6nds92jRzj69IMurCxuviBBuPsLKPUx0hEsXoaR5LzaiClHFjmVijCVUY1SjTD+5l33ofLZRQh2kmkPHKJTGctpChHzMXAMU1Dtiqplgkpi5QTQeRuQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=JUF1wJfgS/U6qfVVeFx+keI6HNKdf1H10GcvUmrB9nM=; b=Yx1lTkJHl8oNZoptroHSSW2D7d6OSnLsnX7j/o6dR+uzXRaFzygGfmP3lEU6WNIF5ZUa9j8ieofw1LxiZh58/OzXxQDVY4nQq7L8Kh2MzINjSM9NAD/+YJ1Y1PvQ2c4MIJZHBH3O+XCDnyZbAgBjPAQbTsOMt7ZF3YEwCpxSV/GabHMBFoaOcI3ibc2/1Q20gZR/FMGvt+bOJrl8biWf4RXxYwU8LN0+SmC9DaMMrjeHtSxAVmhov6RSLmrnmIm/F/PburucinjdT7qwppjZGj6JhH57EGCj/CdSAdwTAAbCc8zY/2/4XJUMmOnzrXUpx3Aw3ezu6F2tfy7onuC7Vg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=JUF1wJfgS/U6qfVVeFx+keI6HNKdf1H10GcvUmrB9nM=; b=Xo4dU0NNzpJBkzNHRXjWOy7Wvt+aJnTYvV81aJx53kL8wqkedbtu1niS3FziwOnC6XAI7KzFzxrtWwhNEJZFfJdN3ekkvjZ2gETswJbMpEXbK3FlFnrYTEjYH2vhjmoTjduAgeDd/KiRaAWYN51U8OkF2iE6WK9Wc1PqQEcOWRW1HGVdDcIuiJNCBbvRNoScSu7aMHiQOoTPZnILSBz9JoM5gNQdVYZIADUpLoPDd8qMXHCPDF0QwjbqEJSb5MxF+riZUkc+lSPvLaeyXm5U5aWucWSzjtFEFKuPWCGiFC4viBpvmOIZ72YDRnD3WEWsH60syur75lApCRcTJhMQag== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AM6PR03MB6023.eurprd03.prod.outlook.com (2603:10a6:20b:ec::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4331.29; Thu, 22 Jul 2021 02:21:32 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::c9b2:14f8:d555:6f2d]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::c9b2:14f8:d555:6f2d%7]) with mapi id 15.20.4331.034; Thu, 22 Jul 2021 02:21:32 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 22 Jul 2021 04:21:20 +0200 Message-ID: X-Mailer: git-send-email 2.30.2 X-TMN: [W6rFitjXUYxGcZR+/aFmgza83vuFTPGe] X-ClientProxiedBy: AM8P190CA0030.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:219::35) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20210722022120.208317-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sblaptop.fritz.box (188.192.94.230) by AM8P190CA0030.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:219::35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4352.24 via Frontend Transport; Thu, 22 Jul 2021 02:21:31 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a9e8a1dc-9be9-4faa-d77d-08d94cb76b9c X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiQrzqJ7yGPlN3UYvVbnUBPerqhdPkaxuiKF1POgvnlnev3ofXVxfZs2trY9y2H7zBojamr1HfPzhvo8zQyQ4dLLzGV2i7MRzWdv3hUmd8HKQaphWvFIstQPcWmOi2pMb+g6zBCK6ZGhXGWbF+3+9U9r+l2zDd2xcCxN2pF4nWlHsqka8ncyW8yMjbwu5Y/C1jq17Aw13L6JrpZAdBX5PmcApzXbjAm8MiiQNSFIFOb/J9x2sDCk6cOFZakBsdKHfZW5ty4DPczm27qSY2R1fEPvxjcUmkxOC60guhYRX7z9+ValUU8lz0svKuckFQ5aWtH69sBsPO8auqz8DmFWMgaOnn+khYQ7B8EG89iaKEiF7mU8RPfA84iz7G73SpOUnmNn874PrKnHHFy8fUQvRI4ubj6qIghNGuHQBkpz1TwReFY6grBDkL2RarY1NLiCOUTG0hHioo8P+TMaJeUgY/VOjuwUziR+O030+Y4rVB1y0U8BY3NBU57rh5Tl+bWmrOCSoOlA+m1BwpY4C5t/C2TsYFbHqE9IaM4Tl5J5rx4CB7qZ1y3Nl3dx37/k6dTTSBqQB3UwS9bfSWMFZLKbFsOa+Uy/P2rYneEuJ1HgGZDjRvPMyaMDipmpbgfgrl1GbBvtwnHSUysfUf38WeYlj4/NIAAdPI4Do7BxCumFNJXNLB7+OSL4VIgT0I304O/wkYjGnAx3RciykQmcGet317OjqTSIujJ6vlolc632Pod/PjxDdDgqlw3XvhugKzPB9Qs= X-MS-TrafficTypeDiagnostic: AM6PR03MB6023: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ooVakLSWvRsaMt5SDu4dXb5l/DabPjpOPxsj/PZC+g1MrFk6nrK2B7m6qrPXYJSRwY1aqvtyg8jC1V5JxGGjGPihwAUEWaGp95XHdVTPvovv05NEKAuKtqm7AJAKZiNi8ik0XRsGEJKgJcyZVvQQba00WBf5E5n0+gZhC9l4MS+Kv+/flbuCk/MgqRtP99Y288MxjNlyf4cSZzKCCC9wEPpKiQcxnXl3bMOJBT97HyDfy6wvT1b0Zp5vVI2ozIOgvlurdtkLy0wyyMTymFB1pyqXxLBPBdB2UdZTVXlCHS6trXEFWyeI+sfIv4b16Anv1u5g+qVhutD7HZUtmfomhbrt4FGZZke5xGBlYoSg9GtOHnaABIlo3moxfF5Wns+N/eSCGGQIZMKgcFtNWcLDP2cBfjy/7K3lQurrwFpG26RTu5H75XYelEOiuuwvjKF7 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: HTrwlygVRSMcb5bT/kQxPdQfqvfBl2OIlkcwZoXBFaz2+XGC341s31kHsH4AaS62ovuvhmnlgbfXu9+jzyJL0V8H9tsXk3k0uuhYLavDNrrqhxObxssJJdkT3mkBM5zB6jxTylqmLyKfT12PKQPfNw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a9e8a1dc-9be9-4faa-d77d-08d94cb76b9c X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jul 2021 02:21:32.1028 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR03MB6023 Subject: [FFmpeg-devel] [PATCH] avformat/yuv4mpegdec: Use table instead of repeated "else if" 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: LhqRlM11B8RE The code savings more than offset the size of the table (1936B vs 768B with GCC 10.3 at -O3). Signed-off-by: Andreas Rheinhardt --- libavformat/yuv4mpegdec.c | 183 +++++++++++++++++--------------------- 1 file changed, 80 insertions(+), 103 deletions(-) diff --git a/libavformat/yuv4mpegdec.c b/libavformat/yuv4mpegdec.c index 146533c4cc..c327aa9d3f 100644 --- a/libavformat/yuv4mpegdec.c +++ b/libavformat/yuv4mpegdec.c @@ -19,6 +19,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/avstring.h" #include "libavutil/imgutils.h" #include "avformat.h" @@ -77,67 +78,52 @@ static int yuv4_read_header(AVFormatContext *s) tokstart = tokend; break; case 'C': // Color space - if (strncmp("420jpeg", tokstart, 7) == 0) { - pix_fmt = AV_PIX_FMT_YUV420P; - chroma_sample_location = AVCHROMA_LOC_CENTER; - } else if (strncmp("420mpeg2", tokstart, 8) == 0) { - pix_fmt = AV_PIX_FMT_YUV420P; - chroma_sample_location = AVCHROMA_LOC_LEFT; - } else if (strncmp("420paldv", tokstart, 8) == 0) { - pix_fmt = AV_PIX_FMT_YUV420P; - chroma_sample_location = AVCHROMA_LOC_TOPLEFT; - } else if (strncmp("420p16", tokstart, 6) == 0) { - pix_fmt = AV_PIX_FMT_YUV420P16; - } else if (strncmp("422p16", tokstart, 6) == 0) { - pix_fmt = AV_PIX_FMT_YUV422P16; - } else if (strncmp("444p16", tokstart, 6) == 0) { - pix_fmt = AV_PIX_FMT_YUV444P16; - } else if (strncmp("420p14", tokstart, 6) == 0) { - pix_fmt = AV_PIX_FMT_YUV420P14; - } else if (strncmp("422p14", tokstart, 6) == 0) { - pix_fmt = AV_PIX_FMT_YUV422P14; - } else if (strncmp("444p14", tokstart, 6) == 0) { - pix_fmt = AV_PIX_FMT_YUV444P14; - } else if (strncmp("420p12", tokstart, 6) == 0) { - pix_fmt = AV_PIX_FMT_YUV420P12; - } else if (strncmp("422p12", tokstart, 6) == 0) { - pix_fmt = AV_PIX_FMT_YUV422P12; - } else if (strncmp("444p12", tokstart, 6) == 0) { - pix_fmt = AV_PIX_FMT_YUV444P12; - } else if (strncmp("420p10", tokstart, 6) == 0) { - pix_fmt = AV_PIX_FMT_YUV420P10; - } else if (strncmp("422p10", tokstart, 6) == 0) { - pix_fmt = AV_PIX_FMT_YUV422P10; - } else if (strncmp("444p10", tokstart, 6) == 0) { - pix_fmt = AV_PIX_FMT_YUV444P10; - } else if (strncmp("420p9", tokstart, 5) == 0) { - pix_fmt = AV_PIX_FMT_YUV420P9; - } else if (strncmp("422p9", tokstart, 5) == 0) { - pix_fmt = AV_PIX_FMT_YUV422P9; - } else if (strncmp("444p9", tokstart, 5) == 0) { - pix_fmt = AV_PIX_FMT_YUV444P9; - } else if (strncmp("420", tokstart, 3) == 0) { - pix_fmt = AV_PIX_FMT_YUV420P; - chroma_sample_location = AVCHROMA_LOC_CENTER; - } else if (strncmp("411", tokstart, 3) == 0) { - pix_fmt = AV_PIX_FMT_YUV411P; - } else if (strncmp("422", tokstart, 3) == 0) { - pix_fmt = AV_PIX_FMT_YUV422P; - } else if (strncmp("444alpha", tokstart, 8) == 0 ) { - pix_fmt = AV_PIX_FMT_YUVA444P; - } else if (strncmp("444", tokstart, 3) == 0) { - pix_fmt = AV_PIX_FMT_YUV444P; - } else if (strncmp("mono16", tokstart, 6) == 0) { - pix_fmt = AV_PIX_FMT_GRAY16; - } else if (strncmp("mono12", tokstart, 6) == 0) { - pix_fmt = AV_PIX_FMT_GRAY12; - } else if (strncmp("mono10", tokstart, 6) == 0) { - pix_fmt = AV_PIX_FMT_GRAY10; - } else if (strncmp("mono9", tokstart, 5) == 0) { - pix_fmt = AV_PIX_FMT_GRAY9; - } else if (strncmp("mono", tokstart, 4) == 0) { - pix_fmt = AV_PIX_FMT_GRAY8; - } else { + { + static const struct { +#define MAX_PIX_FMT_LENGTH 8 + char name[MAX_PIX_FMT_LENGTH + 1]; +#undef MAX_PIX_FMT_LENGTH + enum AVPixelFormat pix_fmt; + enum AVChromaLocation chroma_loc; + } pix_fmt_array[] = { + { "420jpeg", AV_PIX_FMT_YUV420P, AVCHROMA_LOC_CENTER }, + { "420mpeg2", AV_PIX_FMT_YUV420P, AVCHROMA_LOC_LEFT }, + { "420paldv", AV_PIX_FMT_YUV420P, AVCHROMA_LOC_TOPLEFT }, + { "420p16", AV_PIX_FMT_YUV420P16, AVCHROMA_LOC_UNSPECIFIED }, + { "422p16", AV_PIX_FMT_YUV422P16, AVCHROMA_LOC_UNSPECIFIED }, + { "444p16", AV_PIX_FMT_YUV444P16, AVCHROMA_LOC_UNSPECIFIED }, + { "420p14", AV_PIX_FMT_YUV420P14, AVCHROMA_LOC_UNSPECIFIED }, + { "422p14", AV_PIX_FMT_YUV422P14, AVCHROMA_LOC_UNSPECIFIED }, + { "444p14", AV_PIX_FMT_YUV444P14, AVCHROMA_LOC_UNSPECIFIED }, + { "420p12", AV_PIX_FMT_YUV420P12, AVCHROMA_LOC_UNSPECIFIED }, + { "422p12", AV_PIX_FMT_YUV422P12, AVCHROMA_LOC_UNSPECIFIED }, + { "444p12", AV_PIX_FMT_YUV444P12, AVCHROMA_LOC_UNSPECIFIED }, + { "420p10", AV_PIX_FMT_YUV420P10, AVCHROMA_LOC_UNSPECIFIED }, + { "422p10", AV_PIX_FMT_YUV422P10, AVCHROMA_LOC_UNSPECIFIED }, + { "444p10", AV_PIX_FMT_YUV444P10, AVCHROMA_LOC_UNSPECIFIED }, + { "420p9", AV_PIX_FMT_YUV420P9, AVCHROMA_LOC_UNSPECIFIED }, + { "422p9", AV_PIX_FMT_YUV422P9, AVCHROMA_LOC_UNSPECIFIED }, + { "444p9", AV_PIX_FMT_YUV444P9, AVCHROMA_LOC_UNSPECIFIED }, + { "420", AV_PIX_FMT_YUV420P, AVCHROMA_LOC_CENTER }, + { "411", AV_PIX_FMT_YUV411P, AVCHROMA_LOC_UNSPECIFIED }, + { "422", AV_PIX_FMT_YUV422P, AVCHROMA_LOC_UNSPECIFIED }, + { "444alpha", AV_PIX_FMT_YUVA444P, AVCHROMA_LOC_UNSPECIFIED }, + { "444", AV_PIX_FMT_YUV444P, AVCHROMA_LOC_UNSPECIFIED }, + { "mono16", AV_PIX_FMT_GRAY16, AVCHROMA_LOC_UNSPECIFIED }, + { "mono12", AV_PIX_FMT_GRAY12, AVCHROMA_LOC_UNSPECIFIED }, + { "mono10", AV_PIX_FMT_GRAY10, AVCHROMA_LOC_UNSPECIFIED }, + { "mono9", AV_PIX_FMT_GRAY9, AVCHROMA_LOC_UNSPECIFIED }, + { "mono", AV_PIX_FMT_GRAY8, AVCHROMA_LOC_UNSPECIFIED }, + }; + for (i = 0; i < FF_ARRAY_ELEMS(pix_fmt_array); i++) { + if (av_strstart(tokstart, pix_fmt_array[i].name, NULL)) { + pix_fmt = pix_fmt_array[i].pix_fmt; + if (pix_fmt_array[i].chroma_loc != AVCHROMA_LOC_UNSPECIFIED) + chroma_sample_location = pix_fmt_array[i].chroma_loc; + break; + } + } + if (i == FF_ARRAY_ELEMS(pix_fmt_array)) { av_log(s, AV_LOG_ERROR, "YUV4MPEG stream contains an unknown " "pixel format.\n"); return AVERROR_INVALIDDATA; @@ -145,6 +131,7 @@ static int yuv4_read_header(AVFormatContext *s) while (tokstart < header_end && *tokstart != 0x20) tokstart++; break; + } case 'I': // Interlace type switch (*tokstart++){ case '?': @@ -179,50 +166,40 @@ static int yuv4_read_header(AVFormatContext *s) break; case 'X': // Vendor extensions if (strncmp("YSCSS=", tokstart, 6) == 0) { + static const struct { +#define MAX_PIX_FMT_LENGTH 8 + char name[MAX_PIX_FMT_LENGTH + 1]; +#undef MAX_PIX_FMT_LENGTH + enum AVPixelFormat pix_fmt; + } pix_fmt_array[] = { + { "420JPEG", AV_PIX_FMT_YUV420P }, + { "420MPEG2", AV_PIX_FMT_YUV420P }, + { "420PALDV", AV_PIX_FMT_YUV420P }, + { "420P9", AV_PIX_FMT_YUV420P9 }, + { "422P9", AV_PIX_FMT_YUV422P9 }, + { "444P9", AV_PIX_FMT_YUV444P9 }, + { "420P10", AV_PIX_FMT_YUV420P10 }, + { "444P10", AV_PIX_FMT_YUV444P10 }, + { "420P12", AV_PIX_FMT_YUV420P12 }, + { "422P12", AV_PIX_FMT_YUV422P12 }, + { "444P12", AV_PIX_FMT_YUV444P12 }, + { "420P14", AV_PIX_FMT_YUV420P14 }, + { "422P14", AV_PIX_FMT_YUV422P14 }, + { "444P14", AV_PIX_FMT_YUV444P14 }, + { "420P16", AV_PIX_FMT_YUV420P16 }, + { "422P16", AV_PIX_FMT_YUV422P16 }, + { "444P16", AV_PIX_FMT_YUV444P16 }, + { "411", AV_PIX_FMT_YUV411P }, + { "422", AV_PIX_FMT_YUV422P }, + { "444", AV_PIX_FMT_YUV444P }, + }; // Older nonstandard pixel format representation tokstart += 6; - if (strncmp("420JPEG", tokstart, 7) == 0) - alt_pix_fmt = AV_PIX_FMT_YUV420P; - else if (strncmp("420MPEG2", tokstart, 8) == 0) - alt_pix_fmt = AV_PIX_FMT_YUV420P; - else if (strncmp("420PALDV", tokstart, 8) == 0) - alt_pix_fmt = AV_PIX_FMT_YUV420P; - else if (strncmp("420P9", tokstart, 5) == 0) - alt_pix_fmt = AV_PIX_FMT_YUV420P9; - else if (strncmp("422P9", tokstart, 5) == 0) - alt_pix_fmt = AV_PIX_FMT_YUV422P9; - else if (strncmp("444P9", tokstart, 5) == 0) - alt_pix_fmt = AV_PIX_FMT_YUV444P9; - else if (strncmp("420P10", tokstart, 6) == 0) - alt_pix_fmt = AV_PIX_FMT_YUV420P10; - else if (strncmp("422P10", tokstart, 6) == 0) - alt_pix_fmt = AV_PIX_FMT_YUV422P10; - else if (strncmp("444P10", tokstart, 6) == 0) - alt_pix_fmt = AV_PIX_FMT_YUV444P10; - else if (strncmp("420P12", tokstart, 6) == 0) - alt_pix_fmt = AV_PIX_FMT_YUV420P12; - else if (strncmp("422P12", tokstart, 6) == 0) - alt_pix_fmt = AV_PIX_FMT_YUV422P12; - else if (strncmp("444P12", tokstart, 6) == 0) - alt_pix_fmt = AV_PIX_FMT_YUV444P12; - else if (strncmp("420P14", tokstart, 6) == 0) - alt_pix_fmt = AV_PIX_FMT_YUV420P14; - else if (strncmp("422P14", tokstart, 6) == 0) - alt_pix_fmt = AV_PIX_FMT_YUV422P14; - else if (strncmp("444P14", tokstart, 6) == 0) - alt_pix_fmt = AV_PIX_FMT_YUV444P14; - else if (strncmp("420P16", tokstart, 6) == 0) - alt_pix_fmt = AV_PIX_FMT_YUV420P16; - else if (strncmp("422P16", tokstart, 6) == 0) - alt_pix_fmt = AV_PIX_FMT_YUV422P16; - else if (strncmp("444P16", tokstart, 6) == 0) - alt_pix_fmt = AV_PIX_FMT_YUV444P16; - else if (strncmp("411", tokstart, 3) == 0) - alt_pix_fmt = AV_PIX_FMT_YUV411P; - else if (strncmp("422", tokstart, 3) == 0) - alt_pix_fmt = AV_PIX_FMT_YUV422P; - else if (strncmp("444", tokstart, 3) == 0) - alt_pix_fmt = AV_PIX_FMT_YUV444P; + for (size_t i = 0; i < FF_ARRAY_ELEMS(pix_fmt_array); i++) + if (av_strstart(tokstart, pix_fmt_array[i].name, NULL)) { + alt_pix_fmt = pix_fmt_array[i].pix_fmt; + break; + } } else if (strncmp("COLORRANGE=", tokstart, 11) == 0) { tokstart += 11; if (strncmp("FULL",tokstart, 4) == 0)