changeset 2732:2b101e9d25c0 libavformat

set PKT_FLAG_KEY for Theora and OGM streams
author mru
date Sun, 11 Nov 2007 21:56:18 +0000
parents 6b43751d7264
children 6d33af177dfa
files oggdec.c oggdec.h oggparseogm.c oggparsetheora.c
diffstat 4 files changed, 10 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/oggdec.c	Sat Nov 10 18:27:03 2007 +0000
+++ b/oggdec.c	Sun Nov 11 21:56:18 2007 +0000
@@ -377,6 +377,7 @@
     }
 
     if (os->header > -1 && os->seq > os->header){
+        os->pflags = 0;
         if (os->codec && os->codec->packet)
             os->codec->packet (s, idx);
         if (str)
@@ -525,6 +526,8 @@
         os->lastgp = -1;
     }
 
+    pkt->flags = os->pflags;
+
     return psize;
 }
 
--- a/oggdec.h	Sat Nov 10 18:27:03 2007 +0000
+++ b/oggdec.h	Sun Nov 11 21:56:18 2007 +0000
@@ -42,6 +42,7 @@
     unsigned int bufpos;
     unsigned int pstart;
     unsigned int psize;
+    unsigned int pflags;
     uint32_t serial;
     uint32_t seq;
     uint64_t granule, lastgp;
--- a/oggparseogm.c	Sat Nov 10 18:27:03 2007 +0000
+++ b/oggparseogm.c	Sun Nov 11 21:56:18 2007 +0000
@@ -134,6 +134,9 @@
     uint8_t *p = os->buf + os->pstart;
     int lb;
 
+    if(*p & 8)
+        os->pflags |= PKT_FLAG_KEY;
+
     lb = ((*p & 2) << 1) | ((*p >> 6) & 3);
     os->pstart += lb + 1;
     os->psize -= lb + 1;
--- a/oggparsetheora.c	Sat Nov 10 18:27:03 2007 +0000
+++ b/oggparsetheora.c	Sun Nov 11 21:56:18 2007 +0000
@@ -124,6 +124,9 @@
     uint64_t iframe = gp >> thp->gpshift;
     uint64_t pframe = gp & thp->gpmask;
 
+    if(!pframe)
+        os->pflags |= PKT_FLAG_KEY;
+
     return iframe + pframe;
 }