From patchwork Wed Sep 20 12:23:32 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vittorio Giovara X-Patchwork-Id: 5207 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.36.26 with SMTP id f26csp685251jaa; Wed, 20 Sep 2017 05:32:07 -0700 (PDT) X-Received: by 10.223.139.27 with SMTP id n27mr4750182wra.250.1505910727380; Wed, 20 Sep 2017 05:32:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1505910727; cv=none; d=google.com; s=arc-20160816; b=dnrASYcYfjGBi7oNsFkaOgx9v6fQdouMbPqOoFAM9F4Erl9BJHzpWdA7fBuE+EFjbh zWw8t5auqFE0ii5cTBUAuwlEsTYpGttN+YIxKjW3JDjdb7zbR99AL372t88WhwHX8Or+ /mAGmIPddVgyWgmo+Tl+vkBkEbKLoOBo4R6ZkHkTcRIKZwsZexvyUfG/QIdw3CA1D7sl 0TMAZwVNxfTj9qoJF3aulyoAiQyLLs/6cw6qa01G1dVlXK75OPjqA29WkYBo/HXmVXms ouv6hS2OwklJZoGmLi1NOYy5Pz6Aris/c9C/W2fMHJ09P7Pft5Z3qeGEeLw+uXdT3Dds ISQA== 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:message-id:date:to:from:dkim-signature :delivered-to:arc-authentication-results; bh=0f+0SnF8++PJHQLOzFEEMvmgjWQaX8C9EGQ+ZslSUVg=; b=rKJMZqlu+ml7VjWn2v9Luafn0NFHeBgIkGQNX+dc2pTVfrb6rUaoHRYtLhIMeZNpcw THUeHc5TOXkQk39kCRLkKdiPHfKzNMhGrpzoOSIAL4ojbavcRMh6bSEuNfyYcNep3qMW c37+ab4s1zEW/2Fd+yM6lTCyK0wIjKDRqzLka+yiF5u31r4/xI3IqcAFgp2sb8IWUQ4v r+T4W1J72eDGqdWOceGa9Wrn+sttBwmWb11cZa7gWpy3fOTU8y5AF+t9fdi8Mzl52o6k 6S171Ngd1GV46ZqDubnSEyDunzmirEK43Apg5fhlueqPwpl5cD+4v1Jsuhoi7hhQjPcg 5lrw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=NgmkchoB; 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 k17si1296156wmh.67.2017.09.20.05.32.06; Wed, 20 Sep 2017 05:32:07 -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=NgmkchoB; 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 76C0A6883EA; Wed, 20 Sep 2017 15:31:56 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr0-f194.google.com (mail-wr0-f194.google.com [209.85.128.194]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E8627688356 for ; Wed, 20 Sep 2017 15:31:49 +0300 (EEST) Received: by mail-wr0-f194.google.com with SMTP id g50so1421352wra.3 for ; Wed, 20 Sep 2017 05:31: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; bh=ZmCE+tuch+CD8JcBk2em0CBUEA1YqaPVu7x2vH0yJL8=; b=NgmkchoBvV3BY6Alc9Rhi7E0Pch+MRZ3yeDkI1AqZJup99jEe80+lP3GDFjCWEUZ6k aod0TenxyHrbQFKlML9L1Jo0NV0HU/uf4Yn0Oj/PqMHof9aUuIFxy0Ql8N7wG7SSyOtQ ALJaA4BHoeODok5izDZDmeEkDuhop1WZ1s9O0nVg0WJZjOOw9BFb8+aOoiespZld0LtW R9AkMdvPSBlxHYvYpCAVbuV6HBrQohOH6qYXjWQKyiYkEXVbuzo+3pn9EZapXoEMUBr7 r7pZ3CM3hNmQGYLWjoklh3wMdsJtDWNl8eIi1W4JjXCmq2OaDwNuQ25PRaanWYiMA8T6 k34A== 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; bh=ZmCE+tuch+CD8JcBk2em0CBUEA1YqaPVu7x2vH0yJL8=; b=iA67IjiCtPFkwu6FdsRSMf3t2ffDccR3RfelC+hnmzOVSH7rg/UyO3kJ9r10gOlWnc G2nx2pTGccRcer8E9j7b31a5lBcHlFIU/ZXNTmybr1Emj4rbv9dnpSEz4G9aH3opS4DE OPsJzyjWKfUvVPnfPEXKEs/REyolVVOCuskEEDkmN9C9mIRItST+XIaOBHVOja93sKPM CE96aIqGnZ+xP5zBOF8Mtkg/YqOGQkkNAPFcdIDrVHs7yyKruln/C7W7lWOhDCQMoCo7 sT863AYJ+J2gG3cPdNPohEuzYF//QnvJno1Ze6BQg0C2VtluJ2t8zaJ6Scur4UJ/Dd8O WmiQ== X-Gm-Message-State: AHPjjUj5NAk6tYZ8BkOqR4aTV3dc099knuWUIx7EEtjpn/av44Th6s8V cANSbh8HpQs3Q9xhuSrou5BDxw== X-Google-Smtp-Source: AOwi7QDznoKNyvgTCAG/D18SSKP+Sy6cWTO8TF3jvjnC46qibpOwFDUaVPp3MN0CXIDD3LsHuL9lYA== X-Received: by 10.223.183.27 with SMTP id l27mr4250278wre.138.1505910214575; Wed, 20 Sep 2017 05:23:34 -0700 (PDT) Received: from vimacbookpro.vimeows.com (93-36-167-184.ip61.fastwebnet.it. [93.36.167.184]) by smtp.gmail.com with ESMTPSA id q188sm1499525wmb.43.2017.09.20.05.23.33 for (version=TLS1 cipher=AES128-SHA bits=128/128); Wed, 20 Sep 2017 05:23:33 -0700 (PDT) From: Vittorio Giovara To: ffmpeg-devel@ffmpeg.org Date: Wed, 20 Sep 2017 14:23:32 +0200 Message-Id: <20170920122332.50329-1-vittorio.giovara@gmail.com> X-Mailer: git-send-email 2.14.1 Subject: [FFmpeg-devel] [PATCH] pixdesc: Add API to map color property name to enum value 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 --- Updated following review. Vittorio libavutil/pixdesc.c | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++ libavutil/pixdesc.h | 25 +++++++++++++++++++++ 2 files changed, 90 insertions(+) diff --git a/libavutil/pixdesc.c b/libavutil/pixdesc.c index 33aa2d705f..26e208a947 100644 --- a/libavutil/pixdesc.c +++ b/libavutil/pixdesc.c @@ -2749,26 +2749,91 @@ const char *av_color_range_name(enum AVColorRange range) color_range_names[range] : NULL; } +int av_color_range_from_name(const char *name) +{ + int i; + + for (i = 0; i < FF_ARRAY_ELEMS(color_range_names); i++) { + size_t len = strlen(color_range_names[i]); + if (!strncmp(color_range_names[i], name, len)) + return i; + } + + return AVERROR(ENOSYS); +} + const char *av_color_primaries_name(enum AVColorPrimaries primaries) { return (unsigned) primaries < AVCOL_PRI_NB ? color_primaries_names[primaries] : NULL; } +int av_color_primaries_from_name(const char *name) +{ + int i; + + for (i = 0; i < FF_ARRAY_ELEMS(color_primaries_names); i++) { + size_t len = strlen(color_primaries_names[i]); + if (!strncmp(color_primaries_names[i], name, len)) + return i; + } + + return AVERROR(ENOSYS); +} + const char *av_color_transfer_name(enum AVColorTransferCharacteristic transfer) { return (unsigned) transfer < AVCOL_TRC_NB ? color_transfer_names[transfer] : NULL; } +int av_color_transfer_from_name(const char *name) +{ + int i; + + for (i = 0; i < FF_ARRAY_ELEMS(color_transfer_names); i++) { + size_t len = strlen(color_transfer_names[i]); + if (!strncmp(color_transfer_names[i], name, len)) + return i; + } + + return AVERROR(ENOSYS); +} + const char *av_color_space_name(enum AVColorSpace space) { return (unsigned) space < AVCOL_SPC_NB ? color_space_names[space] : NULL; } +int av_color_space_from_name(const char *name) +{ + int i; + + for (i = 0; i < FF_ARRAY_ELEMS(color_space_names); i++) { + size_t len = strlen(color_space_names[i]); + if (!strncmp(color_space_names[i], name, len)) + return i; + } + + return AVERROR(ENOSYS); +} + const char *av_chroma_location_name(enum AVChromaLocation location) { return (unsigned) location < AVCHROMA_LOC_NB ? chroma_location_names[location] : NULL; } + +int av_chroma_location_from_name(const char *name) +{ + int i; + + for (i = 0; i < FF_ARRAY_ELEMS(chroma_location_names); i++) { + size_t len = strlen(chroma_location_names[i]); + if (!strncmp(chroma_location_names[i], name, len)) + return i; + } + + return AVERROR(ENOSYS); +} diff --git a/libavutil/pixdesc.h b/libavutil/pixdesc.h index b0ec81b81b..5542e2283c 100644 --- a/libavutil/pixdesc.h +++ b/libavutil/pixdesc.h @@ -250,26 +250,51 @@ int av_pix_fmt_count_planes(enum AVPixelFormat pix_fmt); */ const char *av_color_range_name(enum AVColorRange range); +/** + * @return the AVColorRange value for name or an AVError if not found. + */ +int av_color_range_from_name(const char *name); + /** * @return the name for provided color primaries or NULL if unknown. */ const char *av_color_primaries_name(enum AVColorPrimaries primaries); +/** + * @return the AVColorPrimaries value for name or an AVError if not found. + */ +int av_color_primaries_from_name(const char *name); + /** * @return the name for provided color transfer or NULL if unknown. */ const char *av_color_transfer_name(enum AVColorTransferCharacteristic transfer); +/** + * @return the AVColorTransferCharacteristic value for name or an AVError if not found. + */ +int av_color_transfer_from_name(const char *name); + /** * @return the name for provided color space or NULL if unknown. */ const char *av_color_space_name(enum AVColorSpace space); +/** + * @return the AVColorSpace value for name or an AVError if not found. + */ +int av_color_space_from_name(const char *name); + /** * @return the name for provided chroma location or NULL if unknown. */ const char *av_chroma_location_name(enum AVChromaLocation location); +/** + * @return the AVChromaLocation value for name or -1 if not found. + */ +int av_chroma_location_from_name(const char *name); + /** * Return the pixel format corresponding to name. *