diff options
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/libutvideo.h | 11 | ||||
-rw-r--r-- | libavcodec/libutvideodec.cpp | 17 | ||||
-rw-r--r-- | libavcodec/libutvideoenc.cpp | 3 |
3 files changed, 28 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" { |