changeset 1627:a80b15c0b9d5 libavcodec

theora alpha3 support (with maintaining backward compatibility, maybe we should remove all backward compatibility codes after final theora release?)
author alex
date Sun, 23 Nov 2003 18:49:53 +0000
parents f74ae637ffa9
children e7420fdad5fc
files vp3.c
diffstat 1 files changed, 15 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/vp3.c	Sun Nov 23 18:43:09 2003 +0000
+++ b/vp3.c	Sun Nov 23 18:49:53 2003 +0000
@@ -2765,7 +2765,9 @@
     {
 	s->last_quality_index = s->quality_index;
 	s->quality_index = get_bits(&gb, 6);
-	if ( s->keyframe)
+	if (s->theora >= 0x030300)
+	    skip_bits1(&gb);
+	if (s->keyframe)
 	{
 	    if (get_bits1(&gb))
 		av_log(s->avctx, AV_LOG_ERROR, "Theora: warning, unsupported keyframe coding type?!\n");
@@ -2924,9 +2926,12 @@
     av_log(avctx, AV_LOG_INFO, "Theora bitstream version %d.%d.%d\n",
 	major, minor, micro);
 
+    /* FIXME: endianess? */
+    s->theora = (major << 16) | (minor << 8) | micro;
+
     /* 3.3.0 aka alpha3 has the same frame orientation as original vp3 */
     /* but previous versions have the image flipped relative to vp3 */
-    if ((major <= 3) && (minor < 3))
+    if (s->theora < 0x030300)
     {
 	s->flipped_image = 1;
         av_log(avctx, AV_LOG_DEBUG, "Old (<alpha3) Theora bitstream, flipped image\n");
@@ -2946,12 +2951,19 @@
     skip_bits(&gb, 24); /* aspect numerator */
     skip_bits(&gb, 24); /* aspect denumerator */
     
-    skip_bits(&gb, 5); /* keyframe frequency force */
+    if (s->theora < 0x030300)
+	skip_bits(&gb, 5); /* keyframe frequency force */
     skip_bits(&gb, 8); /* colorspace */
     skip_bits(&gb, 24); /* bitrate */
 
     skip_bits(&gb, 6); /* last(?) quality index */
     
+    if (s->theora >= 0x030300)
+    {
+	skip_bits(&gb, 5); /* keyframe frequency force */
+	skip_bits(&gb, 5); /* spare bits */
+    }
+    
 //    align_get_bits(&gb);
     
     avctx->width = s->width;