annotate vm/vm.h @ 392:0a5a6f03b029 src

Remove useless $Id$ and $Name$ keywords.
author diego
date Sun, 14 Sep 2008 20:31:43 +0000
parents d232a96ac231
children a70f79850e5f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
225
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
1 /*
390
ef8c0e834a14 Convert all ISO8859-1 sequences to proper UTF-8.
diego
parents: 389
diff changeset
2 * Copyright (C) 2000, 2001 HÃ¥kan Hjort
225
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
3 * Copyright (C) 2001 Rich Wareham <richwareham@users.sourceforge.net>
388
90ca650854e0 Remove all trailing whitespace,
rathann
parents: 312
diff changeset
4 *
225
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
5 * This file is part of libdvdnav, a DVD navigation library. It is modified
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
6 * from a file originally part of the Ogle DVD player.
388
90ca650854e0 Remove all trailing whitespace,
rathann
parents: 312
diff changeset
7 *
225
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
8 * libdvdnav is free software; you can redistribute it and/or modify
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
11 * (at your option) any later version.
388
90ca650854e0 Remove all trailing whitespace,
rathann
parents: 312
diff changeset
12 *
225
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
13 * libdvdnav is distributed in the hope that it will be useful,
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
16 * GNU General Public License for more details.
388
90ca650854e0 Remove all trailing whitespace,
rathann
parents: 312
diff changeset
17 *
389
d3c273ced49c Use consistent license headers everywhere: Fix wrong FSF address.
diego
parents: 388
diff changeset
18 * You should have received a copy of the GNU General Public License along
d3c273ced49c Use consistent license headers everywhere: Fix wrong FSF address.
diego
parents: 388
diff changeset
19 * with libdvdnav; if not, write to the Free Software Foundation, Inc.,
d3c273ced49c Use consistent license headers everywhere: Fix wrong FSF address.
diego
parents: 388
diff changeset
20 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
225
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
21 */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
22
391
d232a96ac231 Use consistent multiple inclusion guards everywhere:
diego
parents: 390
diff changeset
23 #ifndef LIBDVDNAV_VM_H
d232a96ac231 Use consistent multiple inclusion guards everywhere:
diego
parents: 390
diff changeset
24 #define LIBDVDNAV_VM_H
225
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
25
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
26 /* DOMAIN enum */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
27
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
28 typedef enum {
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
29 FP_DOMAIN = 1,
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
30 VTS_DOMAIN = 2,
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
31 VMGM_DOMAIN = 4,
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
32 VTSM_DOMAIN = 8
388
90ca650854e0 Remove all trailing whitespace,
rathann
parents: 312
diff changeset
33 } domain_t;
225
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
34
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
35 /**
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
36 * State: SPRM, GPRM, Domain, pgc, pgN, cellN, ?
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
37 */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
38 typedef struct {
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
39 registers_t registers;
388
90ca650854e0 Remove all trailing whitespace,
rathann
parents: 312
diff changeset
40
225
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
41 domain_t domain;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
42 int vtsN; /* 0 is vmgm? */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
43 pgc_t *pgc; /* either this or 'int pgcN' is enough? */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
44 int pgcN; /* but provide pgcN for quick lookup */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
45 int pgN; /* is this needed? can allways fid pgN from cellN? */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
46 int cellN;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
47 int32_t cell_restart; /* get cell to restart */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
48 int blockN;
388
90ca650854e0 Remove all trailing whitespace,
rathann
parents: 312
diff changeset
49
225
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
50 /* Resume info */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
51 int rsm_vtsN;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
52 int rsm_blockN; /* of nav_packet */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
53 uint16_t rsm_regs[5]; /* system registers 4-8 */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
54 int rsm_pgcN;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
55 int rsm_cellN;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
56 } dvd_state_t;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
57
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
58 typedef struct vm_position_s {
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
59 int16_t button; /* Button highlighted */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
60 int32_t vts; /* vts number to use */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
61 domain_t domain; /* domain to use */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
62 int32_t spu_channel; /* spu channel to use */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
63 int32_t angle_channel; /* angle channel to use */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
64 int32_t audio_channel; /* audio channel to use */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
65 int32_t hop_channel; /* channel hopping. E.g menu button pressed */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
66 #if 0
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
67 /* currently unused */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
68 int32_t title; /* title number */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
69 int32_t chapter; /* chapter number */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
70 #endif
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
71 int32_t cell; /* cell number */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
72 int32_t cell_restart; /* get cell to restart */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
73 int32_t cell_start; /* sector number of start of current cell in use */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
74 int32_t still; /* is cell still */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
75 int32_t block; /* block number within cell in use */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
76 } vm_position_t;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
77
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
78 typedef struct {
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
79 dvd_reader_t *dvd;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
80 ifo_handle_t *vmgi;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
81 ifo_handle_t *vtsi;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
82 dvd_state_t state;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
83 int32_t hop_channel;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
84 char dvd_name[50];
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
85 remap_t *map;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
86 int stopped;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
87 } vm_t;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
88
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
89 /* magic number for seeking hops */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
90 #define HOP_SEEK 0x1000
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
91
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
92
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
93 /* Audio stream number */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
94 #define AST_REG registers.SPRM[1]
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
95 /* Subpicture stream number */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
96 #define SPST_REG registers.SPRM[2]
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
97 /* Angle number */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
98 #define AGL_REG registers.SPRM[3]
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
99 /* Title Track Number */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
100 #define TTN_REG registers.SPRM[4]
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
101 /* VTS Title Track Number */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
102 #define VTS_TTN_REG registers.SPRM[5]
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
103 /* PGC Number for this Title Track */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
104 #define TT_PGCN_REG registers.SPRM[6]
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
105 /* Current Part of Title (PTT) number for (One_Sequential_PGC_Title) */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
106 #define PTTN_REG registers.SPRM[7]
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
107 /* Highlighted Button Number (btn nr 1 == value 1024) */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
108 #define HL_BTNN_REG registers.SPRM[8]
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
109 /* Parental Level */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
110 #define PTL_REG registers.SPRM[13]
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
111
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
112 /* Initialisation & destruction */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
113 vm_t *vm_new_vm(void);
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
114 void vm_free_vm(vm_t *vm);
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
115
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
116 /* IFO access */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
117 ifo_handle_t *vm_get_vmgi(vm_t *vm);
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
118 ifo_handle_t *vm_get_vtsi(vm_t *vm);
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
119
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
120 /* Reader Access */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
121 dvd_reader_t *vm_get_dvd_reader(vm_t *vm);
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
122
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
123 /* Basic Handling */
256
6299ccea8a38 killing a lot of asserts and turning them into forced executions of Exit,
mroi
parents: 225
diff changeset
124 int vm_start(vm_t *vm);
225
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
125 void vm_stop(vm_t *vm);
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
126 int vm_reset(vm_t *vm, const char *dvdroot);
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
127
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
128 /* copying and merging - useful for try-running an operation */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
129 vm_t *vm_new_copy(vm_t *vm);
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
130 void vm_merge(vm_t *target, vm_t *source);
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
131 void vm_free_copy(vm_t *vm);
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
132
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
133 /* regular playback */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
134 void vm_position_get(vm_t *vm, vm_position_t *position);
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
135 void vm_get_next_cell(vm_t *vm);
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
136
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
137 /* Jumping - all these return 1, if a hop has been performed */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
138 int vm_jump_pg(vm_t *vm, int pg);
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
139 int vm_jump_cell_block(vm_t *vm, int cell, int block);
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
140 int vm_jump_title_part(vm_t *vm, int title, int part);
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
141 int vm_jump_top_pg(vm_t *vm);
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
142 int vm_jump_next_pg(vm_t *vm);
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
143 int vm_jump_prev_pg(vm_t *vm);
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
144 int vm_jump_up(vm_t *vm);
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
145 int vm_jump_menu(vm_t *vm, DVDMenuID_t menuid);
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
146 int vm_jump_resume(vm_t *vm);
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
147 int vm_exec_cmd(vm_t *vm, vm_cmd_t *cmd);
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
148
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
149 /* getting information */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
150 int vm_get_current_menu(vm_t *vm, int *menuid);
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
151 int vm_get_current_title_part(vm_t *vm, int *title_result, int *part_result);
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
152 int vm_get_audio_stream(vm_t *vm, int audioN);
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
153 int vm_get_subp_stream(vm_t *vm, int subpN, int mode);
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
154 int vm_get_audio_active_stream(vm_t *vm);
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
155 int vm_get_subp_active_stream(vm_t *vm, int mode);
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
156 void vm_get_angle_info(vm_t *vm, int *current, int *num_avail);
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
157 #if 0
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
158 /* currently unused */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
159 void vm_get_audio_info(vm_t *vm, int *current, int *num_avail);
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
160 void vm_get_subp_info(vm_t *vm, int *current, int *num_avail);
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
161 void vm_get_video_res(vm_t *vm, int *width, int *height);
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
162 #endif
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
163 int vm_get_video_aspect(vm_t *vm);
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
164 int vm_get_video_scale_permission(vm_t *vm);
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
165 video_attr_t vm_get_video_attr(vm_t *vm);
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
166 audio_attr_t vm_get_audio_attr(vm_t *vm, int streamN);
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
167 subp_attr_t vm_get_subp_attr(vm_t *vm, int streamN);
312
fdbfb58d2735 added utility functions vm_get_title_ifo() and vm_ifo_close()
nicodvb
parents: 285
diff changeset
168 ifo_handle_t *vm_get_title_ifo(vm_t *vm, uint32_t title);
fdbfb58d2735 added utility functions vm_get_title_ifo() and vm_ifo_close()
nicodvb
parents: 285
diff changeset
169 void vm_ifo_close(ifo_handle_t *ifo);
225
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
170
285
52877d182e96 moved all header inclusions from .h to .c files; my word, I've never seen such a horrible entanglement as in this mess
nicodvb
parents: 256
diff changeset
171 /* Uncomment for VM command tracing */
52877d182e96 moved all header inclusions from .h to .c files; my word, I've never seen such a horrible entanglement as in this mess
nicodvb
parents: 256
diff changeset
172 /* #define TRACE */
225
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
173 #ifdef TRACE
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
174 /* Debug */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
175 void vm_position_print(vm_t *vm, vm_position_t *position);
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
176 #endif
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
177
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
178
391
d232a96ac231 Use consistent multiple inclusion guards everywhere:
diego
parents: 390
diff changeset
179 #endif /* LIBDVDNAV_VM_H */