diff options
author | arpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-12-22 17:22:48 +0000 |
---|---|---|
committer | arpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-12-22 17:22:48 +0000 |
commit | 93bc457163b62ec90ba9fad419a9dbd85f2a3082 (patch) | |
tree | fa965746d9001c02a6c0a2ca98dc86d64943c091 /libmpdemux | |
parent | e4d8182636cfc8c0f7ffaed3739634b9fc66f535 (diff) | |
download | mpv-93bc457163b62ec90ba9fad419a9dbd85f2a3082.tar.bz2 mpv-93bc457163b62ec90ba9fad419a9dbd85f2a3082.tar.xz |
CDDA seeking fixed
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@8525 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux')
-rw-r--r-- | libmpdemux/cdda.c | 14 | ||||
-rw-r--r-- | libmpdemux/demux_rawaudio.c | 2 | ||||
-rw-r--r-- | libmpdemux/stream.c | 4 |
3 files changed, 14 insertions, 6 deletions
diff --git a/libmpdemux/cdda.c b/libmpdemux/cdda.c index b6dd1742ec..4d87145c8c 100644 --- a/libmpdemux/cdda.c +++ b/libmpdemux/cdda.c @@ -204,14 +204,15 @@ void seek_cdda(stream_t* s) { int i; sec = s->pos/CD_FRAMESIZE_RAW; -//printf("pos: %d, sec: %d ## %d\n", s->pos, sec, s->pos/CD_FRAMESIZE_RAW); -//printf("sector: %d\n", p->sector ); +//printf("pos: %d, sec: %d ## %d\n", (int)s->pos, (int)sec, CD_FRAMESIZE_RAW); +//printf("sector: %d new: %d\n", p->sector, sec ); for(i=0;i<p->cd->tracks;i++){ - if( p->sector>p->cd->disc_toc[i].dwStartSector && p->sector<p->cd->disc_toc[i+1].dwStartSector ) { + printf("trk #%d: %d .. %d\n",i,p->cd->disc_toc[i].dwStartSector,p->cd->disc_toc[i+1].dwStartSector); + if( p->sector>=p->cd->disc_toc[i].dwStartSector && p->sector<p->cd->disc_toc[i+1].dwStartSector ) { current_track = i; } - if( sec>p->cd->disc_toc[i].dwStartSector && sec<p->cd->disc_toc[i+1].dwStartSector ) { + if( sec>=p->cd->disc_toc[i].dwStartSector && sec<p->cd->disc_toc[i+1].dwStartSector ) { seeked_track = i; } } @@ -224,16 +225,17 @@ void seek_cdda(stream_t* s) { } } - +#if 0 if(sec < p->start_sector) sec = p->start_sector; else if(sec > p->end_sector) sec = p->end_sector; +#endif p->sector = sec; // s->pos = sec*CD_FRAMESIZE_RAW; -//printf("seek: %d, sec: %d\n", s->pos, sec); +//printf("seek: %d, sec: %d\n", (int)s->pos, sec); paranoia_seek(p->cdp,sec,SEEK_SET); } diff --git a/libmpdemux/demux_rawaudio.c b/libmpdemux/demux_rawaudio.c index 140758d7d4..e6075e9ebb 100644 --- a/libmpdemux/demux_rawaudio.c +++ b/libmpdemux/demux_rawaudio.c @@ -87,5 +87,7 @@ void demux_rawaudio_seek(demuxer_t *demuxer,float rel_seek_secs,int flags){ pos -= (pos % (sh_audio->channels * sh_audio->samplesize) ); stream_seek(s,pos); + sh_audio->delay=pos / (float)(sh_audio->wf->nAvgBytesPerSec); resync_audio_stream(sh_audio); +// printf("demux_rawaudio: streamtell=%d\n",(int)stream_tell(demuxer->stream)); } diff --git a/libmpdemux/stream.c b/libmpdemux/stream.c index e1ee75eb16..bc999b553f 100644 --- a/libmpdemux/stream.c +++ b/libmpdemux/stream.c @@ -130,6 +130,10 @@ off_t newpos=0; newpos=(pos/VCD_SECTOR_DATA)*VCD_SECTOR_DATA;break; case STREAMTYPE_DVD: newpos=pos/2048; newpos*=2048; break; +#ifdef HAVE_CDDA + case STREAMTYPE_CDDA: + newpos=(pos/VCD_SECTOR_SIZE)*VCD_SECTOR_SIZE;break; +#endif } if(verbose>=3){ |