summaryrefslogtreecommitdiff
path: root/genisoimage/dvd_reader.h
blob: 1ec2648795d48abcb2220622ee43d16aab1d9698 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
/*
 * This file has been modified for the cdrkit suite.
 *
 * The behaviour and appearence of the program code below can differ to a major
 * extent from the version distributed by the original author(s).
 *
 * For details, see Changelog file distributed with the cdrkit package. If you
 * received this file from another source then ask the distributing person for
 * a log of modifications.
 *
 */

/* @(#)dvd_reader.h	1.2 04/03/02 joerg */

#ifndef	_DVD_READER_H
#define	_DVD_READER_H

/*
 * Copyright (C) 2001, 2002 Billy Biggs <vektor@dumbterm.net>,
 *			    Håkan Hjort <d95hjort@dtek.chalmers.se
 *			    Olaf Beck <olaf_sc@yahoo.com>
 *			    (I only did the cut down no other contribs)
 *			    Jörg Schilling <schilling@fokus.gmd.de>
 *			    (making the code portable)
 * This program 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.
 *
 * This program 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 this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

/*
 * NOTE: This is a cut down version of libdvdread for genisoimage, due
 * to portability issues with the current libdvdread according to
 * the maintainer of genisoimage.
 * This cut down version only reads from a harddisk file structure
 * and it only implements the functions necessary inorder to make
 * genisoimage produce valid DVD-Video images.
 * DON'T USE THIS LIBRARY IN ANY OTHER PROGRAM GET THE REAL
 * LIBDVDREAD INSTEAD
 */


#include <unixstd.h>	/* Make sure <sys/types.h> is included */

/*
 * Maximum length of filenames for UDF.
 */
#define	MAX_UDF_FILE_NAME_LEN 2048

/*
 * The length of one Logical Block of a DVD Video.
 */
#define	DVD_VIDEO_LB_LEN 2048

#ifdef __cplusplus
extern "C" {
#endif


struct dvd_reader_s {
	/* Information required for a directory path drive. */
	char	*path_root;
};


typedef struct dvd_reader_s	dvd_reader_t;
typedef struct dvd_file_s	dvd_file_t;


/*
 * dvd = DVDOpen(path);
 * Opens a directory name of a DVD-Video structure on HD.
 * Returns zero if it fails.
 * The path should be like this
 * "path/VIDEO_TS/VTS_01_1.VOB"
 */


extern	dvd_reader_t *DVDOpen(const char *);


/*
 * DVDClose(dvd);
 *
 * Closes and cleans up the DVD reader object.  You must close all open files
 * before calling this function.
 */


extern	void DVDClose(dvd_reader_t *);

/*
 * INFO_FILE       : VIDEO_TS.IFO     (manager)
 *                   VTS_XX_0.IFO     (title)
 *
 * INFO_BACKUP_FILE: VIDEO_TS.BUP     (manager)
 *                   VTS_XX_0.BUP     (title)
 *
 * MENU_VOBS       : VIDEO_TS.VOB     (manager)
 *                   VTS_XX_0.VOB     (title)
 *
 * TITLE_VOBS      : VTS_XX_[1-9].VOB (title)
 *                   All files in the title set are opened and
 *                   read as a single file.
 */
typedef enum {
	DVD_READ_INFO_FILE,
	DVD_READ_INFO_BACKUP_FILE,
	DVD_READ_MENU_VOBS,
	DVD_READ_TITLE_VOBS
} dvd_read_domain_t;

/*
 * dvd_file = DVDOpenFile(dvd, titlenum, domain);
 *
 * Opens a file on the DVD given the title number and domain.  If the title
 * number is 0, the video manager information is opened
 * (VIDEO_TS.[IFO,BUP,VOB]).  Returns a file structure which may be used for
 * reads, or 0 if the file was not found.
 */
extern	dvd_file_t * DVDOpenFile(dvd_reader_t *, int, dvd_read_domain_t);

/*
 * DVDCloseFile(dvd_file);
 *
 * Closes a file and frees the associated structure.
 */
extern	void DVDCloseFile(dvd_file_t *);


/*
 * blocks = DVDFileSize(dvd_file);
 *
 * Returns the file size in blocks.
 */
extern	ssize_t DVDFileSize(dvd_file_t *);


#ifdef __cplusplus
};
#endif
#endif /* _DVD_READER_H */