summaryrefslogtreecommitdiff
path: root/libavcodec/vp3.c
diff options
context:
space:
mode:
authorDavid Conrad <lessen42@gmail.com>2010-02-12 22:01:22 +0000
committerDavid Conrad <lessen42@gmail.com>2010-02-12 22:01:22 +0000
commitea3c2d539313f5fb824cedeefea052b590bdf9b9 (patch)
treecf9dcfb8279e197d1435779addfc9c0a15142af6 /libavcodec/vp3.c
parent337f5c6e3010929e6560e071cefa6299b8b31d6d (diff)
Export Theora colorspace info if present
Originally committed as revision 21776 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/vp3.c')
-rw-r--r--libavcodec/vp3.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/libavcodec/vp3.c b/libavcodec/vp3.c
index 42c306196e..f54dff343d 100644
--- a/libavcodec/vp3.c
+++ b/libavcodec/vp3.c
@@ -2109,7 +2109,7 @@ static int read_huffman_tree(AVCodecContext *avctx, GetBitContext *gb)
static int theora_decode_header(AVCodecContext *avctx, GetBitContext *gb)
{
Vp3DecodeContext *s = avctx->priv_data;
- int visible_width, visible_height;
+ int visible_width, visible_height, colorspace;
s->theora = get_bits_long(gb, 24);
av_log(avctx, AV_LOG_DEBUG, "Theora bitstream version %X\n", s->theora);
@@ -2146,7 +2146,7 @@ static int theora_decode_header(AVCodecContext *avctx, GetBitContext *gb)
if (s->theora < 0x030200)
skip_bits(gb, 5); /* keyframe frequency force */
- skip_bits(gb, 8); /* colorspace */
+ colorspace = get_bits(gb, 8);
skip_bits(gb, 24); /* bitrate */
skip_bits(gb, 6); /* quality hint */
@@ -2166,6 +2166,16 @@ static int theora_decode_header(AVCodecContext *avctx, GetBitContext *gb)
else
avcodec_set_dimensions(avctx, s->width, s->height);
+ if (colorspace == 1) {
+ avctx->color_primaries = AVCOL_PRI_BT470M;
+ } else if (colorspace == 2) {
+ avctx->color_primaries = AVCOL_PRI_BT470BG;
+ }
+ if (colorspace == 1 || colorspace == 2) {
+ avctx->colorspace = AVCOL_SPC_BT470BG;
+ avctx->color_trc = AVCOL_TRC_BT709;
+ }
+
return 0;
}