From patchwork Wed Sep 20 11:32:56 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vittorio Giovara X-Patchwork-Id: 5205 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.36.26 with SMTP id f26csp635357jaa; Wed, 20 Sep 2017 04:38:18 -0700 (PDT) X-Received: by 10.28.168.68 with SMTP id r65mr3390417wme.127.1505907498675; Wed, 20 Sep 2017 04:38:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1505907498; cv=none; d=google.com; s=arc-20160816; b=biTEDZN3z1VtKmoIOpc+kKGflOrpqRnN10sGZzFuulLWBZdaXTPN4yqpSQWvpf1sl5 k6lpDRDNwXBQXxcDSXtOocg2+10+9g6VYt8wPI1fDomo+HU7XXNs8DeXYseNMIr6gyOD ebrMRobE73rZkw1ieOUV7vVRlo11EdEL2qwp2pEYvYB6A9Qljhq+jqXHgkJ/H4+Coi+W FavdidFqPqeNVRGYfbCVtALhw4+qJ/u0AnCvCnmPw/JP1qIfDhbmqc1cIdY8zG17aCm+ B+qXJj9KRVSAsxQH+sI5ID++6KBVaNrHHbcKTfhcJHPQG0lU73RrhbHmFmwJ8PpTvZB/ 9x2A== 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=nvxvbUp6Dj2A1V00X5LyJo1s3rkGJ4aa/hyfDDNaEb0=; b=Ca03dZTHQfo/4lS/SCeey7+k4BnSlvFUx43QU0lwMxRue2exFssz0nO+Of1hZjFdTN 8fv4Q/NZPoKpKH07kF/6ReL3vFGffpWs4rf1dFVzeS1YliZNS+FNpoFeL0i2L75ctX48 14XsUevlnXxMVD2lczuopOL/GUlwEGV1g4o4YHPPFFkKS/PPkqd5rPDeinCuOU47X8sF 3d9nDu5M3Ku4sAiXHmvw2ufWuk1M79+1K+1zAdtlnlruduaQT/F2SvIcuzz2aqv+qBj3 DMgGylSPqtBZLHWdIE7wpQXP3TiL9TjpdSw8bmong3x+1MMGZ2E+z6lyIIk7iiCpYLtf Oodg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=VDXEWC0J; 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 m8si1221485wmc.210.2017.09.20.04.38.18; Wed, 20 Sep 2017 04:38:18 -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=VDXEWC0J; 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 8A61A68838A; Wed, 20 Sep 2017 14:38:06 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm0-f65.google.com (mail-wm0-f65.google.com [74.125.82.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 67C60680612 for ; Wed, 20 Sep 2017 14:38:00 +0300 (EEST) Received: by mail-wm0-f65.google.com with SMTP id m127so2183703wmm.0 for ; Wed, 20 Sep 2017 04:38:09 -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=W4ei0ed2AyhvqHdQ+THV8jt/6mMn6r5AYAPMKJcK3dU=; b=VDXEWC0J4vCcpGjDthRNQFoV6V3h8S9wBGYiWGLKi395YTEELLZbU2mf35JzddEI7A D/Iu1d4uDyOBGN8ezAURJIXL4XK19Zv8nuWz/QlWD2tLFeew2DF59aVNmOQHf5rUhNAS /ladGgVIzD5/qWb0EYMPE5yDLfgx13SclTjXBWMTcErLxjvRIfMudOqRjZIqLLua4Fj1 gFKMTMuex5sSidWzQD1MrJ4BonrspskhFeqZoqt7hxpkgaej0rV3yTgyoLIB1N5np5aE bCcuYcku220L4+Z/L0ofv/6V8GFSx1GUdAwZO4gf1eoXKNE0WFd5k9aCXxA+dxlJDHRq YurA== 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=W4ei0ed2AyhvqHdQ+THV8jt/6mMn6r5AYAPMKJcK3dU=; b=LfiTPolre7F0rYQ50LL/rkcaUYvv+bVCjOg8lkGzCopsulLKL69+EdwpHIeDP5pD54 mXWMQAKvU3IiwT6O4PW0Ru3vttadZfULBC0iTfn5gtwoSQCYdpYKyNw/aILlDyhMyDI7 HrIXLusR7BWXREuQQNVVwAu9pyGjr+JqhTG7Z96Zi4Aw9YXO3KAQD9C9sEaDBkkq6p0+ iAtemN3u6emaR0QFsHTXyGjyAZYXtCIdTdGGdGxtWJt1k7XvrfOAO439fvxbLNRGIlv5 c2k+/yXJCeoOn21yT/pHce/tD5eNBmdpVJN7tI6BZH5cC+k6HJzVVgpX0UhL7valb09g YJcw== X-Gm-Message-State: AHPjjUgQB5qklJ1qHQM5reeZ/1tGh2G1LzcCBvLyMI3GBHSv400eGTIx FLHGs4YY5EmalshhiHuwntPJfw== X-Google-Smtp-Source: AOwi7QCrpWi4w9MVS3dHK181o4pVwGdvQzTtrbIZWINFxOBKqfDoRmX9lNwwz+Y20FAonFXIRcNTBg== X-Received: by 10.28.168.68 with SMTP id r65mr3378488wme.127.1505907179494; Wed, 20 Sep 2017 04:32:59 -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 w14sm1458950wmf.13.2017.09.20.04.32.58 for (version=TLS1 cipher=AES128-SHA bits=128/128); Wed, 20 Sep 2017 04:32:58 -0700 (PDT) From: Vittorio Giovara To: ffmpeg-devel@ffmpeg.org Date: Wed, 20 Sep 2017 13:32:56 +0200 Message-Id: <20170920113256.34534-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 --- TODO: version bump, APIdoc entry. 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..52340a459b 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 -1; +} + 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 -1; +} + 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 -1; +} + 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 -1; +} + 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 -1; +} diff --git a/libavutil/pixdesc.h b/libavutil/pixdesc.h index b0ec81b81b..70e832405e 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 -1 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 -1 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 -1 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 -1 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. *