libdvdread 7.1.0
dvd_reader.h
1/*
2 * Copyright (C) 2001, 2002 Billy Biggs <vektor@dumbterm.net>,
3 * Håkan Hjort <d95hjort@dtek.chalmers.se>,
4 * Björn Englund <d4bjorn@dtek.chalmers.se>
5 *
6 * This file is part of libdvdread.
7 *
8 * libdvdread is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * libdvdread is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License along
19 * with libdvdread; if not, write to the Free Software Foundation, Inc.,
20 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
21 */
22
23#ifndef LIBDVDREAD_DVD_READER_H
24#define LIBDVDREAD_DVD_READER_H
25
26/* dvd_filesystem.h exposes off64_t in the public filesystem callbacks. */
27#ifndef _LARGEFILE64_SOURCE
28#define _LARGEFILE64_SOURCE
29#endif
30
31#include <sys/types.h>
32#include <inttypes.h>
33#include <stdarg.h>
34
35#if defined(_MSC_VER) && !defined(ssize_t)
36#include <basetsd.h>
37typedef SSIZE_T ssize_t;
38#endif
39
40#include <dvdread/attributes.h>
41
48
52#include <dvdread/version.h>
53
57#include "dvd_filesystem.h"
58
59
63#define DVD_VIDEO_LB_LEN 2048
64
68#define MAX_UDF_FILE_NAME_LEN 2048
69
70#ifdef __cplusplus
71extern "C" {
72#endif
73
77typedef struct dvd_reader_s dvd_reader_t;
78typedef struct dvd_reader_device_s dvd_reader_device_t;
79
83typedef struct dvd_file_s dvd_file_t;
84
86{
87 int ( *pf_seek ) ( void *p_stream, uint64_t i_pos);
88 int ( *pf_read ) ( void *p_stream, void* buffer, int i_read);
89 int ( *pf_readv ) ( void *p_stream, void *p_iovec, int i_blocks);
90};
92
101typedef enum
102{
103 DVD_LOGGER_LEVEL_INFO,
104 DVD_LOGGER_LEVEL_ERROR,
105 DVD_LOGGER_LEVEL_WARN,
106 DVD_LOGGER_LEVEL_DEBUG,
107} dvd_logger_level_t;
108
109typedef struct
110{
111 void ( *pf_log ) ( void *, dvd_logger_level_t, const char *, va_list );
113
117typedef struct {
118 off_t size;
120 off_t parts_size[9];
121} dvd_stat_t;
122
150DVDREAD_API dvd_reader_t *DVDOpen( const char * );
151DVDREAD_API dvd_reader_t *DVDOpenStream( void *, dvd_reader_stream_cb * );
152
165DVDREAD_API dvd_reader_t *DVDOpen2( void *, const dvd_logger_cb *, const char *);
166DVDREAD_API dvd_reader_t *DVDOpenStream2( void *, const dvd_logger_cb *, dvd_reader_stream_cb *);
167
168/* in the case the the type was autodetected, can check with dvd->dvd_type */
169/* To explicitly open the disc as DVD-Audio */
170DVDREAD_API dvd_reader_t *DVDOpenAudio( void *, const dvd_logger_cb *, const char *);
171DVDREAD_API dvd_reader_t *DVDOpenStreamAudio( void *, const dvd_logger_cb *, dvd_reader_stream_cb *);
172
173/* To explicitly open the disc as DVD-VR*/
174DVDREAD_API dvd_reader_t *DVDOpenVideoRecording( void *, const dvd_logger_cb *, const char *);
175DVDREAD_API dvd_reader_t *DVDOpenStreamVideoRecording( void *, const dvd_logger_cb *, dvd_reader_stream_cb *);
176
193DVDREAD_API dvd_reader_t *DVDOpenFiles( void *priv, const dvd_logger_cb *logcb, const char * path, dvd_reader_filesystem_h *fs);
194
204DVDREAD_API void DVDClose( dvd_reader_t * );
205
209typedef enum {
210 DVD_READ_INFO_FILE,
211 DVD_READ_INFO_BACKUP_FILE,
212 DVD_READ_MENU_VOBS,
213 DVD_READ_TITLE_VOBS,
216 DVD_READ_SAMG_INFO, /* for the AUDIO_PP.IFO */
217 DVD_READ_ASVS_INFO, /* for the AUDIO_SV.IFO */
218 DVD_READ_ASVS_INFO_BACKUP, /* for the AUDIO_SV.BUP */
219} dvd_read_domain_t;
220
246DVDREAD_API int DVDFileStat(dvd_reader_t *, int, dvd_read_domain_t, dvd_stat_t *);
247
261DVDREAD_API dvd_file_t *DVDOpenFile( dvd_reader_t *, int, dvd_read_domain_t );
262
270DVDREAD_API void DVDCloseFile( dvd_file_t * );
271
287DVDREAD_API ssize_t DVDReadBlocks( dvd_file_t *, int, size_t, unsigned char * );
288
301DVDREAD_API int32_t DVDFileSeek( dvd_file_t *, int32_t );
302
315DVDREAD_API ssize_t DVDReadBytes( dvd_file_t *, void *, size_t );
316
325DVDREAD_API ssize_t DVDFileSize( dvd_file_t * );
326
340DVDREAD_API int DVDDiscID( dvd_reader_t *, unsigned char * );
341
360DVDREAD_API int DVDUDFVolumeInfo( dvd_reader_t *, char *, unsigned int,
361 unsigned char *, unsigned int );
362
363DVDREAD_API int DVDFileSeekForce( dvd_file_t *, int offset, int force_size);
364
386DVDREAD_API int DVDISOVolumeInfo( dvd_reader_t *, char *, unsigned int,
387 unsigned char *, unsigned int );
388
401DVDREAD_API int DVDUDFCacheLevel( dvd_reader_t *, int );
402
403#ifdef __cplusplus
404};
405#endif
406#endif /* LIBDVDREAD_DVD_READER_H */
Definition dvd_reader.h:110
Definition dvd_reader.h:86
Definition dvd_reader.h:117
off_t size
Definition dvd_reader.h:118
off_t parts_size[9]
Definition dvd_reader.h:120
int nr_parts
Definition dvd_reader.h:119