summaryrefslogtreecommitdiff
path: root/genisoimage/dvd_reader.h
diff options
context:
space:
mode:
Diffstat (limited to 'genisoimage/dvd_reader.h')
-rw-r--r--genisoimage/dvd_reader.h151
1 files changed, 151 insertions, 0 deletions
diff --git a/genisoimage/dvd_reader.h b/genisoimage/dvd_reader.h
new file mode 100644
index 0000000..1ec2648
--- /dev/null
+++ b/genisoimage/dvd_reader.h
@@ -0,0 +1,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 */