diff options
author | Stephen Hutchinson <qyot27@gmail.com> | 2013-06-09 08:08:03 -0400 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2013-06-10 10:12:15 +0200 |
commit | 8ed6c13fe3d7990962c10f22dc0b60dba67d7a04 (patch) | |
tree | 525a2af88d45cc62cda71664add32ecf7e470e3b | |
parent | 0047da071ed18318e87b6e59d7442f37e24f5678 (diff) | |
download | ffmpeg-8ed6c13fe3d7990962c10f22dc0b60dba67d7a04.tar.gz |
libutvideo: Add ULH0 and ULH2 decoding when using version 13.0.1
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | libavcodec/libutvideo.h | 11 | ||||
-rw-r--r-- | libavcodec/libutvideodec.cpp | 17 | ||||
-rw-r--r-- | libavcodec/libutvideoenc.cpp | 3 | ||||
-rw-r--r-- | libavformat/riff.c | 3 |
4 files changed, 31 insertions, 3 deletions
diff --git a/libavcodec/libutvideo.h b/libavcodec/libutvideo.h index b35d19ce19..5fb1174c84 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 bc491e2329..eadf4a145d 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 07205f7139..44cd42f02b 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 09a7863ffd..119cbc9399 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') }, |