Mercurial > libdvdnav.hg
annotate vm.h @ 50:578ce1d41479 src
Rename some of the functions in vm.c to help readability.
Hopefully fix __FUNCTION__ problem. Use __func_ as recommended in C99.
Fix bug where libdvdnav would not immeadiately replay the same cell due to menu buttons.
author | jcdutton |
---|---|
date | Tue, 02 Jul 2002 22:57:10 +0000 |
parents | df024077cbc1 |
children | 5674fbd44f26 |
rev | line source |
---|---|
0 | 1 /* |
2 * Copyright (C) 2000, 2001 Håkan Hjort | |
3 * Copyright (C) 2001 Rich Wareham <richwareham@users.sourceforge.net> | |
4 * | |
5 * This file is part of libdvdnav, a DVD navigation library. It is modified | |
6 * from a file originally part of the Ogle DVD player. | |
7 * | |
8 * libdvdnav is free software; you can redistribute it and/or modify | |
9 * it under the terms of the GNU General Public License as published by | |
10 * the Free Software Foundation; either version 2 of the License, or | |
11 * (at your option) any later version. | |
12 * | |
13 * libdvdnav is distributed in the hope that it will be useful, | |
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 * GNU General Public License for more details. | |
17 * | |
18 * You should have received a copy of the GNU General Public License | |
19 * along with this program; if not, write to the Free Software | |
20 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA | |
21 * | |
22 * $Id$ | |
23 * | |
24 */ | |
25 | |
26 #ifndef VM_H_INCLUDED | |
27 #define VM_H_INCLUDED | |
28 | |
29 #include "decoder.h" | |
30 #include <dvd_types.h> | |
31 | |
32 /* DOMAIN enum */ | |
33 | |
34 typedef enum { | |
35 FP_DOMAIN = 1, | |
36 VTS_DOMAIN = 2, | |
37 VMGM_DOMAIN = 4, | |
38 VTSM_DOMAIN = 8 | |
39 } domain_t; | |
40 | |
41 /** | |
42 * State: SPRM, GPRM, Domain, pgc, pgN, cellN, ? | |
43 */ | |
44 typedef struct { | |
45 registers_t registers; | |
46 | |
47 pgc_t *pgc; /* either this or *pgc is enough? */ | |
48 | |
49 domain_t domain; | |
50 int vtsN; /* 0 is vmgm? */ | |
51 /* int pgcN; // either this or *pgc is enough. Which to use? */ | |
52 int pgN; /* is this needed? can allways fid pgN from cellN? */ | |
53 int cellN; | |
50
578ce1d41479
Rename some of the functions in vm.c to help readability.
jcdutton
parents:
25
diff
changeset
|
54 int32_t cell_restart; /* get cell to restart */ |
0 | 55 int blockN; |
56 | |
57 /* Resume info */ | |
58 int rsm_vtsN; | |
59 int rsm_blockN; /* of nav_packet */ | |
60 uint16_t rsm_regs[5]; /* system registers 4-8 */ | |
61 int rsm_pgcN; | |
62 int rsm_cellN; | |
63 } dvd_state_t; | |
64 | |
22
3c1df0cb3aee
Start of rewrite of libdvdnav. Still need to re-implement seeking.
jcdutton
parents:
17
diff
changeset
|
65 typedef struct vm_position_s { |
3c1df0cb3aee
Start of rewrite of libdvdnav. Still need to re-implement seeking.
jcdutton
parents:
17
diff
changeset
|
66 int16_t button; /* Button highlighted */ |
3c1df0cb3aee
Start of rewrite of libdvdnav. Still need to re-implement seeking.
jcdutton
parents:
17
diff
changeset
|
67 uint32_t clut; /* CLUT to use, not needed in this struct */ |
3c1df0cb3aee
Start of rewrite of libdvdnav. Still need to re-implement seeking.
jcdutton
parents:
17
diff
changeset
|
68 int32_t vts; /* vts number to use */ |
3c1df0cb3aee
Start of rewrite of libdvdnav. Still need to re-implement seeking.
jcdutton
parents:
17
diff
changeset
|
69 int32_t domain; /* domain to use */ |
3c1df0cb3aee
Start of rewrite of libdvdnav. Still need to re-implement seeking.
jcdutton
parents:
17
diff
changeset
|
70 int32_t spu_channel; /* spu channel to use */ |
3c1df0cb3aee
Start of rewrite of libdvdnav. Still need to re-implement seeking.
jcdutton
parents:
17
diff
changeset
|
71 int32_t angle_channel; /* angle channel to use */ |
3c1df0cb3aee
Start of rewrite of libdvdnav. Still need to re-implement seeking.
jcdutton
parents:
17
diff
changeset
|
72 int32_t audio_channel; /* audio channel to use */ |
3c1df0cb3aee
Start of rewrite of libdvdnav. Still need to re-implement seeking.
jcdutton
parents:
17
diff
changeset
|
73 int32_t hop_channel; /* channel hopping. E.g menu button pressed */ |
3c1df0cb3aee
Start of rewrite of libdvdnav. Still need to re-implement seeking.
jcdutton
parents:
17
diff
changeset
|
74 int32_t title; /* title number */ |
3c1df0cb3aee
Start of rewrite of libdvdnav. Still need to re-implement seeking.
jcdutton
parents:
17
diff
changeset
|
75 int32_t chapter; /* chapter number */ |
3c1df0cb3aee
Start of rewrite of libdvdnav. Still need to re-implement seeking.
jcdutton
parents:
17
diff
changeset
|
76 int32_t cell; /* cell number */ |
50
578ce1d41479
Rename some of the functions in vm.c to help readability.
jcdutton
parents:
25
diff
changeset
|
77 int32_t cell_restart; /* get cell to restart */ |
22
3c1df0cb3aee
Start of rewrite of libdvdnav. Still need to re-implement seeking.
jcdutton
parents:
17
diff
changeset
|
78 int32_t still; /* is cell still */ |
3c1df0cb3aee
Start of rewrite of libdvdnav. Still need to re-implement seeking.
jcdutton
parents:
17
diff
changeset
|
79 int32_t vobu_start; /* block number of start of current VOBU in use */ |
3c1df0cb3aee
Start of rewrite of libdvdnav. Still need to re-implement seeking.
jcdutton
parents:
17
diff
changeset
|
80 int32_t vobu_next; /* block number within VOBU in use */ |
3c1df0cb3aee
Start of rewrite of libdvdnav. Still need to re-implement seeking.
jcdutton
parents:
17
diff
changeset
|
81 } vm_position_t; |
3c1df0cb3aee
Start of rewrite of libdvdnav. Still need to re-implement seeking.
jcdutton
parents:
17
diff
changeset
|
82 |
0 | 83 typedef struct { |
84 dvd_reader_t *dvd; | |
85 ifo_handle_t *vmgi; | |
86 ifo_handle_t *vtsi; | |
87 dvd_state_t state; | |
88 int badness_counter; | |
22
3c1df0cb3aee
Start of rewrite of libdvdnav. Still need to re-implement seeking.
jcdutton
parents:
17
diff
changeset
|
89 int32_t hop_channel; |
0 | 90 } vm_t; |
91 | |
92 | |
93 /* Audio stream number */ | |
94 #define AST_REG registers.SPRM[1] | |
95 /* Subpicture stream number */ | |
96 #define SPST_REG registers.SPRM[2] | |
97 /* Angle number */ | |
98 #define AGL_REG registers.SPRM[3] | |
99 /* Title Track Number */ | |
100 #define TTN_REG registers.SPRM[4] | |
101 /* VTS Title Track Number */ | |
102 #define VTS_TTN_REG registers.SPRM[5] | |
103 /* PGC Number for this Title Track */ | |
104 #define TT_PGCN_REG registers.SPRM[6] | |
105 /* Current Part of Title (PTT) number for (One_Sequential_PGC_Title) */ | |
106 #define PTTN_REG registers.SPRM[7] | |
107 /* Highlighted Button Number (btn nr 1 == value 1024) */ | |
108 #define HL_BTNN_REG registers.SPRM[8] | |
109 /* Parental Level */ | |
110 #define PTL_REG registers.SPRM[13] | |
111 | |
112 /* Initialisation & destruction */ | |
113 vm_t* vm_new_vm(); | |
6 | 114 void vm_free_vm(vm_t *vm); |
0 | 115 |
116 /* IFO access */ | |
6 | 117 ifo_handle_t *vm_get_vmgi(vm_t *vm); |
118 ifo_handle_t *vm_get_vtsi(vm_t *vm); | |
0 | 119 |
120 /* Reader Access */ | |
6 | 121 dvd_reader_t *vm_get_dvd_reader(vm_t *vm); |
0 | 122 |
123 /* Jumping */ | |
6 | 124 int vm_start_title(vm_t *vm, int tt); |
125 int vm_jump_prog(vm_t *vm, int pr); | |
0 | 126 |
127 /* Other calls */ | |
17 | 128 int vm_reset(vm_t *vm, char *dvdroot); /* , register_t regs); */ |
6 | 129 int vm_start(vm_t *vm); |
22
3c1df0cb3aee
Start of rewrite of libdvdnav. Still need to re-implement seeking.
jcdutton
parents:
17
diff
changeset
|
130 int vm_position_get(vm_t *vm, vm_position_t *position); |
3c1df0cb3aee
Start of rewrite of libdvdnav. Still need to re-implement seeking.
jcdutton
parents:
17
diff
changeset
|
131 int vm_position_print(vm_t *vm, vm_position_t *position); |
6 | 132 int vm_eval_cmd(vm_t *vm, vm_cmd_t *cmd); |
133 int vm_get_next_cell(vm_t *vm); | |
134 int vm_menu_call(vm_t *vm, DVDMenuID_t menuid, int block); | |
135 int vm_resume(vm_t *vm); | |
136 int vm_go_up(vm_t *vm); | |
137 int vm_top_pg(vm_t *vm); | |
138 int vm_next_pg(vm_t *vm); | |
139 int vm_prev_pg(vm_t *vm); | |
140 int vm_get_audio_stream(vm_t *vm, int audioN); | |
141 int vm_get_audio_active_stream(vm_t *vm); | |
142 int vm_get_subp_stream(vm_t *vm, int subpN); | |
143 int vm_get_subp_active_stream(vm_t *vm); | |
144 void vm_get_angle_info(vm_t *vm, int *num_avail, int *current); | |
145 void vm_get_audio_info(vm_t *vm, int *num_avail, int *current); | |
146 void vm_get_subp_info(vm_t *vm, int *num_avail, int *current); | |
147 subp_attr_t vm_get_subp_attr(vm_t *vm, int streamN); | |
148 audio_attr_t vm_get_audio_attr(vm_t *vm, int streamN); | |
149 void vm_get_video_res(vm_t *vm, int *width, int *height); | |
25
df024077cbc1
Why rewrite vm function, use it instead (this remark is for me, of course ;-) ).
f1rmb
parents:
22
diff
changeset
|
150 int vm_get_video_aspect(vm_t *vm); |
0 | 151 |
152 #endif /* VM_HV_INCLUDED */ | |
153 |