From 9c8aeacf82a872e1703efdfd2822a4f2d6324c9a Mon Sep 17 00:00:00 2001
From: Michael Niedermayer <michaelni@gmx.at>
Date: Sat, 31 Aug 2013 17:10:10 +0200
Subject: [PATCH] avutil: add av_get_colorspace_name()

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
---
 libavcodec/utils.c  | 21 ++++++---------------
 libavutil/frame.c   | 16 ++++++++++++++++
 libavutil/frame.h   |  6 ++++++
 libavutil/version.h |  2 +-
 4 files changed, 29 insertions(+), 16 deletions(-)

diff --git a/libavcodec/utils.c b/libavcodec/utils.c
index 7ca2044a6c2..e3f7ee27cf2 100644
--- a/libavcodec/utils.c
+++ b/libavcodec/utils.c
@@ -2631,6 +2631,7 @@ void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode)
     case AVMEDIA_TYPE_VIDEO:
         if (enc->pix_fmt != AV_PIX_FMT_NONE) {
             char detail[256] = "(";
+            const char *colorspace_name;
             snprintf(buf + strlen(buf), buf_size - strlen(buf),
                      ", %s",
                      av_get_pix_fmt_name(enc->pix_fmt));
@@ -2640,21 +2641,11 @@ void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode)
             if (enc->color_range != AVCOL_RANGE_UNSPECIFIED)
                 av_strlcatf(detail, sizeof(detail),
                             enc->color_range == AVCOL_RANGE_MPEG ? "tv, ": "pc, ");
-            if (enc->colorspace<9U) {
-                static const char *name[] =  {
-                    "GBR",
-                    "bt709",
-                    NULL,
-                    NULL,
-                    "fcc",
-                    "bt470bg",
-                    "smpte170m",
-                    "smpte240m",
-                    "YCgCo",
-                };
-                if (name[enc->colorspace])
-                    av_strlcatf(detail, sizeof(detail), "%s, ", name[enc->colorspace]);
-            }
+
+            colorspace_name = av_get_colorspace_name(enc->colorspace);
+            if (colorspace_name)
+                av_strlcatf(detail, sizeof(detail), "%s, ", colorspace_name);
+
             if (strlen(detail) > 1) {
                 detail[strlen(detail) - 2] = 0;
                 av_strlcatf(buf, buf_size, "%s)", detail);
diff --git a/libavutil/frame.c b/libavutil/frame.c
index b0fdd49ade8..0ce84d2a514 100644
--- a/libavutil/frame.c
+++ b/libavutil/frame.c
@@ -70,6 +70,22 @@ int8_t *av_frame_get_qp_table(AVFrame *f, int *stride, int *type)
     return f->qp_table_buf->data;
 }
 
+const char *av_get_colorspace_name(enum AVColorSpace val)
+{
+    static const char *name[] = {
+        [AVCOL_SPC_RGB]       = "GBR",
+        [AVCOL_SPC_BT709]     = "bt709",
+        [AVCOL_SPC_FCC]       = "fcc",
+        [AVCOL_SPC_BT470BG]   = "bt470bg",
+        [AVCOL_SPC_SMPTE170M] = "smpte170m",
+        [AVCOL_SPC_SMPTE240M] = "smpte240m",
+        [AVCOL_SPC_YCOCG]     = "YCgCo",
+    };
+    if (val < 0 || val >= FF_ARRAY_ELEMS(name))
+        return NULL;
+    return name[val];
+}
+
 static void get_frame_defaults(AVFrame *frame)
 {
     if (frame->extended_data != frame->data)
diff --git a/libavutil/frame.h b/libavutil/frame.h
index 3313703f0c8..f0a57037e8c 100644
--- a/libavutil/frame.h
+++ b/libavutil/frame.h
@@ -508,6 +508,12 @@ void    av_frame_set_colorspace(AVFrame *frame, enum AVColorSpace val);
 enum AVColorRange av_frame_get_color_range(const AVFrame *frame);
 void    av_frame_set_color_range(AVFrame *frame, enum AVColorRange val);
 
+/**
+ * Get the name of a colorspace.
+ * @return a static string identifying the colorspace; can be NULL.
+ */
+const char *av_get_colorspace_name(enum AVColorSpace val);
+
 /**
  * Allocate an AVFrame and set its fields to default values.  The resulting
  * struct must be freed using av_frame_free().
diff --git a/libavutil/version.h b/libavutil/version.h
index c143589f6fe..057e9f1328e 100644
--- a/libavutil/version.h
+++ b/libavutil/version.h
@@ -75,7 +75,7 @@
  */
 
 #define LIBAVUTIL_VERSION_MAJOR  52
-#define LIBAVUTIL_VERSION_MINOR  44
+#define LIBAVUTIL_VERSION_MINOR  45
 #define LIBAVUTIL_VERSION_MICRO 100
 
 #define LIBAVUTIL_VERSION_INT   AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
-- 
GitLab