summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthieu Castet <castet.matthieu@free.fr>2006-07-17 10:44:53 +0000
committerMichael Niedermayer <michaelni@gmx.at>2006-07-17 10:44:53 +0000
commit116d866ca5052ab3d50b2ead7acf5f63c945c273 (patch)
tree68784f2da6b7ce730294389b328d44a2508067f0
parentae1dd8e1258c81f385ce7b4efdf62193f17f0165 (diff)
fix playback of theora.ogg on mphq patch by (matthieu castet %% castet dat matthieu ot free dat fr %%)
Originally committed as revision 5776 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r--libavcodec/vp3.c4
-rw-r--r--libavformat/oggparsetheora.c2
2 files changed, 5 insertions, 1 deletions
diff --git a/libavcodec/vp3.c b/libavcodec/vp3.c
index 04fa4d19d0..75f08893b8 100644
--- a/libavcodec/vp3.c
+++ b/libavcodec/vp3.c
@@ -2628,8 +2628,10 @@ static int theora_decode_header(AVCodecContext *avctx, GetBitContext *gb)
skip_bits(gb, 24); /* frame height */
}
+ if (s->theora >= 0x030200) {
skip_bits(gb, 8); /* offset x */
skip_bits(gb, 8); /* offset y */
+ }
skip_bits(gb, 32); /* fps numerator */
skip_bits(gb, 32); /* fps denumerator */
@@ -2818,6 +2820,8 @@ static int theora_decode_init(AVCodecContext *avctx)
}
if(8*op_bytes != get_bits_count(&gb))
av_log(avctx, AV_LOG_ERROR, "%d bits left in packet %X\n", 8*op_bytes - get_bits_count(&gb), ptype);
+ if (s->theora < 0x030200)
+ break;
}
vp3_decode_init(avctx);
diff --git a/libavformat/oggparsetheora.c b/libavformat/oggparsetheora.c
index fcd9dc132c..9052bbbea0 100644
--- a/libavformat/oggparsetheora.c
+++ b/libavformat/oggparsetheora.c
@@ -75,7 +75,7 @@ theora_header (AVFormatContext * s, int idx)
if (version >= 0x030400)
skip_bits(&gb, 164);
- else
+ else if (version >= 0x030200)
skip_bits(&gb, 64);
st->codec->time_base.den = get_bits(&gb, 32);
st->codec->time_base.num = get_bits(&gb, 32);