1
0
mirror of https://github.com/mpv-player/mpv synced 2025-03-11 08:37:59 +00:00

stream_dvd: Improve seeking by position

The current code takes the angle into account. This is a mistake since
the position is independent of the angle.

patch by Olivier Rolland, billl users.sourceforge net

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31895 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
diego 2010-08-01 22:53:09 +00:00 committed by Uoti Urpala
parent 0a321e01e3
commit 5c76f24b09

View File

@ -343,24 +343,17 @@ static void dvd_seek(dvd_priv_t *d, int pos)
d->cur_pack<d->cur_pgc->cell_playback[ d->cur_cell ].first_sector) {
// ok, cell change, find the right cell!
d->cur_cell=0;
if(d->cur_pgc->cell_playback[d->cur_cell].block_type == BLOCK_TYPE_ANGLE_BLOCK )
d->cur_cell+=dvd_angle;
while(1) {
int next;
d->cell_last_pack=d->cur_pgc->cell_playback[ d->cur_cell ].last_sector;
if(d->cur_pack<d->cur_pgc->cell_playback[ d->cur_cell ].first_sector) {
d->cur_pack=d->cur_pgc->cell_playback[ d->cur_cell ].first_sector;
cell_playback_t *cell;
for(d->cur_cell=0; d->cur_cell < d->cur_pgc->nr_of_cells; d->cur_cell++) {
cell = &(d->cur_pgc->cell_playback[d->cur_cell]);
if(cell->block_type == BLOCK_TYPE_ANGLE_BLOCK && cell->block_mode != BLOCK_MODE_FIRST_CELL)
continue;
d->cell_last_pack=cell->last_sector;
if(d->cur_pack<cell->first_sector) {
d->cur_pack=cell->first_sector;
break;
}
if(d->cur_pack<=d->cell_last_pack) break; // ok, we find it! :)
next=dvd_next_cell(d);
if(next<0) {
//d->cur_pack=d->cell_last_pack+1;
break; // we're after the last cell
}
d->cur_cell=next;
}
}