Fix seeking near the start of saved live streams.
authorTimothy B. Terriberry <tterribe@xiph.org>
Tue, 7 May 2013 03:07:48 +0000 (20:07 -0700)
committerTimothy B. Terriberry <tterribe@xiph.org>
Tue, 7 May 2013 03:07:48 +0000 (20:07 -0700)
If a stream starts with a non-zero granpos, we would subtract 80 ms
 from the target time, and then report failure when the best page
 we could find (the first page in the link) had a granpos larger
 than that.
This worked for normal streams because the subtraction would fail
 (granpos can't wrap past -1) and we checked for that.

src/opusfile.c

index 0a1b8d6..9101cf8 100644 (file)
@@ -2194,7 +2194,8 @@ static int op_pcm_seek_page(OggOpusFile *_of,
   /*We discard the first 80 ms of data after a seek, so seek back that much
      farther.
     If we can't, simply seek to the beginning of the link.*/
-  if(OP_UNLIKELY(op_granpos_add(&_target_gp,_target_gp,-80*48)<0)){
+  if(OP_UNLIKELY(op_granpos_add(&_target_gp,_target_gp,-80*48)<0)
+   ||OP_UNLIKELY(op_granpos_cmp(_target_gp,pcm_start)<0)){
     _target_gp=pcm_start;
   }
   /*Special case seeking to the start of the link.*/