Opus: fix seeking to start of track

Change-Id: I8a8604d6726304d04281671b475b2f75f9bfc0e5
This commit is contained in:
Nils Wallménius 2013-05-19 14:16:22 +02:00
parent 2e9aa3d8b0
commit a17d6de5bc

View file

@ -188,7 +188,7 @@ static int64_t seek_backwards(ogg_sync_state *oy, ogg_page *og,
} }
static int speex_seek_page_granule(int64_t pos, int64_t curpos, static int speex_seek_page_granule(int64_t pos, int64_t curpos,
ogg_sync_state *oy) ogg_sync_state *oy, ogg_stream_state *os)
{ {
/* TODO: Someone may want to try to implement seek to packet, /* TODO: Someone may want to try to implement seek to packet,
instead of just to page (should be more accurate, not be any instead of just to page (should be more accurate, not be any
@ -257,6 +257,7 @@ static int speex_seek_page_granule(int64_t pos, int64_t curpos,
*curbyteoffset = 0; *curbyteoffset = 0;
ci->seek_buffer(*curbyteoffset); ci->seek_buffer(*curbyteoffset);
ogg_sync_reset(oy); ogg_sync_reset(oy);
ogg_stream_reset(os);
return 0; return 0;
} else if (curpos > pos) { /* backwards */ } else if (curpos > pos) { /* backwards */
offset = seek_backwards(oy,&og,pos); offset = seek_backwards(oy,&og,pos);
@ -365,7 +366,7 @@ enum codec_status codec_run(void)
LOGF("Opus seek page:%lld,%lld,%ld\n", LOGF("Opus seek page:%lld,%lld,%ld\n",
seek_target, page_granule, (long)param); seek_target, page_granule, (long)param);
speex_seek_page_granule(seek_target, page_granule, &oy); speex_seek_page_granule(seek_target, page_granule, &oy, &os);
} }
ci->set_elapsed(param); ci->set_elapsed(param);