annotate dvdnav_internal.h @ 249:5d643668f1e3 src

I added this code myself a long time ago, but now I am quite convinced that it is wrong: Why would we filter out SPU stream change events that switch SPUs off? This breaks watching the trailer on the RC2 of "Girl, interrupted", because you always get unwanted subtitles. When I added this code, it fixed a problem with the RC2 of "Terminator", but I cannot reproduce this problem any more. Back then, the menu highlights would not show up, but they do now. I assume the problem really got fixed with proper support for forced subtitles in xine, so this crappy workaround here can go away. After all, this way it is more symmetric to audio stream change events, because these are not filtered.
author mroi
date Sun, 12 Sep 2004 15:12:43 +0000
parents eaa775ba1306
children 12cdd1369f77
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
201
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
1 /*
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
2 * Copyright (C) 2001 Rich Wareham <richwareham@users.sourceforge.net>
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
3 *
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
4 * This file is part of libdvdnav, a DVD navigation library.
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
5 *
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
6 * libdvdnav is free software; you can redistribute it and/or modify
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
7 * it under the terms of the GNU General Public License as published by
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
8 * the Free Software Foundation; either version 2 of the License, or
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
9 * (at your option) any later version.
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
10 *
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
11 * libdvdnav is distributed in the hope that it will be useful,
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
14 * GNU General Public License for more details.
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
15 *
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
16 * You should have received a copy of the GNU General Public License
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
17 * along with this program; if not, write to the Free Software
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
18 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
19 *
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
20 * $Id$
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
21 *
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
22 */
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
23
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
24 #ifndef DVDNAV_INTERNAL_H_INCLUDED
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
25 #define DVDNAV_INTERNAL_H_INCLUDED
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
26
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
27 #ifdef HAVE_CONFIG_H
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
28 #include "config.h"
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
29 #endif
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
30
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
31 #include <stdlib.h>
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
32 #include <stdio.h>
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
33 #include <unistd.h>
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
34 #include <limits.h>
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
35 #include <string.h>
230
065a2835ba90 Patch to compile with mingw32 from: -
jcdutton
parents: 217
diff changeset
36
065a2835ba90 Patch to compile with mingw32 from: -
jcdutton
parents: 217
diff changeset
37 #ifdef WIN32
239
eaa775ba1306 merge the two #ifdef blocks that both check for WIN32 to improve readability
mroi
parents: 230
diff changeset
38
230
065a2835ba90 Patch to compile with mingw32 from: -
jcdutton
parents: 217
diff changeset
39 /* pthread_mutex_* wrapper for win32 */
065a2835ba90 Patch to compile with mingw32 from: -
jcdutton
parents: 217
diff changeset
40 #include <windows.h>
065a2835ba90 Patch to compile with mingw32 from: -
jcdutton
parents: 217
diff changeset
41 #include <process.h>
065a2835ba90 Patch to compile with mingw32 from: -
jcdutton
parents: 217
diff changeset
42 typedef CRITICAL_SECTION pthread_mutex_t;
065a2835ba90 Patch to compile with mingw32 from: -
jcdutton
parents: 217
diff changeset
43 #define pthread_mutex_init(a, b) InitializeCriticalSection(a)
065a2835ba90 Patch to compile with mingw32 from: -
jcdutton
parents: 217
diff changeset
44 #define pthread_mutex_lock(a) EnterCriticalSection(a)
065a2835ba90 Patch to compile with mingw32 from: -
jcdutton
parents: 217
diff changeset
45 #define pthread_mutex_unlock(a) LeaveCriticalSection(a)
065a2835ba90 Patch to compile with mingw32 from: -
jcdutton
parents: 217
diff changeset
46 #define pthread_mutex_destroy(a)
201
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
47
230
065a2835ba90 Patch to compile with mingw32 from: -
jcdutton
parents: 217
diff changeset
48 /* replacement gettimeofday implementation */
065a2835ba90 Patch to compile with mingw32 from: -
jcdutton
parents: 217
diff changeset
49 #include <sys/timeb.h>
065a2835ba90 Patch to compile with mingw32 from: -
jcdutton
parents: 217
diff changeset
50 static inline int gettimeofday( struct timeval *tv, void *tz )
065a2835ba90 Patch to compile with mingw32 from: -
jcdutton
parents: 217
diff changeset
51 {
065a2835ba90 Patch to compile with mingw32 from: -
jcdutton
parents: 217
diff changeset
52 struct timeb t;
065a2835ba90 Patch to compile with mingw32 from: -
jcdutton
parents: 217
diff changeset
53 ftime( &t );
065a2835ba90 Patch to compile with mingw32 from: -
jcdutton
parents: 217
diff changeset
54 tv->tv_sec = t.time;
065a2835ba90 Patch to compile with mingw32 from: -
jcdutton
parents: 217
diff changeset
55 tv->tv_usec = t.millitm * 1000;
065a2835ba90 Patch to compile with mingw32 from: -
jcdutton
parents: 217
diff changeset
56 return 0;
065a2835ba90 Patch to compile with mingw32 from: -
jcdutton
parents: 217
diff changeset
57 }
065a2835ba90 Patch to compile with mingw32 from: -
jcdutton
parents: 217
diff changeset
58 #include <io.h> /* read() */
065a2835ba90 Patch to compile with mingw32 from: -
jcdutton
parents: 217
diff changeset
59 #define lseek64 _lseeki64
239
eaa775ba1306 merge the two #ifdef blocks that both check for WIN32 to improve readability
mroi
parents: 230
diff changeset
60
eaa775ba1306 merge the two #ifdef blocks that both check for WIN32 to improve readability
mroi
parents: 230
diff changeset
61 #else
eaa775ba1306 merge the two #ifdef blocks that both check for WIN32 to improve readability
mroi
parents: 230
diff changeset
62
eaa775ba1306 merge the two #ifdef blocks that both check for WIN32 to improve readability
mroi
parents: 230
diff changeset
63 #include <pthread.h>
eaa775ba1306 merge the two #ifdef blocks that both check for WIN32 to improve readability
mroi
parents: 230
diff changeset
64
eaa775ba1306 merge the two #ifdef blocks that both check for WIN32 to improve readability
mroi
parents: 230
diff changeset
65 #endif /* WIN32 */
201
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
66
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
67 /* Uncomment for VM command tracing */
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
68 /* #define TRACE */
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
69
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
70 #include "decoder.h"
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
71 #include "dvdnav.h"
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
72 #include "vm.h"
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
73 #include "vmcmd.h"
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
74
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
75 /* where should libdvdnav write its messages (stdout/stderr) */
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
76 #define MSG_OUT stdout
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
77
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
78 /* Maximum length of an error string */
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
79 #define MAX_ERR_LEN 255
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
80
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
81 /* Use the POSIX PATH_MAX if available */
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
82 #ifdef PATH_MAX
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
83 #define MAX_PATH_LEN PATH_MAX
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
84 #else
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
85 #define MAX_PATH_LEN 255 /* Arbitrary */
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
86 #endif
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
87
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
88 #ifndef DVD_VIDEO_LB_LEN
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
89 #define DVD_VIDEO_LB_LEN 2048
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
90 #endif
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
91
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
92 typedef struct read_cache_s read_cache_t;
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
93
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
94 /*
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
95 * These are defined here because they are
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
96 * not in ifo_types.h, they maybe one day
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
97 */
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
98
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
99 #ifndef audio_status_t
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
100 typedef struct {
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
101 #ifdef WORDS_BIGENDIAN
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
102 unsigned int available : 1;
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
103 unsigned int zero1 : 4;
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
104 unsigned int stream_number : 3;
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
105 uint8_t zero2;
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
106 #else
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
107 uint8_t zero2;
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
108 unsigned int stream_number : 3;
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
109 unsigned int zero1 : 4;
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
110 unsigned int available : 1;
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
111 #endif
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
112 } ATTRIBUTE_PACKED audio_status_t;
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
113 #endif
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
114
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
115 #ifndef spu_status_t
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
116 typedef struct {
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
117 #ifdef WORDS_BIGENDIAN
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
118 unsigned int available : 1;
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
119 unsigned int zero1 : 2;
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
120 unsigned int stream_number_4_3 : 5;
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
121 unsigned int zero2 : 3;
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
122 unsigned int stream_number_wide : 5;
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
123 unsigned int zero3 : 3;
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
124 unsigned int stream_number_letterbox : 5;
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
125 unsigned int zero4 : 3;
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
126 unsigned int stream_number_pan_scan : 5;
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
127 #else
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
128 unsigned int stream_number_pan_scan : 5;
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
129 unsigned int zero4 : 3;
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
130 unsigned int stream_number_letterbox : 5;
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
131 unsigned int zero3 : 3;
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
132 unsigned int stream_number_wide : 5;
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
133 unsigned int zero2 : 3;
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
134 unsigned int stream_number_4_3 : 5;
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
135 unsigned int zero1 : 2;
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
136 unsigned int available : 1;
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
137 #endif
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
138 } ATTRIBUTE_PACKED spu_status_t;
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
139 #endif
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
140
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
141 typedef struct dvdnav_vobu_s {
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
142 int32_t vobu_start; /* Logical Absolute. MAX needed is 0x300000 */
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
143 int32_t vobu_length;
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
144 int32_t blockN; /* Relative offset */
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
145 int32_t vobu_next; /* Relative offset */
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
146 } dvdnav_vobu_t;
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
147
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
148 /** The main DVDNAV type **/
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
149
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
150 struct dvdnav_s {
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
151 /* General data */
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
152 char path[MAX_PATH_LEN]; /* Path to DVD device/dir */
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
153 dvd_file_t *file; /* Currently opened file */
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
154
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
155 /* Position data */
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
156 vm_position_t position_next;
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
157 vm_position_t position_current;
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
158 dvdnav_vobu_t vobu;
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
159
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
160 /* NAV data */
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
161 pci_t pci;
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
162 dsi_t dsi;
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
163 uint32_t last_cmd_nav_lbn; /* detects when a command is issued on an already left NAV */
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
164
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
165 /* Flags */
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
166 int skip_still; /* Set when skipping a still */
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
167 int sync_wait; /* applications should wait till they are in sync with us */
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
168 int sync_wait_skip; /* Set when skipping wait state */
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
169 int spu_clut_changed; /* The SPU CLUT changed */
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
170 int started; /* vm_start has been called? */
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
171 int use_read_ahead; /* 1 - use read-ahead cache, 0 - don't */
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
172 int pgc_based; /* positioning works PGC based instead of PG based */
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
173
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
174 /* VM */
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
175 vm_t *vm;
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
176 pthread_mutex_t vm_lock;
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
177
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
178 /* Read-ahead cache */
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
179 read_cache_t *cache;
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
180
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
181 /* Errors */
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
182 char err_str[MAX_ERR_LEN];
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
183 };
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
184
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
185 /** USEFUL MACROS **/
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
186
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
187 #ifdef __GNUC__
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
188 #define printerrf(format, args...) snprintf(this->err_str, MAX_ERR_LEN, format, ## args);
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
189 #else
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
190 #ifdef _MSC_VER
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
191 #define printerrf(str) snprintf(this->err_str, MAX_ERR_LEN, str);
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
192 #else
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
193 #define printerrf(...) snprintf(this->err_str, MAX_ERR_LEN, __VA_ARGS__);
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
194 #endif /* WIN32 */
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
195 #endif
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
196 #define printerr(str) strncpy(this->err_str, str, MAX_ERR_LEN);
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
197
534f17c79e4a dvdnav_internal.h is an internal header, only used at compile time;
mroi
parents:
diff changeset
198 #endif /* DVDNAV_INTERNAL_H_INCLUDED */