Mercurial > libdvdnav.hg
annotate dvdnav.h @ 164:58c914a3ccbd src
update comment
author | mroi |
---|---|
date | Tue, 08 Apr 2003 13:32:11 +0000 |
parents | 26334f5fac2b |
children | 90b1f6f0520e |
rev | line source |
---|---|
0 | 1 /* |
2 * Copyright (C) 2001 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 * $Id$ | |
21 * | |
22 */ | |
23 | |
147 | 24 /* |
25 * This is the main header file applications should include if they want | |
26 * to access dvdnav functionality. | |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
27 */ |
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
28 |
0 | 29 #ifndef DVDNAV_H_INCLUDED |
30 #define DVDNAV_H_INCLUDED | |
31 | |
5
c1b55dc1bfed
Add API call to get number of programmes in current title.
richwareham
parents:
4
diff
changeset
|
32 #ifdef __cplusplus |
c1b55dc1bfed
Add API call to get number of programmes in current title.
richwareham
parents:
4
diff
changeset
|
33 extern "C" { |
c1b55dc1bfed
Add API call to get number of programmes in current title.
richwareham
parents:
4
diff
changeset
|
34 #endif |
c1b55dc1bfed
Add API call to get number of programmes in current title.
richwareham
parents:
4
diff
changeset
|
35 |
139
f7a26cd00c93
* only install the headers that really are intended for public use
mroi
parents:
132
diff
changeset
|
36 #ifdef DVDNAV_COMPILE |
f7a26cd00c93
* only install the headers that really are intended for public use
mroi
parents:
132
diff
changeset
|
37 # include "dvdnav_events.h" |
f7a26cd00c93
* only install the headers that really are intended for public use
mroi
parents:
132
diff
changeset
|
38 # include "dvd_types.h" |
f7a26cd00c93
* only install the headers that really are intended for public use
mroi
parents:
132
diff
changeset
|
39 #else |
f7a26cd00c93
* only install the headers that really are intended for public use
mroi
parents:
132
diff
changeset
|
40 # include <dvdnav/dvdnav_events.h> |
f7a26cd00c93
* only install the headers that really are intended for public use
mroi
parents:
132
diff
changeset
|
41 # include <dvdnav/dvd_types.h> |
f7a26cd00c93
* only install the headers that really are intended for public use
mroi
parents:
132
diff
changeset
|
42 #endif |
0 | 43 |
44 #include <dvdread/dvd_reader.h> | |
91
df9712507b30
Add a new API function, to allow for more flexible menu button control.
jcdutton
parents:
90
diff
changeset
|
45 #include <dvdread/ifo_types.h> /* For vm_cmd_t */ |
0 | 46 |
147 | 47 |
48 /********************************************************************* | |
49 * dvdnav data types * | |
50 *********************************************************************/ | |
51 | |
52 /* | |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
53 * Opaque data-type can be viewed as a 'DVD handle'. You should get |
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
54 * a pointer to a dvdnav_t from the dvdnav_open() function. |
147 | 55 * Never call free() on the pointer, you have to give it back with |
56 * dvdnav_close(). | |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
57 */ |
0 | 58 typedef struct dvdnav_s dvdnav_t; |
59 | |
147 | 60 /* Status as reported by most of libdvdnav's functions */ |
0 | 61 typedef int dvdnav_status_t; |
62 | |
147 | 63 /* |
64 * Unless otherwise stated, all functions return DVDNAV_STATUS_OK if | |
65 * they succeeded, otherwise DVDNAV_STATUS_ERR is returned and the error may | |
66 * be obtained by calling dvdnav_err_to_string(). | |
67 */ | |
0 | 68 #define DVDNAV_STATUS_ERR 0 |
69 #define DVDNAV_STATUS_OK 1 | |
70 | |
147 | 71 |
72 /********************************************************************* | |
73 * initialisation & housekeeping functions * | |
74 *********************************************************************/ | |
75 | |
76 /* | |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
77 * These functions allow you to open a DVD device and associate it |
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
78 * with a dvdnav_t. |
0 | 79 */ |
80 | |
147 | 81 /* |
82 * Attempts to open the DVD drive at the specified path and pre-cache | |
83 * the CSS-keys. libdvdread is used to access the DVD, so any source | |
84 * supported by libdvdread can be given with "path". Currently, | |
85 * libdvdread can access: DVD drives, DVD image files, DVD file-by-file | |
86 * copies. | |
0 | 87 * |
147 | 88 * The resulting dvdnav_t handle will be written to *dest. |
0 | 89 */ |
147 | 90 dvdnav_status_t dvdnav_open(dvdnav_t **dest, const char *path); |
0 | 91 |
147 | 92 /* |
0 | 93 * Closes a dvdnav_t previously opened with dvdnav_open(), freeing any |
94 * memory associated with it. | |
95 */ | |
96 dvdnav_status_t dvdnav_close(dvdnav_t *self); | |
97 | |
147 | 98 /* |
99 * Resets the DVD virtual machine and cache buffers. | |
4
99bed5d6db2f
Added reset patch from Kees Cook <kees@outflux.net>
richwareham
parents:
0
diff
changeset
|
100 */ |
99bed5d6db2f
Added reset patch from Kees Cook <kees@outflux.net>
richwareham
parents:
0
diff
changeset
|
101 dvdnav_status_t dvdnav_reset(dvdnav_t *self); |
99bed5d6db2f
Added reset patch from Kees Cook <kees@outflux.net>
richwareham
parents:
0
diff
changeset
|
102 |
147 | 103 /* |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
104 * Fills a pointer with a value pointing to a string describing |
147 | 105 * the path associated with an open dvdnav_t. It assigns *path to NULL |
0 | 106 * on error. |
107 */ | |
147 | 108 dvdnav_status_t dvdnav_path(dvdnav_t *self, const char **path); |
0 | 109 |
147 | 110 /* |
0 | 111 * Returns a human-readable string describing the last error. |
112 */ | |
114 | 113 const char* dvdnav_err_to_string(dvdnav_t *self); |
0 | 114 |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
115 |
147 | 116 /********************************************************************* |
117 * changing and reading DVD player characteristics * | |
118 *********************************************************************/ | |
119 | |
120 /* | |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
121 * These functions allow you to manipulate the various global characteristics |
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
122 * of the DVD playback engine. |
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
123 */ |
0 | 124 |
147 | 125 /* |
126 * Sets the region mask (bit 0 set implies region 1, bit 1 set implies | |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
127 * region 2, etc) of the virtual machine. Generally you will only need to set |
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
128 * this if you are playing RCE discs which query the virtual machine as to its |
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
129 * region setting. |
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
130 * |
147 | 131 * This has _nothing_ to do with the region setting of the DVD drive. |
0 | 132 */ |
147 | 133 dvdnav_status_t dvdnav_set_region_mask(dvdnav_t *self, int region_mask); |
0 | 134 |
147 | 135 /* |
136 * Returns the region mask (bit 0 set implies region 1, bit 1 set implies | |
137 * region 2, etc) of the virtual machine. | |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
138 * |
147 | 139 * This has _nothing_ to do with the region setting of the DVD drive. |
0 | 140 */ |
147 | 141 dvdnav_status_t dvdnav_get_region_mask(dvdnav_t *self, int *region_mask); |
0 | 142 |
147 | 143 /* |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
144 * Specify whether read-ahead caching should be used. You may not want this if your |
114 | 145 * decoding engine does its own buffering. |
147 | 146 * |
147 * The default read-ahead cache does not use an additional thread for the reading | |
148 * (see read_cache.c for a threaded cache, but note that this code is currently | |
149 * unmaintained). It prebuffers on VOBU level by reading ahead several buffers | |
150 * on every read request. The speed of this prebuffering has been optimized to | |
151 * also work on slow DVD drives. | |
0 | 152 * |
147 | 153 * If in addition you want to prevent memcpy's to improve performance, have a look |
154 * at dvdnav_get_next_cache_block(). | |
0 | 155 */ |
147 | 156 dvdnav_status_t dvdnav_set_readahead_flag(dvdnav_t *self, int read_ahead_flag); |
0 | 157 |
147 | 158 /* |
159 * Query whether read-ahead caching/buffering will be used. | |
160 */ | |
161 dvdnav_status_t dvdnav_get_readahead_flag(dvdnav_t *self, int *read_ahead_flag); | |
162 | |
163 /* | |
132 | 164 * Specify whether the positioning works PGC or PG based. |
147 | 165 * Programs (PGs) on DVDs are similar to Chapters and a program chain (PGC) |
132 | 166 * usually covers a whole feature. This affects the behaviour of the |
147 | 167 * functions dvdnav_get_position() and dvdnav_sector_search(). See there. |
132 | 168 * Default is PG based positioning. |
169 */ | |
147 | 170 dvdnav_status_t dvdnav_set_PGC_positioning_flag(dvdnav_t *self, int pgc_based_flag); |
132 | 171 |
147 | 172 /* |
132 | 173 * Query whether positioning is PG or PGC based. |
174 */ | |
147 | 175 dvdnav_status_t dvdnav_get_PGC_positioning_flag(dvdnav_t *self, int *pgc_based_flag); |
176 | |
132 | 177 |
147 | 178 /********************************************************************* |
179 * reading data * | |
180 *********************************************************************/ | |
181 | |
182 /* | |
183 * These functions are used to poll the playback enginge and actually get data | |
184 * off the DVD. | |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
185 */ |
0 | 186 |
147 | 187 /* |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
188 * Attempts to get the next block off the DVD and copies it into the buffer 'buf'. |
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
189 * If there is any special actions that may need to be performed, the value |
147 | 190 * pointed to by 'event' gets set accordingly. |
0 | 191 * |
192 * If 'event' is DVDNAV_BLOCK_OK then 'buf' is filled with the next block | |
193 * (note that means it has to be at /least/ 2048 bytes big). 'len' is | |
194 * then set to 2048. | |
195 * | |
196 * Otherwise, buf is filled with an appropriate event structure and | |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
197 * len is set to the length of that structure. |
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
198 * |
147 | 199 * See the dvdnav_events.h header for information on the various events. |
0 | 200 */ |
201 dvdnav_status_t dvdnav_get_next_block(dvdnav_t *self, unsigned char *buf, | |
202 int *event, int *len); | |
203 | |
147 | 204 /* |
60 | 205 * This basically does the same as dvdnav_get_next_block. The only difference is |
206 * that it avoids a memcopy, when the requested block was found in the cache. | |
207 * I such a case (cache hit) this function will return a different pointer than | |
208 * the one handed in, pointing directly into the relevant block in the cache. | |
147 | 209 * Those pointers must _never_ be freed but instead returned to the library via |
114 | 210 * dvdnav_free_cache_block(). |
60 | 211 */ |
212 dvdnav_status_t dvdnav_get_next_cache_block(dvdnav_t *self, unsigned char **buf, | |
213 int *event, int *len); | |
214 | |
147 | 215 /* |
114 | 216 * All buffers which came from the internal cache (when dvdnav_get_next_cache_block() |
60 | 217 * returned a buffer different from the one handed in) have to be freed with this |
218 * function. Although handing in other buffers not from the cache doesn't cause any harm. | |
219 */ | |
220 dvdnav_status_t dvdnav_free_cache_block(dvdnav_t *self, unsigned char *buf); | |
221 | |
147 | 222 /* |
223 * If we are currently in a still-frame this function skips it. | |
55
5674fbd44f26
report all spu types (widescreen, letterbox and pan&scan), not widescreen
mroi
parents:
44
diff
changeset
|
224 * |
147 | 225 * See also the DVDNAV_STILL_FRAME event. |
0 | 226 */ |
227 dvdnav_status_t dvdnav_still_skip(dvdnav_t *self); | |
228 | |
147 | 229 /* |
116 | 230 * If we are currently in WAIT state, that is: the application is required to |
231 * wait for its fifos to become empty, calling this signals libdvdnav that this | |
232 * is achieved and that it can continue. | |
233 * | |
147 | 234 * See also the DVDNAV_WAIT event. |
116 | 235 */ |
236 dvdnav_status_t dvdnav_wait_skip(dvdnav_t *self); | |
237 | |
147 | 238 /* |
239 * Returns the still time from the currently playing cell. | |
240 * The still time is given in seconds with 0xff meaning an indefinite still. | |
114 | 241 * |
147 | 242 * This function can be used to detect still frames before they are reached. |
243 * Some players might need this to prepare for a frame to be shown for a | |
244 * longer time than usual. | |
114 | 245 */ |
246 uint32_t dvdnav_get_next_still_flag(dvdnav_t *self); | |
247 | |
147 | 248 /* |
249 * Stops playback. The next event obtained with one of the get_next_block | |
250 * functions will be a DVDNAV_STOP event. | |
0 | 251 * |
147 | 252 * It is not required to call this before dvdnav_close(). |
253 */ | |
254 dvdnav_status_t dvdnav_stop(dvdnav_t *self); | |
255 | |
256 | |
257 /********************************************************************* | |
258 * title/part navigation * | |
259 *********************************************************************/ | |
260 | |
261 /* | |
262 * Returns the number of titles on the disk. | |
263 */ | |
264 dvdnav_status_t dvdnav_get_number_of_titles(dvdnav_t *self, int *titles); | |
265 | |
266 /* | |
267 * Returns the number of parts within the given title. | |
268 */ | |
269 dvdnav_status_t dvdnav_get_number_of_parts(dvdnav_t *self, int title, int *parts); | |
270 | |
271 /* | |
272 * Plays the specified title of the DVD from its beginning (that is: part 1). | |
0 | 273 */ |
274 dvdnav_status_t dvdnav_title_play(dvdnav_t *self, int title); | |
275 | |
147 | 276 /* |
277 * Plays the specified title, starting from the specified part. | |
0 | 278 */ |
279 dvdnav_status_t dvdnav_part_play(dvdnav_t *self, int title, int part); | |
280 | |
147 | 281 /* |
0 | 282 * Play the specified amount of parts of the specified title of |
283 * the DVD then STOP. | |
284 * | |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
285 * Currently unimplemented! |
0 | 286 */ |
287 dvdnav_status_t dvdnav_part_play_auto_stop(dvdnav_t *self, int title, | |
114 | 288 int part, int parts_to_play); |
0 | 289 |
147 | 290 /* |
291 * Play the specified title starting from the specified time. | |
0 | 292 * |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
293 * Currently unimplemented! |
0 | 294 */ |
295 dvdnav_status_t dvdnav_time_play(dvdnav_t *self, int title, | |
114 | 296 unsigned long int time); |
0 | 297 |
147 | 298 /* |
123 | 299 * Stop playing the current position and jump to the specified menu. |
114 | 300 * |
147 | 301 * See also DVDMenuID_t from libdvdread |
114 | 302 */ |
303 dvdnav_status_t dvdnav_menu_call(dvdnav_t *self, DVDMenuID_t menu); | |
304 | |
147 | 305 /* |
164 | 306 * Return the title number and part currently being played. |
307 * A title of 0 indicates, we are in a menu. In this case, part | |
308 * is set to the current menu's ID. | |
114 | 309 */ |
310 dvdnav_status_t dvdnav_current_title_info(dvdnav_t *self, int *title, | |
147 | 311 int *part); |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
312 |
147 | 313 /* |
314 * Return the current position (in blocks) within the current | |
315 * title and the length (in blocks) of said title. | |
316 * | |
317 * Current implementation is wrong and likely to behave unpredictably! | |
318 * Use is discouraged! | |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
319 */ |
147 | 320 dvdnav_status_t dvdnav_get_position_in_title(dvdnav_t *self, |
321 unsigned int *pos, | |
322 unsigned int *len); | |
0 | 323 |
147 | 324 /* |
325 * This function is only available for compatibility reasons. | |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
326 * |
147 | 327 * Stop playing the current position and start playback of the current title |
328 * from the specified part. | |
0 | 329 */ |
147 | 330 dvdnav_status_t dvdnav_part_search(dvdnav_t *self, int part); |
331 | |
0 | 332 |
147 | 333 /********************************************************************* |
334 * program chain/program navigation * | |
335 *********************************************************************/ | |
336 | |
337 /* | |
123 | 338 * Stop playing the current position and start playback from the last |
339 * VOBU boundary before the given sector. The sector number is not | |
340 * meant to be an absolute physical DVD sector, but a relative sector | |
341 * in the current program. This function cannot leave the current | |
342 * program and will fail, if asked to do so. | |
0 | 343 * |
147 | 344 * If program chain based positioning is enabled |
345 * (see dvdnav_set_PGC_positioning_flag()), this will seek to the relative | |
346 * sector inside the current program chain. | |
347 * | |
348 * 'origin' can be one of SEEK_SET, SEEK_CUR, SEEK_END as defined in | |
349 * fcntl.h. | |
0 | 350 */ |
351 dvdnav_status_t dvdnav_sector_search(dvdnav_t *self, | |
114 | 352 unsigned long int offset, int origin); |
0 | 353 |
147 | 354 /* |
355 * Stop playing the current position and start playback of the title | |
356 * from the specified timecode. | |
0 | 357 * |
147 | 358 * Currently unimplemented! |
0 | 359 */ |
147 | 360 dvdnav_status_t dvdnav_time_search(dvdnav_t *self, |
361 unsigned long int time); | |
0 | 362 |
147 | 363 /* |
364 * Stop playing current position and play the "GoUp"-program chain. | |
365 * (which generally leads to the title menu or a higer-level menu). | |
366 */ | |
367 dvdnav_status_t dvdnav_go_up(dvdnav_t *self); | |
368 | |
369 /* | |
123 | 370 * Stop playing the current position and start playback at the |
371 * previous program (if it exists). | |
0 | 372 */ |
373 dvdnav_status_t dvdnav_prev_pg_search(dvdnav_t *self); | |
374 | |
147 | 375 /* |
123 | 376 * Stop playing the current position and start playback at the |
377 * first program. | |
0 | 378 */ |
379 dvdnav_status_t dvdnav_top_pg_search(dvdnav_t *self); | |
380 | |
147 | 381 /* |
123 | 382 * Stop playing the current position and start playback at the |
383 * next program (if it exists). | |
0 | 384 */ |
385 dvdnav_status_t dvdnav_next_pg_search(dvdnav_t *self); | |
386 | |
147 | 387 /* |
0 | 388 * Return the current position (in blocks) within the current |
123 | 389 * program and the length (in blocks) of current program. |
147 | 390 * |
391 * If program chain based positioning is enabled | |
392 * (see dvdnav_set_PGC_positioning_flag()), this will return the | |
393 * relative position in and the length of the current program chain. | |
0 | 394 */ |
114 | 395 dvdnav_status_t dvdnav_get_position(dvdnav_t *self, unsigned int *pos, |
8
66708b4a1b5e
Stop C++ bitching about some things and extend the menus example
richwareham
parents:
5
diff
changeset
|
396 unsigned int *len); |
66708b4a1b5e
Stop C++ bitching about some things and extend the menus example
richwareham
parents:
5
diff
changeset
|
397 |
0 | 398 |
147 | 399 /********************************************************************* |
400 * menu highlights * | |
401 *********************************************************************/ | |
0 | 402 |
147 | 403 /* |
114 | 404 * Most functions related to highlights take a NAV PCI packet as a parameter. |
405 * While you can get the such a packet from libdvdnav, for players with internal | |
406 * FIFOs, this will result in errors, because due to the FIFO length, libdvdnav will | |
407 * be ahead in the stream compared to what the user is seeing on screen. | |
408 * Therefore, player applications who have a NAV packet available, which is | |
409 * better in sync with the actual playback should always pass this one to these | |
410 * functions. | |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
411 */ |
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
412 |
147 | 413 /* |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
414 * Get the currently highlighted button |
147 | 415 * number (1..36) or 0 if no button is highlighted. |
0 | 416 */ |
147 | 417 dvdnav_status_t dvdnav_get_current_highlight(dvdnav_t *self, int *button); |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
418 |
147 | 419 /* |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
420 * Returns the Presentation Control Information (PCI) structure associated |
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
421 * with the current position. |
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
422 * |
147 | 423 * Read the general notes above. |
424 * See also libdvdreads nav_types.h for definition of pci_t. | |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
425 */ |
22
3c1df0cb3aee
Start of rewrite of libdvdnav. Still need to re-implement seeking.
jcdutton
parents:
21
diff
changeset
|
426 pci_t* dvdnav_get_current_nav_pci(dvdnav_t *self); |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
427 |
147 | 428 /* |
429 * Returns the DSI (data search information) structure associated | |
66
2bd4a78eefce
Patch from aschultz@cs.uni-magdeburg.de to allow for still-frame 'peek-ahead'
richwareham
parents:
60
diff
changeset
|
430 * with the current position. |
2bd4a78eefce
Patch from aschultz@cs.uni-magdeburg.de to allow for still-frame 'peek-ahead'
richwareham
parents:
60
diff
changeset
|
431 * |
147 | 432 * Read the general notes above. |
433 * See also libdvdreads nav_types.h for definition of dsi_t. | |
66
2bd4a78eefce
Patch from aschultz@cs.uni-magdeburg.de to allow for still-frame 'peek-ahead'
richwareham
parents:
60
diff
changeset
|
434 */ |
2bd4a78eefce
Patch from aschultz@cs.uni-magdeburg.de to allow for still-frame 'peek-ahead'
richwareham
parents:
60
diff
changeset
|
435 dsi_t* dvdnav_get_current_nav_dsi(dvdnav_t *self); |
2bd4a78eefce
Patch from aschultz@cs.uni-magdeburg.de to allow for still-frame 'peek-ahead'
richwareham
parents:
60
diff
changeset
|
436 |
147 | 437 /* |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
438 * Get the area associated with a certain button. |
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
439 */ |
147 | 440 dvdnav_status_t dvdnav_get_highlight_area(pci_t *nav_pci , int32_t button, int32_t mode, |
441 dvdnav_highlight_area_t *highlight); | |
0 | 442 |
147 | 443 /* |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
444 * Move button highlight around as suggested by function name (e.g. with arrow keys). |
0 | 445 */ |
98 | 446 dvdnav_status_t dvdnav_upper_button_select(dvdnav_t *self, pci_t *pci); |
447 dvdnav_status_t dvdnav_lower_button_select(dvdnav_t *self, pci_t *pci); | |
448 dvdnav_status_t dvdnav_right_button_select(dvdnav_t *self, pci_t *pci); | |
449 dvdnav_status_t dvdnav_left_button_select(dvdnav_t *self, pci_t *pci); | |
0 | 450 |
147 | 451 /* |
452 * Activate ("press") the currently highlighted button. | |
0 | 453 */ |
98 | 454 dvdnav_status_t dvdnav_button_activate(dvdnav_t *self, pci_t *pci); |
0 | 455 |
147 | 456 /* |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
457 * Highlight a specific button. |
0 | 458 */ |
98 | 459 dvdnav_status_t dvdnav_button_select(dvdnav_t *self, pci_t *pci, int button); |
0 | 460 |
147 | 461 /* |
462 * Activate ("press") specified button. | |
0 | 463 */ |
98 | 464 dvdnav_status_t dvdnav_button_select_and_activate(dvdnav_t *self, pci_t *pci, int button); |
0 | 465 |
147 | 466 /* |
91
df9712507b30
Add a new API function, to allow for more flexible menu button control.
jcdutton
parents:
90
diff
changeset
|
467 * Activate (press) a button and execute specified command. |
df9712507b30
Add a new API function, to allow for more flexible menu button control.
jcdutton
parents:
90
diff
changeset
|
468 */ |
df9712507b30
Add a new API function, to allow for more flexible menu button control.
jcdutton
parents:
90
diff
changeset
|
469 dvdnav_status_t dvdnav_button_activate_cmd(dvdnav_t *self, int32_t button, vm_cmd_t *cmd); |
df9712507b30
Add a new API function, to allow for more flexible menu button control.
jcdutton
parents:
90
diff
changeset
|
470 |
147 | 471 /* |
472 * Select button at specified video frame coordinates. | |
0 | 473 */ |
98 | 474 dvdnav_status_t dvdnav_mouse_select(dvdnav_t *self, pci_t *pci, int x, int y); |
0 | 475 |
147 | 476 /* |
477 * Activate ("press") button at specified video frame coordinates. | |
0 | 478 */ |
98 | 479 dvdnav_status_t dvdnav_mouse_activate(dvdnav_t *self, pci_t *pci, int x, int y); |
0 | 480 |
147 | 481 |
482 /********************************************************************* | |
483 * languages * | |
484 *********************************************************************/ | |
485 | |
486 /* | |
487 * The language codes expected by these functions are two character | |
488 * codes as defined in ISO639. | |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
489 */ |
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
490 |
147 | 491 /* |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
492 * Set which menu language we should use. |
0 | 493 */ |
44 | 494 dvdnav_status_t dvdnav_menu_language_select(dvdnav_t *self, |
495 char *code); | |
496 | |
147 | 497 /* |
44 | 498 * Set which audio language we should use. |
499 */ | |
500 dvdnav_status_t dvdnav_audio_language_select(dvdnav_t *self, | |
501 char *code); | |
502 | |
147 | 503 /* |
44 | 504 * Set which spu language we should use. |
505 */ | |
506 dvdnav_status_t dvdnav_spu_language_select(dvdnav_t *self, | |
0 | 507 char *code); |
508 | |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
509 |
147 | 510 /********************************************************************* |
511 * obtaining stream attributes * | |
512 *********************************************************************/ | |
0 | 513 |
147 | 514 /* |
515 * Return a string describing the title of the DVD. | |
516 * This is an ID string encoded on the disc by the author. In many cases | |
517 * this is a descriptive string such as `THE_MATRIX' but sometimes is sigularly | |
518 * uninformative such as `PDVD-011421'. Some DVD authors even forget to set this, | |
519 * so you may also read the default of the authoring software they used, like | |
520 * `DVDVolume'. | |
0 | 521 */ |
147 | 522 dvdnav_status_t dvdnav_get_title_string(dvdnav_t *self, const char **title_str); |
0 | 523 |
147 | 524 /* |
525 * Get video aspect code. | |
526 * The aspect code does only change on VTS boundaries. | |
527 * See the DVDNAV_VTS_CHANGE event. | |
528 * | |
529 * 0 -- 4:3, 2 -- 16:9 | |
0 | 530 */ |
147 | 531 uint8_t dvdnav_get_video_aspect(dvdnav_t *self); |
0 | 532 |
147 | 533 /* |
534 * Get video scaling permissions. | |
535 * The scaling permission does only change on VTS boundaries. | |
536 * See the DVDNAV_VTS_CHANGE event. | |
0 | 537 * |
147 | 538 * bit0 set = deny letterboxing, bit1 set = deny pan&scan |
0 | 539 */ |
147 | 540 uint8_t dvdnav_get_video_scale_permission(dvdnav_t *self); |
0 | 541 |
147 | 542 /* |
543 * Converts a *logical* audio stream id into language code | |
544 * (returns 0xffff if no such stream). | |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
545 */ |
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
546 uint16_t dvdnav_audio_stream_to_lang(dvdnav_t *self, uint8_t stream); |
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
547 |
147 | 548 /* |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
549 * Converts a *logical* subpicture stream id into country code |
147 | 550 * (returns 0xffff if no such stream). |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
551 */ |
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
552 uint16_t dvdnav_spu_stream_to_lang(dvdnav_t *self, uint8_t stream); |
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
553 |
147 | 554 /* |
555 * Converts a *physical* (MPEG) audio stream id into a logical stream number. | |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
556 */ |
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
557 int8_t dvdnav_get_audio_logical_stream(dvdnav_t *self, uint8_t audio_num); |
0 | 558 |
147 | 559 /* |
560 * Converts a *physical* (MPEG) subpicture stream id into a logical stream number. | |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
561 */ |
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
562 int8_t dvdnav_get_spu_logical_stream(dvdnav_t *self, uint8_t subp_num); |
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
563 |
147 | 564 /* |
114 | 565 * Get active audio stream. |
566 */ | |
567 int8_t dvdnav_get_active_audio_stream(dvdnav_t *self); | |
568 | |
147 | 569 /* |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
570 * Get active spu stream. |
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
571 */ |
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
572 int8_t dvdnav_get_active_spu_stream(dvdnav_t *self); |
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
573 |
147 | 574 |
575 /********************************************************************* | |
576 * multiple angles * | |
577 *********************************************************************/ | |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
578 |
147 | 579 /* |
580 * The libdvdnav library abstracts away the difference between seamless and | |
581 * non-seamless angles. From the point of view of the programmer you just set the | |
582 * angle number and all is well in the world. You will always see only the | |
583 * selected angle coming from the get_next_block functions. | |
0 | 584 * |
147 | 585 * Note: |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
586 * It is quite possible that some tremendously strange DVD feature might change the |
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
587 * angle number from under you. Generally you should always view the results from |
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
588 * dvdnav_get_angle_info() as definitive only up to the next time you call |
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
589 * dvdnav_get_next_block(). |
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
590 */ |
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
591 |
147 | 592 /* |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
593 * Sets the current angle. If you try to follow a non existant angle |
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
594 * the call fails. |
0 | 595 */ |
596 dvdnav_status_t dvdnav_angle_change(dvdnav_t *self, int angle); | |
597 | |
147 | 598 /* |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
599 * Returns the current angle and number of angles present. |
0 | 600 */ |
147 | 601 dvdnav_status_t dvdnav_get_angle_info(dvdnav_t *self, int *current_angle, |
114 | 602 int *number_of_angles); |
66
2bd4a78eefce
Patch from aschultz@cs.uni-magdeburg.de to allow for still-frame 'peek-ahead'
richwareham
parents:
60
diff
changeset
|
603 |
147 | 604 /********************************************************************* |
605 * domain queries * | |
606 *********************************************************************/ | |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
607 |
147 | 608 /* |
609 * Are we in the First Play domain? | |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
610 */ |
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
611 int8_t dvdnav_is_domain_fp(dvdnav_t *self); |
114 | 612 |
147 | 613 /* |
614 * Are we in the Video management Menu domain? | |
0 | 615 */ |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
616 int8_t dvdnav_is_domain_vmgm(dvdnav_t *self); |
114 | 617 |
147 | 618 /* |
619 * Are we in the Video Title Menu domain? | |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
620 */ |
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
621 int8_t dvdnav_is_domain_vtsm(dvdnav_t *self); |
114 | 622 |
147 | 623 /* |
624 * Are we in the Video Title Set domain? | |
43
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
625 */ |
0ba15bf3dc25
Biiiiiiig change to let doxygen generate some docs for the library. Note that I'm in no way sure that the autoconf stuff plays nice.
richwareham
parents:
22
diff
changeset
|
626 int8_t dvdnav_is_domain_vts(dvdnav_t *self); |
0 | 627 |
628 | |
5
c1b55dc1bfed
Add API call to get number of programmes in current title.
richwareham
parents:
4
diff
changeset
|
629 #ifdef __cplusplus |
c1b55dc1bfed
Add API call to get number of programmes in current title.
richwareham
parents:
4
diff
changeset
|
630 } |
c1b55dc1bfed
Add API call to get number of programmes in current title.
richwareham
parents:
4
diff
changeset
|
631 #endif |
c1b55dc1bfed
Add API call to get number of programmes in current title.
richwareham
parents:
4
diff
changeset
|
632 |
0 | 633 #endif /* DVDNAV_H_INCLUDED */ |