[vlc-commits] Define YUV 4:2:0 16bits pixel format

Paul B Mahol git at videolan.org
Thu Jan 19 16:08:13 CET 2017


vlc | branch: master | Paul B Mahol <onemda at gmail.com> | Thu Jan 19 16:07:20 2017 +0100| [babd896d8fc151eb7a3a584a79d65038f33c6741] | committer: Jean-Baptiste Kempf

Define YUV 4:2:0 16bits pixel format

Signed-off-by: Jean-Baptiste Kempf <jb at videolan.org>

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=babd896d8fc151eb7a3a584a79d65038f33c6741
---

 include/vlc_fourcc.h           |  4 ++++
 modules/codec/avcodec/chroma.c |  2 ++
 modules/video_chroma/chain.c   |  1 +
 src/misc/fourcc.c              | 12 +++++++++++-
 src/misc/fourcc_list.h         |  4 ++++
 5 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/include/vlc_fourcc.h b/include/vlc_fourcc.h
index 09c22cb..e44dd95 100644
--- a/include/vlc_fourcc.h
+++ b/include/vlc_fourcc.h
@@ -210,6 +210,10 @@
 #define VLC_CODEC_I420_12L        VLC_FOURCC('I','0','C','L')
 #define VLC_CODEC_I420_12B        VLC_FOURCC('I','0','C','B')
 
+/* Planar YUV 4:2:0 Y:U:V 16-bit stored on 16 bits */
+#define VLC_CODEC_I420_16L        VLC_FOURCC('I','0','F','L')
+#define VLC_CODEC_I420_16B        VLC_FOURCC('I','0','F','B')
+
 /* Planar YUV 4:2:2 Y:U:V 8-bit */
 #define VLC_CODEC_I422            VLC_FOURCC('I','4','2','2')
 /* Planar YUV 4:2:2 Y:U:V  9-bit stored on 16 bits */
diff --git a/modules/codec/avcodec/chroma.c b/modules/codec/avcodec/chroma.c
index e700eb1..5f98e87 100644
--- a/modules/codec/avcodec/chroma.c
+++ b/modules/codec/avcodec/chroma.c
@@ -90,6 +90,8 @@ static const struct
     {VLC_CODEC_I420_12L, AV_PIX_FMT_YUV420P12LE, 0, 0, 0 },
     {VLC_CODEC_I420_12B, AV_PIX_FMT_YUV420P12BE, 0, 0, 0 },
 #endif
+    {VLC_CODEC_I420_16L, AV_PIX_FMT_YUV420P16LE, 0, 0, 0 },
+    {VLC_CODEC_I420_16B, AV_PIX_FMT_YUV420P16BE, 0, 0, 0 },
 #ifdef AV_PIX_FMT_P010
     {VLC_CODEC_P010, AV_PIX_FMT_P010, 0, 0, 0 },
 #endif
diff --git a/modules/video_chroma/chain.c b/modules/video_chroma/chain.c
index 0bde2a9..6347d0a 100644
--- a/modules/video_chroma/chain.c
+++ b/modules/video_chroma/chain.c
@@ -65,6 +65,7 @@ static const vlc_fourcc_t pi_allowed_chromas[] = {
     VLC_CODEC_I420,
     VLC_CODEC_I422,
     VLC_CODEC_I420_10L,
+    VLC_CODEC_I420_16L,
     VLC_CODEC_RGB32,
     VLC_CODEC_RGB24,
     0
diff --git a/src/misc/fourcc.c b/src/misc/fourcc.c
index 9e42045..20269b6 100644
--- a/src/misc/fourcc.c
+++ b/src/misc/fourcc.c
@@ -216,7 +216,7 @@ const char *vlc_fourcc_GetDescription(int cat, vlc_fourcc_t fourcc)
     VLC_CODEC_NV12, VLC_CODEC_NV21
 
 #define VLC_CODEC_YUV_PLANAR_420_16 \
-    VLC_CODEC_I420_12L, VLC_CODEC_I420_12B, VLC_CODEC_I420_10L, VLC_CODEC_I420_10B, VLC_CODEC_I420_9L, VLC_CODEC_I420_9B
+    VLC_CODEC_I420_16L, VLC_CODEC_I420_16B, VLC_CODEC_I420_12L, VLC_CODEC_I420_12B, VLC_CODEC_I420_10L, VLC_CODEC_I420_10B, VLC_CODEC_I420_9L, VLC_CODEC_I420_9B
 
 #define VLC_CODEC_YUV_PLANAR_422 \
     VLC_CODEC_I422, VLC_CODEC_J422
@@ -283,6 +283,12 @@ static const vlc_fourcc_t p_I420_12L_fallback[] = {
 static const vlc_fourcc_t p_I420_12B_fallback[] = {
     VLC_CODEC_I420_12B, VLC_CODEC_I420_12L, VLC_CODEC_FALLBACK_420_16, 0
 };
+static const vlc_fourcc_t p_I420_16L_fallback[] = {
+    VLC_CODEC_I420_16L, VLC_CODEC_I420_16B, VLC_CODEC_FALLBACK_420_16, 0
+};
+static const vlc_fourcc_t p_I420_16B_fallback[] = {
+    VLC_CODEC_I420_16B, VLC_CODEC_I420_16L, VLC_CODEC_FALLBACK_420_16, 0
+};
 
 
 #define VLC_CODEC_FALLBACK_422 \
@@ -412,6 +418,8 @@ static const vlc_fourcc_t *pp_YUV_fallback[] = {
     p_I420_10B_fallback,
     p_I420_12L_fallback,
     p_I420_12B_fallback,
+    p_I420_16L_fallback,
+    p_I420_16B_fallback,
     p_J420_fallback,
     p_I422_fallback,
     p_I422_9L_fallback,
@@ -619,6 +627,8 @@ static const struct
     { { VLC_CODEC_GBR_PLANAR_10L,
         VLC_CODEC_GBR_PLANAR_10B },            PLANAR_16(3, 1, 1, 10) },
 
+    { { VLC_CODEC_I420_16L,
+        VLC_CODEC_I420_16B },                  PLANAR_16(3, 2, 2, 16) },
     { { VLC_CODEC_I420_12L,
         VLC_CODEC_I420_12B },                  PLANAR_16(3, 2, 2, 12) },
     { { VLC_CODEC_I420_10L,
diff --git a/src/misc/fourcc_list.h b/src/misc/fourcc_list.h
index d2fc683..27c212f 100644
--- a/src/misc/fourcc_list.h
+++ b/src/misc/fourcc_list.h
@@ -876,6 +876,10 @@ static const staticentry_t p_list_video[] = {
     B(VLC_CODEC_I444_12B, "Planar 4:4:4 YUV 12-bit BE"),
         A("I4CB"),
 
+    B(VLC_CODEC_I420_16L, "Planar 4:2:0 YUV 16-bit LE"),
+        A("I0FL"),
+    B(VLC_CODEC_I420_16B, "Planar 4:2:0 YUV 16-bit BE"),
+        A("I0FB"),
     B(VLC_CODEC_I444_16L, "Planar 4:4:4 YUV 16-bit LE"),
         A("I4FL"),
     B(VLC_CODEC_I444_16B, "Planar 4:4:4 YUV 16-bit BE"),



More information about the vlc-commits mailing list