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
commit5d4aa6d6cb1588840245ca7e055316f6393d9c9f (patch)
treeb975c7b0025d271c1739377ec79b199002652bc4 /src
parenta84a79abbb026b0ab7398ea67011948fb7f31e82 (diff)
downloadogg-git-5d4aa6d6cb1588840245ca7e055316f6393d9c9f.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. svn path=/trunk/ogg/; revision=9598
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];
}
}