Signed-off-by: Vittorio Giovara <vittorio.giov...@gmail.com> --- 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. * -- 2.14.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel