libutvideo: Add ULH0 and ULH2 decoding when using version 13.0.1
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
0047da071e
commit
8ed6c13fe3
@ -21,7 +21,8 @@
|
|||||||
/**
|
/**
|
||||||
* @file
|
* @file
|
||||||
* Known FOURCCs:
|
* 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
|
#ifndef AVCODEC_LIBUTVIDEO_H
|
||||||
@ -45,6 +46,14 @@
|
|||||||
#define UTVF_NFCC_BGRA_BU UTVF_RGB32_WIN
|
#define UTVF_NFCC_BGRA_BU UTVF_RGB32_WIN
|
||||||
#endif
|
#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 {
|
typedef struct {
|
||||||
uint32_t version;
|
uint32_t version;
|
||||||
uint32_t original_format;
|
uint32_t original_format;
|
||||||
|
@ -21,7 +21,8 @@
|
|||||||
/**
|
/**
|
||||||
* @file
|
* @file
|
||||||
* Known FOURCCs:
|
* 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" {
|
extern "C" {
|
||||||
@ -51,6 +52,20 @@ static av_cold int utvideo_decode_init(AVCodecContext *avctx)
|
|||||||
|
|
||||||
/* Pick format based on FOURCC */
|
/* Pick format based on FOURCC */
|
||||||
switch (avctx->codec_tag) {
|
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'):
|
case MKTAG('U', 'L', 'Y', '0'):
|
||||||
avctx->pix_fmt = AV_PIX_FMT_YUV420P;
|
avctx->pix_fmt = AV_PIX_FMT_YUV420P;
|
||||||
format = UTVF_YV12;
|
format = UTVF_YV12;
|
||||||
|
@ -21,7 +21,8 @@
|
|||||||
/**
|
/**
|
||||||
* @file
|
* @file
|
||||||
* Known FOURCCs:
|
* 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" {
|
extern "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', 'R', 'G') },
|
||||||
{ AV_CODEC_ID_UTVIDEO, MKTAG('U', 'L', 'Y', '0') },
|
{ AV_CODEC_ID_UTVIDEO, MKTAG('U', 'L', 'Y', '0') },
|
||||||
{ AV_CODEC_ID_UTVIDEO, MKTAG('U', 'L', 'Y', '2') },
|
{ 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_VBLE, MKTAG('V', 'B', 'L', 'E') },
|
||||||
{ AV_CODEC_ID_ESCAPE130, MKTAG('E', '1', '3', '0') },
|
{ AV_CODEC_ID_ESCAPE130, MKTAG('E', '1', '3', '0') },
|
||||||
{ AV_CODEC_ID_DXTORY, MKTAG('x', 't', 'o', 'r') },
|
{ AV_CODEC_ID_DXTORY, MKTAG('x', 't', 'o', 'r') },
|
||||||
|
Loading…
x
Reference in New Issue
Block a user