summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Smith <msmith@xiph.org>2005-07-22 16:39:42 +0000
committerMike Smith <msmith@xiph.org>2005-07-22 16:39:42 +0000
commit641bb0342d8a319ea91fe66268c5f0e5d4435b00 (patch)
treeb975c7b0025d271c1739377ec79b199002652bc4 /src
parent026fad2f1e386b3729f6a8e9509d005cfd7a0c03 (diff)
downloadogg-641bb0342d8a319ea91fe66268c5f0e5d4435b00.tar.gz
According to the Ogg specification, an ogg page that doesn't have any
packets ending on it (which commonly happens with video keyframes, for instance) must have a granulepos of -1. libogg never implemented this correctly; this patch ensures it does. git-svn-id: http://svn.xiph.org/trunk/ogg@9598 0101bb08-14d6-0310-b084-bc0e0c8e3800
Diffstat (limited to 'src')
-rw-r--r--src/framing.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/framing.c b/src/framing.c
index 8d9db18..73abfa4 100644
--- a/src/framing.c
+++ b/src/framing.c
@@ -336,7 +336,7 @@ int ogg_stream_flush(ogg_stream_state *os,ogg_page *og){
int maxvals=(os->lacing_fill>255?255:os->lacing_fill);
int bytes=0;
long acc=0;
- ogg_int64_t granule_pos=os->granule_vals[0];
+ ogg_int64_t granule_pos=-1;
if(maxvals==0)return(0);
@@ -357,7 +357,8 @@ int ogg_stream_flush(ogg_stream_state *os,ogg_page *og){
for(vals=0;vals<maxvals;vals++){
if(acc>4096)break;
acc+=os->lacing_vals[vals]&0x0ff;
- granule_pos=os->granule_vals[vals];
+ if((os->lacing_vals[vals]&0xff)<255)
+ granule_pos=os->granule_vals[vals];
}
}