Browse Source

libutvideo: Add ULH0 and ULH2 decoding when using version 13.0.1

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
tags/n2.0
Stephen Hutchinson Michael Niedermayer 12 years ago
parent
commit
8ed6c13fe3
4 changed files with 31 additions and 3 deletions
  1. +10
    -1
      libavcodec/libutvideo.h
  2. +16
    -1
      libavcodec/libutvideodec.cpp
  3. +2
    -1
      libavcodec/libutvideoenc.cpp
  4. +3
    -0
      libavformat/riff.c

+ 10
- 1
libavcodec/libutvideo.h View File

@@ -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;


+ 16
- 1
libavcodec/libutvideodec.cpp View File

@@ -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;


+ 2
- 1
libavcodec/libutvideoenc.cpp View File

@@ -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" {


+ 3
- 0
libavformat/riff.c View File

@@ -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') },


Loading…
Cancel
Save