1 /*
2  * Copyright (C) 2000 Rich Wareham <richwareham@users.sourceforge.net>
3  *
4  * This file is part of libdvdnav, a DVD navigation library.
5  *
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.
10  *
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.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA
19  */
20 
21 #ifndef __DVDNAV_READ_CACHE_H
22 #define __DVDNAV_READ_CACHE_H
23 
24 #include "dvdnav_internal.h"
25 
26 /* Opaque cache type -- defined in dvdnav_internal.h */
27 /* typedef struct read_cache_s read_cache_t; */
28 
29 /* EXPERIMENTAL: Setting the following to 1 will use an experimental multi-threaded
30  *               read-ahead cache.
31  */
32 #define _MULTITHREAD_ 0
33 
34 /* Constructor/destructors */
35 read_cache_t *dvdnav_read_cache_new(dvdnav_t* dvd_self);
36 void dvdnav_read_cache_free(read_cache_t* self);
37 
38 /* This function MUST be called whenever self->file changes. */
39 void dvdnav_read_cache_clear(read_cache_t *self);
40 /* This function is called just after reading the NAV packet. */
41 void dvdnav_pre_cache_blocks(read_cache_t *self, int sector, size_t block_count);
42 /* This function will do the cache read.
43  * The buffer handed in must be malloced to take one dvd block.
44  * On a cache hit, a different buffer will be returned though.
45  * Those buffers must _never_ be freed. */
46 int dvdnav_read_cache_block(read_cache_t *self, int sector, size_t block_count, uint8_t **buf);
47 
48 #endif /* __DVDNAV_READ_CACHE_H */
49