diff options
author | Mike Smith <msmith@xiph.org> | 2005-07-22 16:39:42 +0000 |
---|---|---|
committer | Mike Smith <msmith@xiph.org> | 2005-07-22 16:39:42 +0000 |
commit | 5d4aa6d6cb1588840245ca7e055316f6393d9c9f (patch) | |
tree | b975c7b0025d271c1739377ec79b199002652bc4 /src | |
parent | a84a79abbb026b0ab7398ea67011948fb7f31e82 (diff) | |
download | ogg-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.c | 5 |
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]; } } |