Mercurial > libdvdnav.hg
view remap.h @ 417:af0b6a8bf7e9 src
Always attempt to move forward on a seek
From John Stebbins original post (with pathc, Thanks!):
libdvdnav has a problem in that it is difficult to gracefully recover
from a read error and continue on to subsequent blocks on the disc. An
application would like to seek forward past the current block after
getting a read error in order to attempt to get past the bad block(s).
But dvdnav_sector_search() does not guarantee that a requested forward
seek will actually move the current position forward. It truncates down
to the nearest VOBU which will almost always cause a forward seek
request by a single block (or a small number of blocks) to move the
current position backward. This behaviour puts the application into a
loop of: read failure, attempted forward seek (which results in backward
seek), read failure ...
author | erik |
---|---|
date | Fri, 07 Oct 2011 17:06:24 +0000 |
parents | 0a5a6f03b029 |
children |
line wrap: on
line source
/* * This file is part of libdvdnav, a DVD navigation library. * * libdvdnav is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * libdvdnav is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with libdvdnav; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef LIBDVDNAV_REMAP_H #define LIBDVDNAV_REMAP_H typedef struct block_s block_t; typedef struct remap_s remap_t; remap_t* remap_loadmap( char *title); unsigned long remap_block( remap_t *map, int domain, int title, int program, unsigned long cblock, unsigned long offset); #endif /* LIBDVDNAV_REMAP_H */