]> git.sesse.net Git - ffmpeg/blobdiff - libavformat/oggparsetheora.c
cosmetics: alignment of the codec_bmp_tags table
[ffmpeg] / libavformat / oggparsetheora.c
index c2045ce17e02b28973b2b7cc18bc0831c78e411a..b976dcb70148bb698523fb109f7ce3fc75c6d08a 100644 (file)
@@ -26,7 +26,7 @@
 #include "avformat.h"
 #include "bitstream.h"
 #include "bswap.h"
-#include "ogg2.h"
+#include "oggdec.h"
 
 typedef struct theora_params {
     int gpshift;
@@ -60,10 +60,7 @@ theora_header (AVFormatContext * s, int idx)
 
         skip_bits(&gb, 7*8); /* 0x80"theora" */
 
-        version = get_bits(&gb, 8) << 16;
-        version |= get_bits(&gb, 8) << 8;
-        version |= get_bits(&gb, 8);
-
+        version = get_bits_long(&gb, 24);
         if (version < 0x030100)
         {
             av_log(s, AV_LOG_ERROR,
@@ -86,12 +83,12 @@ theora_header (AVFormatContext * s, int idx)
 
         if (version >= 0x030200)
             skip_bits(&gb, 16);
-        st->codec->time_base.den = get_bits(&gb, 32);
-        st->codec->time_base.num = get_bits(&gb, 32);
+        st->codec->time_base.den = get_bits_long(&gb, 32);
+        st->codec->time_base.num = get_bits_long(&gb, 32);
         st->time_base = st->codec->time_base;
 
-        st->codec->sample_aspect_ratio.num = get_bits(&gb, 24);
-        st->codec->sample_aspect_ratio.den = get_bits(&gb, 24);
+        st->codec->sample_aspect_ratio.num = get_bits_long(&gb, 24);
+        st->codec->sample_aspect_ratio.den = get_bits_long(&gb, 24);
 
         if (version >= 0x030200)
             skip_bits(&gb, 38);
@@ -127,6 +124,9 @@ theora_gptopts(AVFormatContext *ctx, int idx, uint64_t gp)
     uint64_t iframe = gp >> thp->gpshift;
     uint64_t pframe = gp & thp->gpmask;
 
+    if(!pframe)
+        os->pflags |= PKT_FLAG_KEY;
+
     return iframe + pframe;
 }