aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2014-10-09 02:54:48 +0200
committerMichael Niedermayer <michaelni@gmx.at>2014-10-09 03:06:20 +0200
commitf6777ce6fe7cefb027789c069ec14b394a874073 (patch)
tree369b6378cc2ecd2c30644082205e5e8be0862bca
parent5b134a0544ebfd129b087c3a2bb68a8847232322 (diff)
parent1a02e78653a5c7674e6c43b6e6f2748dbd2091d7 (diff)
downloadffmpeg-f6777ce6fe7cefb027789c069ec14b394a874073.tar.gz
Merge commit '1a02e78653a5c7674e6c43b6e6f2748dbd2091d7'
* commit '1a02e78653a5c7674e6c43b6e6f2748dbd2091d7': vc1: initialize color properties See: ddabecbbf5509325c6c695ccc60d67c0af2065f3 Merged-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavcodec/vc1.c7
-rw-r--r--libavcodec/vc1.h3
-rw-r--r--libavcodec/vc1dec.c7
3 files changed, 13 insertions, 4 deletions
diff --git a/libavcodec/vc1.c b/libavcodec/vc1.c
index d23efecc16..77c4b57d3e 100644
--- a/libavcodec/vc1.c
+++ b/libavcodec/vc1.c
@@ -496,10 +496,9 @@ static int decode_sequence_header_adv(VC1Context *v, GetBitContext *gb)
}
if (get_bits1(gb)) {
- v->s.avctx->color_primaries = get_bits(gb, 8);
- v->s.avctx->color_trc = get_bits(gb, 8);
- v->s.avctx->colorspace = get_bits(gb, 8);
- v->s.avctx->color_range = AVCOL_RANGE_MPEG;
+ v->color_prim = get_bits(gb, 8);
+ v->transfer_char = get_bits(gb, 8);
+ v->matrix_coef = get_bits(gb, 8);
}
}
diff --git a/libavcodec/vc1.h b/libavcodec/vc1.h
index a1b98e8337..eefb613ee8 100644
--- a/libavcodec/vc1.h
+++ b/libavcodec/vc1.h
@@ -203,6 +203,9 @@ typedef struct VC1Context{
int panscanflag; ///< NUMPANSCANWIN, TOPLEFT{X,Y}, BOTRIGHT{X,Y} present
int refdist_flag; ///< REFDIST syntax element present in II, IP, PI or PP field picture headers
int extended_dmv; ///< Additional extended dmv range at P/B frame-level
+ int color_prim; ///< 8bits, chroma coordinates of the color primaries
+ int transfer_char; ///< 8bits, Opto-electronic transfer characteristics
+ int matrix_coef; ///< 8bits, Color primaries->YCbCr transform matrix
int hrd_param_flag; ///< Presence of Hypothetical Reference
///< Decoder parameters
int psf; ///< Progressive Segmented Frame
diff --git a/libavcodec/vc1dec.c b/libavcodec/vc1dec.c
index 3967e855d3..da6724ca39 100644
--- a/libavcodec/vc1dec.c
+++ b/libavcodec/vc1dec.c
@@ -527,6 +527,13 @@ static av_cold int vc1_decode_init(AVCodecContext *avctx)
avctx->has_b_frames = !!avctx->max_b_frames;
+ if (v->color_prim == 1 || v->color_prim == 5 || v->color_prim == 6)
+ avctx->color_primaries = v->color_prim;
+ if (v->transfer_char == 1 || v->transfer_char == 7)
+ avctx->color_trc = v->transfer_char;
+ if (v->matrix_coef == 1 || v->matrix_coef == 6 || v->matrix_coef == 7)
+ avctx->colorspace = v->matrix_coef;
+
s->mb_width = (avctx->coded_width + 15) >> 4;
s->mb_height = (avctx->coded_height + 15) >> 4;