PageRenderTime 77ms CodeModel.GetById 2ms app.highlight 70ms RepoModel.GetById 1ms app.codeStats 1ms

/xbmc/cores/dvdplayer/DVDInputStreams/DllDvdNav.h

http://github.com/xbmc/xbmc
C++ Header | 389 lines | 354 code | 15 blank | 20 comment | 0 complexity | c9beea6b9a78ef35babdb93f380273a6 MD5 | raw file
  1#pragma once
  2
  3/*
  4 *      Copyright (C) 2005-2013 Team XBMC
  5 *      http://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
 23extern "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
 47class DllDvdNavInterface
 48{
 49public:
 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  virtual dvdnav_status_t dvdnav_get_title_string(dvdnav_t *self, const char **title_str)=0;
112  virtual dvdnav_status_t dvdnav_get_serial_string(dvdnav_t *self, const char **serial_str)=0;
113};
114
115#if (defined USE_STATIC_LIBDVDNAV)
116#error "Use of static libdvdnav is currently unsupported."
117
118class DllDvdNav : public DllDynamic, DllDvdNavInterface
119{
120public:
121    virtual ~DllDvdNav() {}
122    virtual dvdnav_status_t dvdnav_open(dvdnav_t **dest, const char *path)
123        { return ::dvdnav_open(dest, path); }
124    virtual dvdnav_status_t dvdnav_close(dvdnav_t *self)
125        { return ::dvdnav_close(self); }
126    virtual dvdnav_status_t dvdnav_reset(dvdnav_t *self)
127        { return ::dvdnav_reset(self); }
128    virtual const char* dvdnav_err_to_string(dvdnav_t *self)
129        { return ::dvdnav_err_to_string(self); }
130    virtual dvdnav_status_t dvdnav_set_readahead_flag(dvdnav_t *self, int32_t read_ahead_flag)
131        { return ::dvdnav_set_readahead_flag(self, read_ahead_flag); }
132    virtual dvdnav_status_t dvdnav_set_PGC_positioning_flag(dvdnav_t *self, int32_t pgc_based_flag)
133        { return ::dvdnav_set_PGC_positioning_flag(self, pgc_based_flag); }
134    virtual dvdnav_status_t dvdnav_get_next_cache_block(dvdnav_t *self, uint8_t **buf, int32_t *event, int32_t *len)
135        { return ::dvdnav_get_next_cache_block(self, buf, event, len); }
136    virtual dvdnav_status_t dvdnav_free_cache_block(dvdnav_t *self, unsigned char *buf)
137        { return ::dvdnav_free_cache_block(self, buf); }
138    virtual dvdnav_status_t dvdnav_still_skip(dvdnav_t *self)
139        { return ::dvdnav_still_skip(self); }
140    virtual dvdnav_status_t dvdnav_wait_skip(dvdnav_t *self)
141        { return ::dvdnav_wait_skip(self); }
142    virtual dvdnav_status_t dvdnav_stop(dvdnav_t *self)
143        { return ::dvdnav_stop(self); }
144    virtual dvdnav_status_t dvdnav_button_select(dvdnav_t *self, pci_t *pci, int32_t button)
145        { return ::dvdnav_button_select(self, pci, button); }
146    virtual dvdnav_status_t dvdnav_button_activate(dvdnav_t *self, pci_t *pci)
147        { return ::dvdnav_button_activate(self, pci); }
148    virtual dvdnav_status_t dvdnav_upper_button_select(dvdnav_t *self, pci_t *pci)
149        { return ::dvdnav_upper_button_select(self, pci); }
150    virtual dvdnav_status_t dvdnav_lower_button_select(dvdnav_t *self, pci_t *pci)
151        { return ::dvdnav_lower_button_select(self, pci); }
152    virtual dvdnav_status_t dvdnav_right_button_select(dvdnav_t *self, pci_t *pci)
153        { return ::dvdnav_right_button_select(self, pci); }
154    virtual dvdnav_status_t dvdnav_left_button_select(dvdnav_t *self, pci_t *pci)
155        { return ::dvdnav_left_button_select(self, pci); }
156    virtual dvdnav_status_t dvdnav_sector_search(dvdnav_t *self, uint64_t offset, int32_t origin)
157        { return ::dvdnav_sector_search(self, offset, origin); }
158    virtual pci_t* dvdnav_get_current_nav_pci(dvdnav_t *self)
159        { return ::dvdnav_get_current_nav_pci(self); }
160    virtual dsi_t* dvdnav_get_current_nav_dsi(dvdnav_t *self)
161        { return ::dvdnav_get_current_nav_dsi(self); }
162    virtual dvdnav_status_t dvdnav_get_position(dvdnav_t *self, uint32_t *pos, uint32_t *len)
163        { return ::dvdnav_get_position(self, pos, len); }
164    virtual dvdnav_status_t dvdnav_current_title_info(dvdnav_t *self, int32_t *title, int32_t *part)
165        { return ::dvdnav_current_title_info(self, title, part); }
166    virtual dvdnav_status_t dvdnav_spu_language_select(dvdnav_t *self, char *code)
167        { return ::dvdnav_spu_language_select(self, code); }
168    virtual dvdnav_status_t dvdnav_audio_language_select(dvdnav_t *self, char *code)
169        { return ::dvdnav_audio_language_select(self, code); }
170    virtual dvdnav_status_t dvdnav_menu_language_select(dvdnav_t *self, char *code)
171        { return ::dvdnav_menu_language_select(self, code); }
172    virtual int8_t dvdnav_is_domain_vts(dvdnav_t *self)
173        { return ::dvdnav_is_domain_vts(self); }
174    virtual int8_t dvdnav_get_active_spu_stream(dvdnav_t *self)
175        { return ::dvdnav_get_active_spu_stream(self); }
176    virtual int8_t dvdnav_get_spu_logical_stream(dvdnav_t *self, uint8_t subp_num)
177        { return ::dvdnav_get_spu_logical_stream(self, subp_num); }
178    virtual uint16_t dvdnav_spu_stream_to_lang(dvdnav_t *self, uint8_t stream)
179        { return ::dvdnav_spu_stream_to_lang(self, stream); }
180    virtual dvdnav_status_t dvdnav_get_current_highlight(dvdnav_t *self, int32_t *button)
181        { return ::dvdnav_get_current_highlight(self, button); }
182    virtual dvdnav_status_t dvdnav_menu_call(dvdnav_t *self, DVDMenuID_t menu)
183        { return ::dvdnav_menu_call(self, menu); }
184    virtual dvdnav_status_t dvdnav_prev_pg_search(dvdnav_t *self)
185        { return ::dvdnav_prev_pg_search(self); }
186    virtual dvdnav_status_t dvdnav_next_pg_search(dvdnav_t *self)
187        { return ::dvdnav_next_pg_search(self); }
188    virtual dvdnav_status_t dvdnav_get_highlight_area(pci_t *nav_pci , int32_t button, int32_t mode, dvdnav_highlight_area_t *highlight)
189        { return ::dvdnav_get_highlight_area(nav_pci, button, mode, highlight); }
190    virtual dvdnav_status_t dvdnav_go_up(dvdnav_t *self)
191        { return ::dvdnav_go_up(self); }
192    virtual int8_t dvdnav_get_active_audio_stream(dvdnav_t *self)
193        { return ::dvdnav_get_active_audio_stream(self); }
194    virtual uint16_t dvdnav_audio_stream_to_lang(dvdnav_t *self, uint8_t stream)
195        { return ::dvdnav_audio_stream_to_lang(self, stream); }
196    virtual vm_t* dvdnav_get_vm(dvdnav_t *self)
197        { return ::dvdnav_get_vm(self); }
198    virtual int dvdnav_get_nr_of_subtitle_streams(dvdnav_t *self)
199        { return ::dvdnav_get_nr_of_subtitle_streams(self); }
200    virtual int dvdnav_get_nr_of_audio_streams(dvdnav_t *self)
201        { return ::dvdnav_get_nr_of_audio_streams(self); }
202    virtual int dvdnav_get_button_info(dvdnav_t* self, int alpha[2][4], int color[2][4])
203        { return ::dvdnav_get_button_info(self, alpha, color); }
204    virtual int8_t dvdnav_get_audio_logical_stream(dvdnav_t *self, uint8_t audio_num)
205        { return ::dvdnav_get_audio_logical_stream(self, audio_num); }
206    virtual dvdnav_status_t dvdnav_set_region_mask(dvdnav_t *self, int32_t region_mask)
207        { return ::dvdnav_set_region_mask(self, region_mask); }
208    virtual uint8_t dvdnav_get_video_aspect(dvdnav_t *self)
209        { return ::dvdnav_get_video_aspect(self); }
210    virtual uint8_t dvdnav_get_video_scale_permission(dvdnav_t *self)
211        { return ::dvdnav_get_video_scale_permission(self); }
212    virtual dvdnav_status_t dvdnav_get_number_of_titles(dvdnav_t *self, int32_t *titles)
213        { return ::dvdnav_get_number_of_titles(self, titles); }
214    virtual dvdnav_status_t dvdnav_get_number_of_parts(dvdnav_t *self, int32_t title, int32_t *parts)
215        { return ::dvdnav_get_number_of_parts(self, title, parts); }
216    virtual dvdnav_status_t dvdnav_title_play(dvdnav_t *self, int32_t title)
217        { return ::dvdnav_title_play(self, title); }
218    virtual dvdnav_status_t dvdnav_part_play(dvdnav_t *self, int32_t title, int32_t part)
219        { return ::dvdnav_part_play(self, title, part); }
220    virtual dvdnav_status_t dvdnav_subpicture_change(dvdnav_t *self, int32_t subpicture)
221        { return ::dvdnav_subpicture_change(self, subpicture); }
222    virtual dvdnav_status_t dvdnav_audio_change(dvdnav_t *self, int32_t audio)
223        { return ::dvdnav_audio_change(self, audio); }
224    virtual dvdnav_status_t dvdnav_get_audio_info(dvdnav_t * self, int32_t streamid, audio_attr_t* audio_attributes)
225        { return ::dvdnav_get_audio_info(self, streamid, audio_attributes); }
226    virtual dvdnav_status_t dvdnav_get_stitle_info(dvdnav_t * self, int32_t streamid, subp_attr_t* stitle_attributes)
227        { return ::dvdnav_get_stitle_info(self, streamid, stitle_attributes); }
228    virtual dvdnav_status_t dvdnav_time_search(dvdnav_t * self, uint64_t timepos)
229        { return ::dvdnav_time_search(self, timepos); }
230    virtual int64_t dvdnav_convert_time(dvd_time_t *time)
231        { return ::dvdnav_convert_time(time); }
232    virtual dvdnav_status_t dvdnav_get_state(dvdnav_t *self, dvd_state_t *save_state)
233        { return ::dvdnav_get_state(self, save_state); }
234    virtual dvdnav_status_t dvdnav_set_state(dvdnav_t *self, dvd_state_t *save_state)
235        { return ::dvdnav_set_state(self, save_state); }
236    virtual dvdnav_status_t dvdnav_get_angle_info(dvdnav_t *self, int32_t *current_angle,int32_t *number_of_angles)
237        { return ::dvdnav_get_angle_info(self, current_angle, number_of_angles); }
238    virtual dvdnav_status_t dvdnav_mouse_activate(dvdnav_t *self, pci_t *pci, int32_t x, int32_t y)
239        { return ::dvdnav_mouse_activate(self, pci, x, y); }
240    virtual dvdnav_status_t dvdnav_mouse_select(dvdnav_t *self, pci_t *pci, int32_t x, int32_t y)
241        { return ::dvdnav_mouse_select(self, pci, x, y); }
242    virtual dvdnav_status_t dvdnav_get_title_string(dvdnav_t *self, const char **title_str)
243        { return ::dvdnav_get_title_string(self, title_str); }
244    virtual dvdnav_status_t dvdnav_get_serial_string(dvdnav_t *self, const char **serial_str)
245        { return ::dvdnav_get_serial_string(self, serial_str); }
246
247    // DLL faking.
248    virtual bool ResolveExports() { return true; }
249    virtual bool Load() { return true; }
250    virtual void Unload() {}
251};
252
253#else
254
255class DllDvdNav : public DllDynamic, DllDvdNavInterface
256{
257  DECLARE_DLL_WRAPPER(DllDvdNav, DLL_PATH_LIBDVDNAV)
258
259  DEFINE_METHOD2(dvdnav_status_t, dvdnav_open, (dvdnav_t **p1, const char *p2))
260  DEFINE_METHOD1(dvdnav_status_t, dvdnav_close, (dvdnav_t *p1))
261  DEFINE_METHOD1(dvdnav_status_t, dvdnav_reset, (dvdnav_t *p1))
262  DEFINE_METHOD1(const char*, dvdnav_err_to_string, (dvdnav_t *p1))
263  DEFINE_METHOD2(dvdnav_status_t, dvdnav_set_readahead_flag, (dvdnav_t *p1, int32_t p2))
264  DEFINE_METHOD2(dvdnav_status_t, dvdnav_set_PGC_positioning_flag, (dvdnav_t *p1, int32_t p2))
265  DEFINE_METHOD4(dvdnav_status_t, dvdnav_get_next_cache_block, (dvdnav_t *p1, uint8_t **p2, int32_t *p3, int32_t *p4))
266  DEFINE_METHOD2(dvdnav_status_t, dvdnav_free_cache_block, (dvdnav_t *p1, unsigned char *p2))
267  DEFINE_METHOD1(dvdnav_status_t, dvdnav_still_skip, (dvdnav_t *p1))
268  DEFINE_METHOD1(dvdnav_status_t, dvdnav_wait_skip, (dvdnav_t *p1))
269  DEFINE_METHOD1(dvdnav_status_t, dvdnav_stop, (dvdnav_t *p1))
270  DEFINE_METHOD3(dvdnav_status_t, dvdnav_button_select, (dvdnav_t *p1, pci_t *p2, int32_t p3))
271  DEFINE_METHOD2(dvdnav_status_t, dvdnav_button_activate,(dvdnav_t *p1, pci_t *p2))
272  DEFINE_METHOD2(dvdnav_status_t, dvdnav_upper_button_select, (dvdnav_t *p1, pci_t *p2))
273  DEFINE_METHOD2(dvdnav_status_t, dvdnav_lower_button_select, (dvdnav_t *p1, pci_t *p2))
274  DEFINE_METHOD2(dvdnav_status_t, dvdnav_right_button_select, (dvdnav_t *p1, pci_t *p2))
275  DEFINE_METHOD2(dvdnav_status_t, dvdnav_left_button_select, (dvdnav_t *p1, pci_t *p2))
276  DEFINE_METHOD3(dvdnav_status_t, dvdnav_sector_search, (dvdnav_t *p1, uint64_t p2, int32_t p3))
277  DEFINE_METHOD1(pci_t*, dvdnav_get_current_nav_pci, (dvdnav_t *p1))
278  DEFINE_METHOD1(dsi_t*, dvdnav_get_current_nav_dsi, (dvdnav_t *p1))
279  DEFINE_METHOD3(dvdnav_status_t, dvdnav_get_position, (dvdnav_t *p1, uint32_t *p2, uint32_t *p3))
280  DEFINE_METHOD3(dvdnav_status_t, dvdnav_current_title_info, (dvdnav_t *p1, int32_t *p2, int32_t *p3))
281  DEFINE_METHOD2(dvdnav_status_t, dvdnav_spu_language_select, (dvdnav_t *p1, char *p2))
282  DEFINE_METHOD2(dvdnav_status_t, dvdnav_audio_language_select, (dvdnav_t *p1, char *p2))
283  DEFINE_METHOD2(dvdnav_status_t, dvdnav_menu_language_select, (dvdnav_t *p1, char *p2))
284  DEFINE_METHOD1(int8_t, dvdnav_is_domain_vts, (dvdnav_t *p1))
285  DEFINE_METHOD1(int8_t, dvdnav_get_active_spu_stream, (dvdnav_t *p1))
286  DEFINE_METHOD2(int8_t, dvdnav_get_spu_logical_stream, (dvdnav_t *p1, uint8_t p2))
287  DEFINE_METHOD2(uint16_t, dvdnav_spu_stream_to_lang, (dvdnav_t *p1, uint8_t p2))
288  DEFINE_METHOD2(dvdnav_status_t, dvdnav_get_current_highlight, (dvdnav_t *p1, int32_t *p2))
289  DEFINE_METHOD2(dvdnav_status_t, dvdnav_menu_call, (dvdnav_t *p1, DVDMenuID_t p2))
290  DEFINE_METHOD1(dvdnav_status_t, dvdnav_prev_pg_search, (dvdnav_t *p1))
291  DEFINE_METHOD1(dvdnav_status_t, dvdnav_next_pg_search, (dvdnav_t *p1))
292  DEFINE_METHOD4(dvdnav_status_t, dvdnav_get_highlight_area, (pci_t *p1, int32_t p2, int32_t p3, dvdnav_highlight_area_t *p4))
293  DEFINE_METHOD1(dvdnav_status_t, dvdnav_go_up, (dvdnav_t *p1))
294  DEFINE_METHOD1(int8_t, dvdnav_get_active_audio_stream, (dvdnav_t *p1))
295  DEFINE_METHOD2(uint16_t, dvdnav_audio_stream_to_lang, (dvdnav_t *p1, uint8_t p2))
296  DEFINE_METHOD1(vm_t*, dvdnav_get_vm, (dvdnav_t *p1))
297  DEFINE_METHOD1(int, dvdnav_get_nr_of_subtitle_streams, (dvdnav_t *p1))
298  DEFINE_METHOD1(int, dvdnav_get_nr_of_audio_streams, (dvdnav_t *p1))
299  DEFINE_METHOD3(int, dvdnav_get_button_info, (dvdnav_t* p1, int p2[2][4], int p3[2][4]))
300  DEFINE_METHOD2(int8_t, dvdnav_get_audio_logical_stream, (dvdnav_t *p1, uint8_t p2))
301  DEFINE_METHOD2(dvdnav_status_t, dvdnav_set_region_mask, (dvdnav_t *p1, int32_t p2))
302  DEFINE_METHOD1(uint8_t, dvdnav_get_video_aspect, (dvdnav_t *p1))
303  DEFINE_METHOD1(uint8_t, dvdnav_get_video_scale_permission, (dvdnav_t *p1))
304  DEFINE_METHOD2(dvdnav_status_t, dvdnav_get_number_of_titles, (dvdnav_t *p1, int32_t *p2))
305  DEFINE_METHOD3(dvdnav_status_t, dvdnav_get_number_of_parts, (dvdnav_t *p1, int32_t p2, int32_t *p3))
306  DEFINE_METHOD2(dvdnav_status_t, dvdnav_title_play, (dvdnav_t *p1, int32_t p2))
307  DEFINE_METHOD3(dvdnav_status_t, dvdnav_part_play, (dvdnav_t *p1, int32_t p2, int32_t p3))
308  DEFINE_METHOD2(dvdnav_status_t, dvdnav_subpicture_change, (dvdnav_t *p1, int32_t p2))
309  DEFINE_METHOD2(dvdnav_status_t, dvdnav_audio_change, (dvdnav_t *p1, int32_t p2))
310  DEFINE_METHOD3(dvdnav_status_t, dvdnav_get_audio_info, (dvdnav_t * p1, int32_t p2, audio_attr_t* p3))
311  DEFINE_METHOD3(dvdnav_status_t, dvdnav_get_stitle_info, (dvdnav_t * p1, int32_t p2, subp_attr_t* p3))
312  DEFINE_METHOD2(dvdnav_status_t, dvdnav_time_search, (dvdnav_t * p1, uint64_t p2))
313  DEFINE_METHOD3(dvdnav_status_t, dvdnav_jump_to_sector_by_time, (dvdnav_t * p1, uint64_t p2, int32_t p3))
314  DEFINE_METHOD1(int64_t, dvdnav_convert_time, (dvd_time_t *p1))
315  DEFINE_METHOD2(dvdnav_status_t, dvdnav_get_state, (dvdnav_t *p1, dvd_state_t *p2))
316  DEFINE_METHOD2(dvdnav_status_t, dvdnav_set_state, (dvdnav_t *p1, dvd_state_t *p2))
317  DEFINE_METHOD3(dvdnav_status_t, dvdnav_get_angle_info, (dvdnav_t *p1, int32_t *p2,int32_t *p3))
318  DEFINE_METHOD4(dvdnav_status_t, dvdnav_mouse_activate, (dvdnav_t *p1, pci_t *p2, int32_t p3, int32_t p4))
319  DEFINE_METHOD4(dvdnav_status_t, dvdnav_mouse_select, (dvdnav_t *p1, pci_t *p2, int32_t p3, int32_t p4))
320  DEFINE_METHOD2(dvdnav_status_t, dvdnav_get_title_string, (dvdnav_t *p1, const char **p2))
321  DEFINE_METHOD2(dvdnav_status_t, dvdnav_get_serial_string, (dvdnav_t *p1, const char **p2))
322  BEGIN_METHOD_RESOLVE()
323    RESOLVE_METHOD(dvdnav_open)
324    RESOLVE_METHOD(dvdnav_close)
325    RESOLVE_METHOD(dvdnav_reset)
326    RESOLVE_METHOD(dvdnav_err_to_string)
327    RESOLVE_METHOD(dvdnav_set_readahead_flag)
328    RESOLVE_METHOD(dvdnav_set_PGC_positioning_flag)
329    RESOLVE_METHOD(dvdnav_get_next_cache_block)
330    RESOLVE_METHOD(dvdnav_free_cache_block)
331    RESOLVE_METHOD(dvdnav_still_skip)
332    RESOLVE_METHOD(dvdnav_wait_skip)
333    RESOLVE_METHOD(dvdnav_stop)
334    RESOLVE_METHOD(dvdnav_button_select)
335    RESOLVE_METHOD(dvdnav_button_activate)
336    RESOLVE_METHOD(dvdnav_upper_button_select)
337    RESOLVE_METHOD(dvdnav_lower_button_select)
338    RESOLVE_METHOD(dvdnav_right_button_select)
339    RESOLVE_METHOD(dvdnav_left_button_select)
340    RESOLVE_METHOD(dvdnav_sector_search)
341    RESOLVE_METHOD(dvdnav_get_current_nav_pci)
342    RESOLVE_METHOD(dvdnav_get_current_nav_dsi)
343    RESOLVE_METHOD(dvdnav_get_position)
344    RESOLVE_METHOD(dvdnav_current_title_info)
345    RESOLVE_METHOD(dvdnav_spu_language_select)
346    RESOLVE_METHOD(dvdnav_audio_language_select)
347    RESOLVE_METHOD(dvdnav_menu_language_select)
348    RESOLVE_METHOD(dvdnav_is_domain_vts)
349    RESOLVE_METHOD(dvdnav_get_active_spu_stream)
350    RESOLVE_METHOD(dvdnav_get_spu_logical_stream)
351    RESOLVE_METHOD(dvdnav_spu_stream_to_lang)
352    RESOLVE_METHOD(dvdnav_get_current_highlight)
353    RESOLVE_METHOD(dvdnav_menu_call)
354    RESOLVE_METHOD(dvdnav_prev_pg_search)
355    RESOLVE_METHOD(dvdnav_next_pg_search)
356    RESOLVE_METHOD(dvdnav_get_highlight_area)
357    RESOLVE_METHOD(dvdnav_go_up)
358    RESOLVE_METHOD(dvdnav_get_active_audio_stream)
359    RESOLVE_METHOD(dvdnav_audio_stream_to_lang)
360    RESOLVE_METHOD(dvdnav_get_vm)
361    RESOLVE_METHOD(dvdnav_get_nr_of_subtitle_streams)
362    RESOLVE_METHOD(dvdnav_get_nr_of_audio_streams)
363    RESOLVE_METHOD(dvdnav_get_button_info)
364    RESOLVE_METHOD(dvdnav_get_audio_logical_stream)
365    RESOLVE_METHOD(dvdnav_set_region_mask)
366    RESOLVE_METHOD(dvdnav_get_video_aspect)
367    RESOLVE_METHOD(dvdnav_get_video_scale_permission)
368    RESOLVE_METHOD(dvdnav_get_number_of_titles)
369    RESOLVE_METHOD(dvdnav_get_number_of_parts)
370    RESOLVE_METHOD(dvdnav_title_play)
371    RESOLVE_METHOD(dvdnav_part_play)
372    RESOLVE_METHOD(dvdnav_subpicture_change)
373    RESOLVE_METHOD(dvdnav_audio_change)
374    RESOLVE_METHOD(dvdnav_get_audio_info)
375    RESOLVE_METHOD(dvdnav_get_stitle_info)
376    RESOLVE_METHOD(dvdnav_time_search)
377    RESOLVE_METHOD(dvdnav_jump_to_sector_by_time)
378    RESOLVE_METHOD(dvdnav_convert_time)
379    RESOLVE_METHOD(dvdnav_get_state)
380    RESOLVE_METHOD(dvdnav_set_state)
381    RESOLVE_METHOD(dvdnav_get_angle_info)
382    RESOLVE_METHOD(dvdnav_mouse_activate)
383    RESOLVE_METHOD(dvdnav_mouse_select)
384    RESOLVE_METHOD(dvdnav_get_title_string)
385    RESOLVE_METHOD(dvdnav_get_serial_string)
386END_METHOD_RESOLVE()
387};
388
389#endif