Mercurial > libdvdnav.hg
annotate read_cache.h @ 419:8c87207b73ac src
Make sure we get nav packets for all cells in multi angle features
Currently libdvdnav uses the ILVU information to specify where a vobunit
ends if a feature is multiangled. However since one ILVU can contain
multiple vobunits, this means that libdvdnav never generates NAV events nor
updates highlight information for anything but the first vobunit in the
ILVU. It also causes issues for any player relying on timestamps in nav
packets to flatten the mpeg timestamps.
Patch by Joakim Plate.
author | rathann |
---|---|
date | Sun, 09 Dec 2012 21:22:15 +0000 |
parents | 0a5a6f03b029 |
children |
rev | line source |
---|---|
388 | 1 /* |
0 | 2 * Copyright (C) 2000 Rich Wareham <richwareham@users.sourceforge.net> |
388 | 3 * |
0 | 4 * This file is part of libdvdnav, a DVD navigation library. |
388 | 5 * |
0 | 6 * libdvdnav is free software; you can redistribute it and/or modify |
7 * it under the terms of the GNU General Public License as published by | |
8 * the Free Software Foundation; either version 2 of the License, or | |
9 * (at your option) any later version. | |
388 | 10 * |
0 | 11 * libdvdnav is distributed in the hope that it will be useful, |
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 * GNU General Public License for more details. | |
388 | 15 * |
389
d3c273ced49c
Use consistent license headers everywhere: Fix wrong FSF address.
diego
parents:
388
diff
changeset
|
16 * You should have received a copy of the GNU General Public License along |
d3c273ced49c
Use consistent license headers everywhere: Fix wrong FSF address.
diego
parents:
388
diff
changeset
|
17 * with libdvdnav; if not, write to the Free Software Foundation, Inc., |
d3c273ced49c
Use consistent license headers everywhere: Fix wrong FSF address.
diego
parents:
388
diff
changeset
|
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
0 | 19 */ |
20 | |
391 | 21 #ifndef LIBDVDNAV_READ_CACHE_H |
22 #define LIBDVDNAV_READ_CACHE_H | |
0 | 23 |
34
1f29402ef2ef
'Objectified' the read-ahead cache in preparation to implement a 'proper' threaded cache a-la that recommended in the DVD Demystified book.
richwareham
parents:
0
diff
changeset
|
24 /* Opaque cache type -- defined in dvdnav_internal.h */ |
1f29402ef2ef
'Objectified' the read-ahead cache in preparation to implement a 'proper' threaded cache a-la that recommended in the DVD Demystified book.
richwareham
parents:
0
diff
changeset
|
25 /* typedef struct read_cache_s read_cache_t; */ |
1f29402ef2ef
'Objectified' the read-ahead cache in preparation to implement a 'proper' threaded cache a-la that recommended in the DVD Demystified book.
richwareham
parents:
0
diff
changeset
|
26 |
1f29402ef2ef
'Objectified' the read-ahead cache in preparation to implement a 'proper' threaded cache a-la that recommended in the DVD Demystified book.
richwareham
parents:
0
diff
changeset
|
27 /* EXPERIMENTAL: Setting the following to 1 will use an experimental multi-threaded |
388 | 28 * read-ahead cache. |
34
1f29402ef2ef
'Objectified' the read-ahead cache in preparation to implement a 'proper' threaded cache a-la that recommended in the DVD Demystified book.
richwareham
parents:
0
diff
changeset
|
29 */ |
60 | 30 #define _MULTITHREAD_ 0 |
34
1f29402ef2ef
'Objectified' the read-ahead cache in preparation to implement a 'proper' threaded cache a-la that recommended in the DVD Demystified book.
richwareham
parents:
0
diff
changeset
|
31 |
1f29402ef2ef
'Objectified' the read-ahead cache in preparation to implement a 'proper' threaded cache a-la that recommended in the DVD Demystified book.
richwareham
parents:
0
diff
changeset
|
32 /* Constructor/destructors */ |
1f29402ef2ef
'Objectified' the read-ahead cache in preparation to implement a 'proper' threaded cache a-la that recommended in the DVD Demystified book.
richwareham
parents:
0
diff
changeset
|
33 read_cache_t *dvdnav_read_cache_new(dvdnav_t* dvd_self); |
1f29402ef2ef
'Objectified' the read-ahead cache in preparation to implement a 'proper' threaded cache a-la that recommended in the DVD Demystified book.
richwareham
parents:
0
diff
changeset
|
34 void dvdnav_read_cache_free(read_cache_t* self); |
1f29402ef2ef
'Objectified' the read-ahead cache in preparation to implement a 'proper' threaded cache a-la that recommended in the DVD Demystified book.
richwareham
parents:
0
diff
changeset
|
35 |
0 | 36 /* This function MUST be called whenever self->file changes. */ |
34
1f29402ef2ef
'Objectified' the read-ahead cache in preparation to implement a 'proper' threaded cache a-la that recommended in the DVD Demystified book.
richwareham
parents:
0
diff
changeset
|
37 void dvdnav_read_cache_clear(read_cache_t *self); |
0 | 38 /* This function is called just after reading the NAV packet. */ |
34
1f29402ef2ef
'Objectified' the read-ahead cache in preparation to implement a 'proper' threaded cache a-la that recommended in the DVD Demystified book.
richwareham
parents:
0
diff
changeset
|
39 void dvdnav_pre_cache_blocks(read_cache_t *self, int sector, size_t block_count); |
60 | 40 /* This function will do the cache read. |
41 * The buffer handed in must be malloced to take one dvd block. | |
42 * On a cache hit, a different buffer will be returned though. | |
43 * Those buffers must _never_ be freed. */ | |
44 int dvdnav_read_cache_block(read_cache_t *self, int sector, size_t block_count, uint8_t **buf); | |
0 | 45 |
391 | 46 #endif /* LIBDVDNAV_READ_CACHE_H */ |