[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