[FFmpeg-cvslog] libutvideo: Add ULH0 and ULH2 decoding when using version 13.0.1

Stephen Hutchinson git at videolan.org
Mon Jun 10 10:32:22 CEST 2013


ffmpeg | branch: master | Stephen Hutchinson <qyot27 at gmail.com> | Sun Jun  9 08:08:03 2013 -0400| [8ed6c13fe3d7990962c10f22dc0b60dba67d7a04] | committer: Michael Niedermayer

libutvideo: Add ULH0 and ULH2 decoding when using version 13.0.1

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=8ed6c13fe3d7990962c10f22dc0b60dba67d7a04
---

 libavcodec/libutvideo.h      |   11 ++++++++++-
 libavcodec/libutvideodec.cpp |   17 ++++++++++++++++-
 libavcodec/libutvideoenc.cpp |    3 ++-
 libavformat/riff.c           |    3 +++
 4 files changed, 31 insertions(+), 3 deletions(-)

diff --git a/libavcodec/libutvideo.h b/libavcodec/libutvideo.h
index b35d19c..5fb1174 100644
--- a/libavcodec/libutvideo.h
+++ b/libavcodec/libutvideo.h
@@ -21,7 +21,8 @@
 /**
  * @file
  * Known FOURCCs:
- *     'ULY0' (YCbCr 4:2:0), 'ULY2' (YCbCr 4:2:2), 'ULRG' (RGB), 'ULRA' (RGBA)
+ *     'ULY0' (YCbCr 4:2:0), 'ULY2' (YCbCr 4:2:2), 'ULRG' (RGB), 'ULRA' (RGBA),
+ *     'ULH0' (YCbCr 4:2:0 BT.709), 'ULH2' (YCbCr 4:2:2 BT.709)
  */
 
 #ifndef AVCODEC_LIBUTVIDEO_H
@@ -45,6 +46,14 @@
 #define UTVF_NFCC_BGRA_BU UTVF_RGB32_WIN
 #endif
 
+/*
+ * Ut Video version 13.0.1 introduced new BT.709 variants.
+ * Special-case these and only use them if v13 is detected.
+ */
+#if defined(UTVF_HDYC)
+#define UTV_BT709
+#endif
+
 typedef struct {
     uint32_t version;
     uint32_t original_format;
diff --git a/libavcodec/libutvideodec.cpp b/libavcodec/libutvideodec.cpp
index bc491e2..eadf4a1 100644
--- a/libavcodec/libutvideodec.cpp
+++ b/libavcodec/libutvideodec.cpp
@@ -21,7 +21,8 @@
 /**
  * @file
  * Known FOURCCs:
- *     'ULY0' (YCbCr 4:2:0), 'ULY2' (YCbCr 4:2:2), 'ULRG' (RGB), 'ULRA' (RGBA)
+ *     'ULY0' (YCbCr 4:2:0), 'ULY2' (YCbCr 4:2:2), 'ULRG' (RGB), 'ULRA' (RGBA),
+ *     'ULH0' (YCbCr 4:2:0 BT.709), 'ULH2' (YCbCr 4:2:2 BT.709)
  */
 
 extern "C" {
@@ -51,6 +52,20 @@ static av_cold int utvideo_decode_init(AVCodecContext *avctx)
 
     /* Pick format based on FOURCC */
     switch (avctx->codec_tag) {
+#ifdef UTV_BT709
+    case MKTAG('U', 'L', 'H', '0'):
+        avctx->pix_fmt = AV_PIX_FMT_YUV420P;
+        avctx->color_primaries = AVCOL_PRI_BT709;
+        avctx->colorspace = AVCOL_SPC_BT709;
+        format = UTVF_YV12;
+        break;
+    case MKTAG('U', 'L', 'H', '2'):
+        avctx->pix_fmt = AV_PIX_FMT_YUYV422;
+        avctx->color_primaries = AVCOL_PRI_BT709;
+        avctx->colorspace = AVCOL_SPC_BT709;
+        format = UTVF_YUY2;
+        break;
+#endif
     case MKTAG('U', 'L', 'Y', '0'):
         avctx->pix_fmt = AV_PIX_FMT_YUV420P;
         format = UTVF_YV12;
diff --git a/libavcodec/libutvideoenc.cpp b/libavcodec/libutvideoenc.cpp
index 07205f7..44cd42f 100644
--- a/libavcodec/libutvideoenc.cpp
+++ b/libavcodec/libutvideoenc.cpp
@@ -21,7 +21,8 @@
 /**
  * @file
  * Known FOURCCs:
- *     'ULY0' (YCbCr 4:2:0), 'ULY2' (YCbCr 4:2:2), 'ULRG' (RGB), 'ULRA' (RGBA)
+ *     'ULY0' (YCbCr 4:2:0), 'ULY2' (YCbCr 4:2:2), 'ULRG' (RGB), 'ULRA' (RGBA),
+ *     'ULH0' (YCbCr 4:2:0 BT.709), 'ULH2' (YCbCr 4:2:2 BT.709)
  */
 
 extern "C" {
diff --git a/libavformat/riff.c b/libavformat/riff.c
index 09a7863..119cbc9 100644
--- a/libavformat/riff.c
+++ b/libavformat/riff.c
@@ -330,6 +330,9 @@ const AVCodecTag ff_codec_bmp_tags[] = {
     { AV_CODEC_ID_UTVIDEO,      MKTAG('U', 'L', 'R', 'G') },
     { AV_CODEC_ID_UTVIDEO,      MKTAG('U', 'L', 'Y', '0') },
     { AV_CODEC_ID_UTVIDEO,      MKTAG('U', 'L', 'Y', '2') },
+    /* Ut Video version 13.0.1 BT.709 codecs */
+    { AV_CODEC_ID_UTVIDEO,      MKTAG('U', 'L', 'H', '0') },
+    { AV_CODEC_ID_UTVIDEO,      MKTAG('U', 'L', 'H', '2') },
     { AV_CODEC_ID_VBLE,         MKTAG('V', 'B', 'L', 'E') },
     { AV_CODEC_ID_ESCAPE130,    MKTAG('E', '1', '3', '0') },
     { AV_CODEC_ID_DXTORY,       MKTAG('x', 't', 'o', 'r') },



More information about the ffmpeg-cvslog mailing list