Commit 12461636 authored by Paul B Mahol's avatar Paul B Mahol

avcodec/magicyuv: export colorspace and color_range for YUV

Signed-off-by: 's avatarPaul B Mahol <onemda@gmail.com>
parent 67db4ff3
...@@ -57,6 +57,8 @@ typedef struct MagicYUVContext { ...@@ -57,6 +57,8 @@ typedef struct MagicYUVContext {
int nb_slices; int nb_slices;
int planes; // number of encoded planes in bitstream int planes; // number of encoded planes in bitstream
int decorrelate; // postprocessing work int decorrelate; // postprocessing work
int color_matrix; // video color matrix
int flags;
int interlaced; // video is interlaced int interlaced; // video is interlaced
uint8_t *buf; // pointer to AVPacket->data uint8_t *buf; // pointer to AVPacket->data
int hshift[4]; int hshift[4];
...@@ -568,8 +570,10 @@ static int magy_decode_frame(AVCodecContext *avctx, void *data, ...@@ -568,8 +570,10 @@ static int magy_decode_frame(AVCodecContext *avctx, void *data,
} }
s->planes = av_pix_fmt_count_planes(avctx->pix_fmt); s->planes = av_pix_fmt_count_planes(avctx->pix_fmt);
bytestream2_skip(&gbyte, 2); bytestream2_skip(&gbyte, 1);
s->interlaced = !!(bytestream2_get_byte(&gbyte) & 2); s->color_matrix = bytestream2_get_byte(&gbyte);
s->flags = bytestream2_get_byte(&gbyte);
s->interlaced = !!(s->flags & 2);
bytestream2_skip(&gbyte, 3); bytestream2_skip(&gbyte, 3);
width = bytestream2_get_le32(&gbyte); width = bytestream2_get_le32(&gbyte);
...@@ -659,6 +663,16 @@ static int magy_decode_frame(AVCodecContext *avctx, void *data, ...@@ -659,6 +663,16 @@ static int magy_decode_frame(AVCodecContext *avctx, void *data,
avctx->pix_fmt == AV_PIX_FMT_GBRAP10) { avctx->pix_fmt == AV_PIX_FMT_GBRAP10) {
FFSWAP(uint8_t*, p->data[0], p->data[1]); FFSWAP(uint8_t*, p->data[0], p->data[1]);
FFSWAP(int, p->linesize[0], p->linesize[1]); FFSWAP(int, p->linesize[0], p->linesize[1]);
} else {
switch (s->color_matrix) {
case 1:
p->colorspace = AVCOL_SPC_BT470BG;
break;
case 2:
p->colorspace = AVCOL_SPC_BT709;
break;
}
p->color_range = (s->flags & 4) ? AVCOL_RANGE_JPEG : AVCOL_RANGE_MPEG;
} }
*got_frame = 1; *got_frame = 1;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment