[cosmetics] update date in GPL header
[vuplus_xbmc] / xbmc / cores / dvdplayer / DVDInputStreams / DllDvdNav.h
1 #pragma once
2
3 /*
4  *      Copyright (C) 2005-2013 Team XBMC
5  *      http://www.xbmc.org
6  *
7  *  This Program is free software; you can redistribute it and/or modify
8  *  it under the terms of the GNU General Public License as published by
9  *  the Free Software Foundation; either version 2, or (at your option)
10  *  any later version.
11  *
12  *  This Program is distributed in the hope that it will be useful,
13  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  *  GNU General Public License for more details.
16  *
17  *  You should have received a copy of the GNU General Public License
18  *  along with XBMC; see the file COPYING.  If not, see
19  *  <http://www.gnu.org/licenses/>.
20  *
21  */
22
23 extern "C" {
24 #define DVDNAV_COMPILE
25  #include <stdint.h>
26
27  #include "dvdnav/dvdnav.h"
28
29  #ifndef WIN32
30  #define WIN32
31  #endif // WIN32
32
33  #ifndef HAVE_CONFIG_H
34  #define HAVE_CONFIG_H
35  #endif
36
37  #include "dvdnav/dvdnav_internal.h"
38  #include "dvdnav/vm.h"
39  #include "dvdnav/dvd_types.h"
40
41  #ifdef WIN32 // WIN32INCLUDES
42  #undef HAVE_CONFIG_H
43  #endif
44 }
45 #include "DynamicDll.h"
46
47 class DllDvdNavInterface
48 {
49 public:
50   virtual ~DllDvdNavInterface() {}
51   virtual dvdnav_status_t dvdnav_open(dvdnav_t **dest, const char *path)=0;
52   virtual dvdnav_status_t dvdnav_close(dvdnav_t *self)=0;
53   virtual dvdnav_status_t dvdnav_reset(dvdnav_t *self)=0;
54   virtual const char* dvdnav_err_to_string(dvdnav_t *self)=0;
55   virtual dvdnav_status_t dvdnav_set_readahead_flag(dvdnav_t *self, int32_t read_ahead_flag)=0;
56   virtual dvdnav_status_t dvdnav_set_PGC_positioning_flag(dvdnav_t *self, int32_t pgc_based_flag)=0;
57   virtual dvdnav_status_t dvdnav_get_next_cache_block(dvdnav_t *self, uint8_t **buf, int32_t *event, int32_t *len)=0;
58   virtual dvdnav_status_t dvdnav_free_cache_block(dvdnav_t *self, unsigned char *buf)=0;
59   virtual dvdnav_status_t dvdnav_still_skip(dvdnav_t *self)=0;
60   virtual dvdnav_status_t dvdnav_wait_skip(dvdnav_t *self)=0;
61   virtual dvdnav_status_t dvdnav_stop(dvdnav_t *self)=0;
62   virtual dvdnav_status_t dvdnav_button_select(dvdnav_t *self, pci_t *pci, int32_t button)=0;
63   virtual dvdnav_status_t dvdnav_button_activate(dvdnav_t *self, pci_t *pci)=0;
64   virtual dvdnav_status_t dvdnav_upper_button_select(dvdnav_t *self, pci_t *pci)=0;
65   virtual dvdnav_status_t dvdnav_lower_button_select(dvdnav_t *self, pci_t *pci)=0;
66   virtual dvdnav_status_t dvdnav_right_button_select(dvdnav_t *self, pci_t *pci)=0;
67   virtual dvdnav_status_t dvdnav_left_button_select(dvdnav_t *self, pci_t *pci)=0;
68   virtual dvdnav_status_t dvdnav_sector_search(dvdnav_t *self, uint64_t offset, int32_t origin)=0;
69   virtual pci_t* dvdnav_get_current_nav_pci(dvdnav_t *self)=0;
70   virtual dsi_t* dvdnav_get_current_nav_dsi(dvdnav_t *self)=0;
71   virtual dvdnav_status_t dvdnav_get_position(dvdnav_t *self, uint32_t *pos, uint32_t *len)=0;
72   virtual dvdnav_status_t dvdnav_current_title_info(dvdnav_t *self, int32_t *title, int32_t *part)=0;
73   virtual dvdnav_status_t dvdnav_spu_language_select(dvdnav_t *self, char *code)=0;
74   virtual dvdnav_status_t dvdnav_audio_language_select(dvdnav_t *self, char *code)=0;
75   virtual dvdnav_status_t dvdnav_menu_language_select(dvdnav_t *self, char *code)=0;
76   virtual int8_t dvdnav_is_domain_vts(dvdnav_t *self)=0;
77   virtual int8_t dvdnav_get_active_spu_stream(dvdnav_t *self)=0;
78   virtual int8_t dvdnav_get_spu_logical_stream(dvdnav_t *self, uint8_t subp_num)=0;
79   virtual uint16_t dvdnav_spu_stream_to_lang(dvdnav_t *self, uint8_t stream)=0;
80   virtual dvdnav_status_t dvdnav_get_current_highlight(dvdnav_t *self, int32_t *button)=0;
81   virtual dvdnav_status_t dvdnav_menu_call(dvdnav_t *self, DVDMenuID_t menu)=0;
82   virtual dvdnav_status_t dvdnav_prev_pg_search(dvdnav_t *self)=0;
83   virtual dvdnav_status_t dvdnav_next_pg_search(dvdnav_t *self)=0;
84   virtual dvdnav_status_t dvdnav_get_highlight_area(pci_t *nav_pci , int32_t button, int32_t mode, dvdnav_highlight_area_t *highlight)=0;
85   virtual dvdnav_status_t dvdnav_go_up(dvdnav_t *self)=0;
86   virtual int8_t dvdnav_get_active_audio_stream(dvdnav_t *self)=0;
87   virtual uint16_t dvdnav_audio_stream_to_lang(dvdnav_t *self, uint8_t stream)=0;
88   virtual vm_t* dvdnav_get_vm(dvdnav_t *self)=0;
89   virtual int dvdnav_get_nr_of_subtitle_streams(dvdnav_t *self)=0;
90   virtual int dvdnav_get_nr_of_audio_streams(dvdnav_t *self)=0;
91   virtual int dvdnav_get_button_info(dvdnav_t* self, int alpha[2][4], int color[2][4])=0;
92   virtual int8_t dvdnav_get_audio_logical_stream(dvdnav_t *self, uint8_t audio_num)=0;
93   virtual dvdnav_status_t dvdnav_set_region_mask(dvdnav_t *self, int32_t region_mask)=0;
94   virtual uint8_t dvdnav_get_video_aspect(dvdnav_t *self)=0;
95   virtual uint8_t dvdnav_get_video_scale_permission(dvdnav_t *self)=0;
96   virtual dvdnav_status_t dvdnav_get_number_of_titles(dvdnav_t *self, int32_t *titles)=0;
97   virtual dvdnav_status_t dvdnav_get_number_of_parts(dvdnav_t *self, int32_t title, int32_t *parts)=0;
98   virtual dvdnav_status_t dvdnav_title_play(dvdnav_t *self, int32_t title)=0;
99   virtual dvdnav_status_t dvdnav_part_play(dvdnav_t *self, int32_t title, int32_t part)=0;
100   virtual dvdnav_status_t dvdnav_subpicture_change(dvdnav_t *self, int32_t subpicture)=0;
101   virtual dvdnav_status_t dvdnav_audio_change(dvdnav_t *self, int32_t audio)=0;
102   virtual dvdnav_status_t dvdnav_get_audio_info(dvdnav_t * self, int32_t streamid, audio_attr_t* audio_attributes)=0;
103   virtual dvdnav_status_t dvdnav_get_stitle_info(dvdnav_t * self, int32_t streamid, subp_attr_t* stitle_attributes)=0;
104   virtual dvdnav_status_t dvdnav_time_search(dvdnav_t * self, uint64_t timepos)=0;
105   virtual int64_t dvdnav_convert_time(dvd_time_t *time)=0;
106   virtual dvdnav_status_t dvdnav_get_state(dvdnav_t *self, dvd_state_t *save_state)=0;
107   virtual dvdnav_status_t dvdnav_set_state(dvdnav_t *self, dvd_state_t *save_state)=0;
108   virtual dvdnav_status_t dvdnav_get_angle_info(dvdnav_t *self, int32_t *current_angle,int32_t *number_of_angles)=0;
109   virtual dvdnav_status_t dvdnav_mouse_activate(dvdnav_t *self, pci_t *pci, int32_t x, int32_t y)=0;
110   virtual dvdnav_status_t dvdnav_mouse_select(dvdnav_t *self, pci_t *pci, int32_t x, int32_t y)=0;
111 };
112
113 #if (defined USE_STATIC_LIBDVDNAV)
114 #error "Use of static libdvdnav is currently unsupported."
115
116 class DllDvdNav : public DllDynamic, DllDvdNavInterface
117 {
118 public:
119     virtual ~DllDvdNav() {}
120     virtual dvdnav_status_t dvdnav_open(dvdnav_t **dest, const char *path)
121         { return ::dvdnav_open(dest, path); }
122     virtual dvdnav_status_t dvdnav_close(dvdnav_t *self)
123         { return ::dvdnav_close(self); }
124     virtual dvdnav_status_t dvdnav_reset(dvdnav_t *self)
125         { return ::dvdnav_reset(self); }
126     virtual const char* dvdnav_err_to_string(dvdnav_t *self)
127         { return ::dvdnav_err_to_string(self); }
128     virtual dvdnav_status_t dvdnav_set_readahead_flag(dvdnav_t *self, int32_t read_ahead_flag)
129         { return ::dvdnav_set_readahead_flag(self, read_ahead_flag); }
130     virtual dvdnav_status_t dvdnav_set_PGC_positioning_flag(dvdnav_t *self, int32_t pgc_based_flag)
131         { return ::dvdnav_set_PGC_positioning_flag(self, pgc_based_flag); }
132     virtual dvdnav_status_t dvdnav_get_next_cache_block(dvdnav_t *self, uint8_t **buf, int32_t *event, int32_t *len)
133         { return ::dvdnav_get_next_cache_block(self, buf, event, len); }
134     virtual dvdnav_status_t dvdnav_free_cache_block(dvdnav_t *self, unsigned char *buf)
135         { return ::dvdnav_free_cache_block(self, buf); }
136     virtual dvdnav_status_t dvdnav_still_skip(dvdnav_t *self)
137         { return ::dvdnav_still_skip(self); }
138     virtual dvdnav_status_t dvdnav_wait_skip(dvdnav_t *self)
139         { return ::dvdnav_wait_skip(self); }
140     virtual dvdnav_status_t dvdnav_stop(dvdnav_t *self)
141         { return ::dvdnav_stop(self); }
142     virtual dvdnav_status_t dvdnav_button_select(dvdnav_t *self, pci_t *pci, int32_t button)
143         { return ::dvdnav_button_select(self, pci, button); }
144     virtual dvdnav_status_t dvdnav_button_activate(dvdnav_t *self, pci_t *pci)
145         { return ::dvdnav_button_activate(self, pci); }
146     virtual dvdnav_status_t dvdnav_upper_button_select(dvdnav_t *self, pci_t *pci)
147         { return ::dvdnav_upper_button_select(self, pci); }
148     virtual dvdnav_status_t dvdnav_lower_button_select(dvdnav_t *self, pci_t *pci)
149         { return ::dvdnav_lower_button_select(self, pci); }
150     virtual dvdnav_status_t dvdnav_right_button_select(dvdnav_t *self, pci_t *pci)
151         { return ::dvdnav_right_button_select(self, pci); }
152     virtual dvdnav_status_t dvdnav_left_button_select(dvdnav_t *self, pci_t *pci)
153         { return ::dvdnav_left_button_select(self, pci); }
154     virtual dvdnav_status_t dvdnav_sector_search(dvdnav_t *self, uint64_t offset, int32_t origin)
155         { return ::dvdnav_sector_search(self, offset, origin); }
156     virtual pci_t* dvdnav_get_current_nav_pci(dvdnav_t *self)
157         { return ::dvdnav_get_current_nav_pci(self); }
158     virtual dsi_t* dvdnav_get_current_nav_dsi(dvdnav_t *self)
159         { return ::dvdnav_get_current_nav_dsi(self); }
160     virtual dvdnav_status_t dvdnav_get_position(dvdnav_t *self, uint32_t *pos, uint32_t *len)
161         { return ::dvdnav_get_position(self, pos, len); }
162     virtual dvdnav_status_t dvdnav_current_title_info(dvdnav_t *self, int32_t *title, int32_t *part)
163         { return ::dvdnav_current_title_info(self, title, part); }
164     virtual dvdnav_status_t dvdnav_spu_language_select(dvdnav_t *self, char *code)
165         { return ::dvdnav_spu_language_select(self, code); }
166     virtual dvdnav_status_t dvdnav_audio_language_select(dvdnav_t *self, char *code)
167         { return ::dvdnav_audio_language_select(self, code); }
168     virtual dvdnav_status_t dvdnav_menu_language_select(dvdnav_t *self, char *code)
169         { return ::dvdnav_menu_language_select(self, code); }
170     virtual int8_t dvdnav_is_domain_vts(dvdnav_t *self)
171         { return ::dvdnav_is_domain_vts(self); }
172     virtual int8_t dvdnav_get_active_spu_stream(dvdnav_t *self)
173         { return ::dvdnav_get_active_spu_stream(self); }
174     virtual int8_t dvdnav_get_spu_logical_stream(dvdnav_t *self, uint8_t subp_num)
175         { return ::dvdnav_get_spu_logical_stream(self, subp_num); }
176     virtual uint16_t dvdnav_spu_stream_to_lang(dvdnav_t *self, uint8_t stream)
177         { return ::dvdnav_spu_stream_to_lang(self, stream); }
178     virtual dvdnav_status_t dvdnav_get_current_highlight(dvdnav_t *self, int32_t *button)
179         { return ::dvdnav_get_current_highlight(self, button); }
180     virtual dvdnav_status_t dvdnav_menu_call(dvdnav_t *self, DVDMenuID_t menu)
181         { return ::dvdnav_menu_call(self, menu); }
182     virtual dvdnav_status_t dvdnav_prev_pg_search(dvdnav_t *self)
183         { return ::dvdnav_prev_pg_search(self); }
184     virtual dvdnav_status_t dvdnav_next_pg_search(dvdnav_t *self)
185         { return ::dvdnav_next_pg_search(self); }
186     virtual dvdnav_status_t dvdnav_get_highlight_area(pci_t *nav_pci , int32_t button, int32_t mode, dvdnav_highlight_area_t *highlight)
187         { return ::dvdnav_get_highlight_area(nav_pci, button, mode, highlight); }
188     virtual dvdnav_status_t dvdnav_go_up(dvdnav_t *self)
189         { return ::dvdnav_go_up(self); }
190     virtual int8_t dvdnav_get_active_audio_stream(dvdnav_t *self)
191         { return ::dvdnav_get_active_audio_stream(self); }
192     virtual uint16_t dvdnav_audio_stream_to_lang(dvdnav_t *self, uint8_t stream)
193         { return ::dvdnav_audio_stream_to_lang(self, stream); }
194     virtual vm_t* dvdnav_get_vm(dvdnav_t *self)
195         { return ::dvdnav_get_vm(self); }
196     virtual int dvdnav_get_nr_of_subtitle_streams(dvdnav_t *self)
197         { return ::dvdnav_get_nr_of_subtitle_streams(self); }
198     virtual int dvdnav_get_nr_of_audio_streams(dvdnav_t *self)
199         { return ::dvdnav_get_nr_of_audio_streams(self); }
200     virtual int dvdnav_get_button_info(dvdnav_t* self, int alpha[2][4], int color[2][4])
201         { return ::dvdnav_get_button_info(self, alpha, color); }
202     virtual int8_t dvdnav_get_audio_logical_stream(dvdnav_t *self, uint8_t audio_num)
203         { return ::dvdnav_get_audio_logical_stream(self, audio_num); }
204     virtual dvdnav_status_t dvdnav_set_region_mask(dvdnav_t *self, int32_t region_mask)
205         { return ::dvdnav_set_region_mask(self, region_mask); }
206     virtual uint8_t dvdnav_get_video_aspect(dvdnav_t *self)
207         { return ::dvdnav_get_video_aspect(self); }
208     virtual uint8_t dvdnav_get_video_scale_permission(dvdnav_t *self)
209         { return ::dvdnav_get_video_scale_permission(self); }
210     virtual dvdnav_status_t dvdnav_get_number_of_titles(dvdnav_t *self, int32_t *titles)
211         { return ::dvdnav_get_number_of_titles(self, titles); }
212     virtual dvdnav_status_t dvdnav_get_number_of_parts(dvdnav_t *self, int32_t title, int32_t *parts)
213         { return ::dvdnav_get_number_of_parts(self, title, parts); }
214     virtual dvdnav_status_t dvdnav_title_play(dvdnav_t *self, int32_t title)
215         { return ::dvdnav_title_play(self, title); }
216     virtual dvdnav_status_t dvdnav_part_play(dvdnav_t *self, int32_t title, int32_t part)
217         { return ::dvdnav_part_play(self, title, part); }
218     virtual dvdnav_status_t dvdnav_subpicture_change(dvdnav_t *self, int32_t subpicture)
219         { return ::dvdnav_subpicture_change(self, subpicture); }
220     virtual dvdnav_status_t dvdnav_audio_change(dvdnav_t *self, int32_t audio)
221         { return ::dvdnav_audio_change(self, audio); }
222     virtual dvdnav_status_t dvdnav_get_audio_info(dvdnav_t * self, int32_t streamid, audio_attr_t* audio_attributes)
223         { return ::dvdnav_get_audio_info(self, streamid, audio_attributes); }
224     virtual dvdnav_status_t dvdnav_get_stitle_info(dvdnav_t * self, int32_t streamid, subp_attr_t* stitle_attributes)
225         { return ::dvdnav_get_stitle_info(self, streamid, stitle_attributes); }
226     virtual dvdnav_status_t dvdnav_time_search(dvdnav_t * self, uint64_t timepos)
227         { return ::dvdnav_time_search(self, timepos); }
228     virtual int64_t dvdnav_convert_time(dvd_time_t *time)
229         { return ::dvdnav_convert_time(time); }
230     virtual dvdnav_status_t dvdnav_get_state(dvdnav_t *self, dvd_state_t *save_state)
231         { return ::dvdnav_get_state(self, save_state); }
232     virtual dvdnav_status_t dvdnav_set_state(dvdnav_t *self, dvd_state_t *save_state)
233         { return ::dvdnav_set_state(self, save_state); }
234     virtual dvdnav_status_t dvdnav_get_angle_info(dvdnav_t *self, int32_t *current_angle,int32_t *number_of_angles)
235         { return ::dvdnav_get_angle_info(self, current_angle, number_of_angles); }
236     virtual dvdnav_status_t dvdnav_mouse_activate(dvdnav_t *self, pci_t *pci, int32_t x, int32_t y)
237         { return ::dvdnav_mouse_activate(self, pci, x, y); }
238     virtual dvdnav_status_t dvdnav_mouse_select(dvdnav_t *self, pci_t *pci, int32_t x, int32_t y)
239         { return ::dvdnav_mouse_select(self, pci, x, y); }
240
241     // DLL faking.
242     virtual bool ResolveExports() { return true; }
243     virtual bool Load() { return true; }
244     virtual void Unload() {}
245 };
246
247 #else
248
249 class DllDvdNav : public DllDynamic, DllDvdNavInterface
250 {
251   DECLARE_DLL_WRAPPER(DllDvdNav, DLL_PATH_LIBDVDNAV)
252
253   DEFINE_METHOD2(dvdnav_status_t, dvdnav_open, (dvdnav_t **p1, const char *p2))
254   DEFINE_METHOD1(dvdnav_status_t, dvdnav_close, (dvdnav_t *p1))
255   DEFINE_METHOD1(dvdnav_status_t, dvdnav_reset, (dvdnav_t *p1))
256   DEFINE_METHOD1(const char*, dvdnav_err_to_string, (dvdnav_t *p1))
257   DEFINE_METHOD2(dvdnav_status_t, dvdnav_set_readahead_flag, (dvdnav_t *p1, int32_t p2))
258   DEFINE_METHOD2(dvdnav_status_t, dvdnav_set_PGC_positioning_flag, (dvdnav_t *p1, int32_t p2))
259   DEFINE_METHOD4(dvdnav_status_t, dvdnav_get_next_cache_block, (dvdnav_t *p1, uint8_t **p2, int32_t *p3, int32_t *p4))
260   DEFINE_METHOD2(dvdnav_status_t, dvdnav_free_cache_block, (dvdnav_t *p1, unsigned char *p2))
261   DEFINE_METHOD1(dvdnav_status_t, dvdnav_still_skip, (dvdnav_t *p1))
262   DEFINE_METHOD1(dvdnav_status_t, dvdnav_wait_skip, (dvdnav_t *p1))
263   DEFINE_METHOD1(dvdnav_status_t, dvdnav_stop, (dvdnav_t *p1))
264   DEFINE_METHOD3(dvdnav_status_t, dvdnav_button_select, (dvdnav_t *p1, pci_t *p2, int32_t p3))
265   DEFINE_METHOD2(dvdnav_status_t, dvdnav_button_activate,(dvdnav_t *p1, pci_t *p2))
266   DEFINE_METHOD2(dvdnav_status_t, dvdnav_upper_button_select, (dvdnav_t *p1, pci_t *p2))
267   DEFINE_METHOD2(dvdnav_status_t, dvdnav_lower_button_select, (dvdnav_t *p1, pci_t *p2))
268   DEFINE_METHOD2(dvdnav_status_t, dvdnav_right_button_select, (dvdnav_t *p1, pci_t *p2))
269   DEFINE_METHOD2(dvdnav_status_t, dvdnav_left_button_select, (dvdnav_t *p1, pci_t *p2))
270   DEFINE_METHOD3(dvdnav_status_t, dvdnav_sector_search, (dvdnav_t *p1, uint64_t p2, int32_t p3))
271   DEFINE_METHOD1(pci_t*, dvdnav_get_current_nav_pci, (dvdnav_t *p1))
272   DEFINE_METHOD1(dsi_t*, dvdnav_get_current_nav_dsi, (dvdnav_t *p1))
273   DEFINE_METHOD3(dvdnav_status_t, dvdnav_get_position, (dvdnav_t *p1, uint32_t *p2, uint32_t *p3))
274   DEFINE_METHOD3(dvdnav_status_t, dvdnav_current_title_info, (dvdnav_t *p1, int32_t *p2, int32_t *p3))
275   DEFINE_METHOD2(dvdnav_status_t, dvdnav_spu_language_select, (dvdnav_t *p1, char *p2))
276   DEFINE_METHOD2(dvdnav_status_t, dvdnav_audio_language_select, (dvdnav_t *p1, char *p2))
277   DEFINE_METHOD2(dvdnav_status_t, dvdnav_menu_language_select, (dvdnav_t *p1, char *p2))
278   DEFINE_METHOD1(int8_t, dvdnav_is_domain_vts, (dvdnav_t *p1))
279   DEFINE_METHOD1(int8_t, dvdnav_get_active_spu_stream, (dvdnav_t *p1))
280   DEFINE_METHOD2(int8_t, dvdnav_get_spu_logical_stream, (dvdnav_t *p1, uint8_t p2))
281   DEFINE_METHOD2(uint16_t, dvdnav_spu_stream_to_lang, (dvdnav_t *p1, uint8_t p2))
282   DEFINE_METHOD2(dvdnav_status_t, dvdnav_get_current_highlight, (dvdnav_t *p1, int32_t *p2))
283   DEFINE_METHOD2(dvdnav_status_t, dvdnav_menu_call, (dvdnav_t *p1, DVDMenuID_t p2))
284   DEFINE_METHOD1(dvdnav_status_t, dvdnav_prev_pg_search, (dvdnav_t *p1))
285   DEFINE_METHOD1(dvdnav_status_t, dvdnav_next_pg_search, (dvdnav_t *p1))
286   DEFINE_METHOD4(dvdnav_status_t, dvdnav_get_highlight_area, (pci_t *p1, int32_t p2, int32_t p3, dvdnav_highlight_area_t *p4))
287   DEFINE_METHOD1(dvdnav_status_t, dvdnav_go_up, (dvdnav_t *p1))
288   DEFINE_METHOD1(int8_t, dvdnav_get_active_audio_stream, (dvdnav_t *p1))
289   DEFINE_METHOD2(uint16_t, dvdnav_audio_stream_to_lang, (dvdnav_t *p1, uint8_t p2))
290   DEFINE_METHOD1(vm_t*, dvdnav_get_vm, (dvdnav_t *p1))
291   DEFINE_METHOD1(int, dvdnav_get_nr_of_subtitle_streams, (dvdnav_t *p1))
292   DEFINE_METHOD1(int, dvdnav_get_nr_of_audio_streams, (dvdnav_t *p1))
293   DEFINE_METHOD3(int, dvdnav_get_button_info, (dvdnav_t* p1, int p2[2][4], int p3[2][4]))
294   DEFINE_METHOD2(int8_t, dvdnav_get_audio_logical_stream, (dvdnav_t *p1, uint8_t p2))
295   DEFINE_METHOD2(dvdnav_status_t, dvdnav_set_region_mask, (dvdnav_t *p1, int32_t p2))
296   DEFINE_METHOD1(uint8_t, dvdnav_get_video_aspect, (dvdnav_t *p1))
297   DEFINE_METHOD1(uint8_t, dvdnav_get_video_scale_permission, (dvdnav_t *p1))
298   DEFINE_METHOD2(dvdnav_status_t, dvdnav_get_number_of_titles, (dvdnav_t *p1, int32_t *p2))
299   DEFINE_METHOD3(dvdnav_status_t, dvdnav_get_number_of_parts, (dvdnav_t *p1, int32_t p2, int32_t *p3))
300   DEFINE_METHOD2(dvdnav_status_t, dvdnav_title_play, (dvdnav_t *p1, int32_t p2))
301   DEFINE_METHOD3(dvdnav_status_t, dvdnav_part_play, (dvdnav_t *p1, int32_t p2, int32_t p3))
302   DEFINE_METHOD2(dvdnav_status_t, dvdnav_subpicture_change, (dvdnav_t *p1, int32_t p2))
303   DEFINE_METHOD2(dvdnav_status_t, dvdnav_audio_change, (dvdnav_t *p1, int32_t p2))
304   DEFINE_METHOD3(dvdnav_status_t, dvdnav_get_audio_info, (dvdnav_t * p1, int32_t p2, audio_attr_t* p3))
305   DEFINE_METHOD3(dvdnav_status_t, dvdnav_get_stitle_info, (dvdnav_t * p1, int32_t p2, subp_attr_t* p3))
306   DEFINE_METHOD2(dvdnav_status_t, dvdnav_time_search, (dvdnav_t * p1, uint64_t p2))
307   DEFINE_METHOD1(int64_t, dvdnav_convert_time, (dvd_time_t *p1))
308   DEFINE_METHOD2(dvdnav_status_t, dvdnav_get_state, (dvdnav_t *p1, dvd_state_t *p2))
309   DEFINE_METHOD2(dvdnav_status_t, dvdnav_set_state, (dvdnav_t *p1, dvd_state_t *p2))
310   DEFINE_METHOD3(dvdnav_status_t, dvdnav_get_angle_info, (dvdnav_t *p1, int32_t *p2,int32_t *p3))
311   DEFINE_METHOD4(dvdnav_status_t, dvdnav_mouse_activate, (dvdnav_t *p1, pci_t *p2, int32_t p3, int32_t p4))
312   DEFINE_METHOD4(dvdnav_status_t, dvdnav_mouse_select, (dvdnav_t *p1, pci_t *p2, int32_t p3, int32_t p4))
313   BEGIN_METHOD_RESOLVE()
314     RESOLVE_METHOD(dvdnav_open)
315     RESOLVE_METHOD(dvdnav_close)
316     RESOLVE_METHOD(dvdnav_reset)
317     RESOLVE_METHOD(dvdnav_err_to_string)
318     RESOLVE_METHOD(dvdnav_set_readahead_flag)
319     RESOLVE_METHOD(dvdnav_set_PGC_positioning_flag)
320     RESOLVE_METHOD(dvdnav_get_next_cache_block)
321     RESOLVE_METHOD(dvdnav_free_cache_block)
322     RESOLVE_METHOD(dvdnav_still_skip)
323     RESOLVE_METHOD(dvdnav_wait_skip)
324     RESOLVE_METHOD(dvdnav_stop)
325     RESOLVE_METHOD(dvdnav_button_select)
326     RESOLVE_METHOD(dvdnav_button_activate)
327     RESOLVE_METHOD(dvdnav_upper_button_select)
328     RESOLVE_METHOD(dvdnav_lower_button_select)
329     RESOLVE_METHOD(dvdnav_right_button_select)
330     RESOLVE_METHOD(dvdnav_left_button_select)
331     RESOLVE_METHOD(dvdnav_sector_search)
332     RESOLVE_METHOD(dvdnav_get_current_nav_pci)
333     RESOLVE_METHOD(dvdnav_get_current_nav_dsi)
334     RESOLVE_METHOD(dvdnav_get_position)
335     RESOLVE_METHOD(dvdnav_current_title_info)
336     RESOLVE_METHOD(dvdnav_spu_language_select)
337     RESOLVE_METHOD(dvdnav_audio_language_select)
338     RESOLVE_METHOD(dvdnav_menu_language_select)
339     RESOLVE_METHOD(dvdnav_is_domain_vts)
340     RESOLVE_METHOD(dvdnav_get_active_spu_stream)
341     RESOLVE_METHOD(dvdnav_get_spu_logical_stream)
342     RESOLVE_METHOD(dvdnav_spu_stream_to_lang)
343     RESOLVE_METHOD(dvdnav_get_current_highlight)
344     RESOLVE_METHOD(dvdnav_menu_call)
345     RESOLVE_METHOD(dvdnav_prev_pg_search)
346     RESOLVE_METHOD(dvdnav_next_pg_search)
347     RESOLVE_METHOD(dvdnav_get_highlight_area)
348     RESOLVE_METHOD(dvdnav_go_up)
349     RESOLVE_METHOD(dvdnav_get_active_audio_stream)
350     RESOLVE_METHOD(dvdnav_audio_stream_to_lang)
351     RESOLVE_METHOD(dvdnav_get_vm)
352     RESOLVE_METHOD(dvdnav_get_nr_of_subtitle_streams)
353     RESOLVE_METHOD(dvdnav_get_nr_of_audio_streams)
354     RESOLVE_METHOD(dvdnav_get_button_info)
355     RESOLVE_METHOD(dvdnav_get_audio_logical_stream)
356     RESOLVE_METHOD(dvdnav_set_region_mask)
357     RESOLVE_METHOD(dvdnav_get_video_aspect)
358     RESOLVE_METHOD(dvdnav_get_video_scale_permission)
359     RESOLVE_METHOD(dvdnav_get_number_of_titles)
360     RESOLVE_METHOD(dvdnav_get_number_of_parts)
361     RESOLVE_METHOD(dvdnav_title_play)
362     RESOLVE_METHOD(dvdnav_part_play)
363     RESOLVE_METHOD(dvdnav_subpicture_change)
364     RESOLVE_METHOD(dvdnav_audio_change)
365     RESOLVE_METHOD(dvdnav_get_audio_info)
366     RESOLVE_METHOD(dvdnav_get_stitle_info)
367     RESOLVE_METHOD(dvdnav_time_search)
368     RESOLVE_METHOD(dvdnav_convert_time)
369     RESOLVE_METHOD(dvdnav_get_state)
370     RESOLVE_METHOD(dvdnav_set_state)
371     RESOLVE_METHOD(dvdnav_get_angle_info)
372     RESOLVE_METHOD(dvdnav_mouse_activate)
373     RESOLVE_METHOD(dvdnav_mouse_select)
374 END_METHOD_RESOLVE()
375 };
376
377 #endif