xbmc
DllDvdNav.h
1 /*
2  * Copyright (C) 2005-2018 Team Kodi
3  * This file is part of Kodi - https://kodi.tv
4  *
5  * SPDX-License-Identifier: GPL-2.0-or-later
6  * See LICENSES/README.md for more information.
7  */
8 
9 #pragma once
10 
11 extern "C" {
12 #define DVDNAV_COMPILE
13  #include <stdint.h>
14 
15  #include "dvdnav/dvdnav.h"
16 
17  #ifndef WIN32
18  #define WIN32
19  #endif // WIN32
20 
21  #ifndef HAVE_CONFIG_H
22  #define HAVE_CONFIG_H
23  #endif
24 
25  #include "dvdnav/dvd_types.h"
26 
27  #ifdef WIN32 // WIN32INCLUDES
28  #undef HAVE_CONFIG_H
29  #endif
30 }
31 #include "DynamicDll.h"
32 
34 {
35 public:
36  virtual ~DllDvdNavInterface() = default;
37  virtual dvdnav_status_t dvdnav_open(dvdnav_t **dest, const char *path)=0;
38  virtual dvdnav_status_t dvdnav_open2(dvdnav_t** dest,
39  void*,
40  const dvdnav_logger_cb*,
41  const char* path) = 0;
42  virtual dvdnav_status_t dvdnav_open_stream(dvdnav_t **dest, void *stream, dvdnav_stream_cb *stream_cb) = 0;
43  virtual dvdnav_status_t dvdnav_open_stream2(dvdnav_t** dest,
44  void* stream,
45  const dvdnav_logger_cb*,
46  dvdnav_stream_cb* stream_cb) = 0;
47  virtual dvdnav_status_t dvdnav_close(dvdnav_t *self)=0;
48  virtual dvdnav_status_t dvdnav_reset(dvdnav_t *self)=0;
49  virtual const char* dvdnav_err_to_string(dvdnav_t *self)=0;
50  virtual dvdnav_status_t dvdnav_set_readahead_flag(dvdnav_t *self, int32_t read_ahead_flag)=0;
51  virtual dvdnav_status_t dvdnav_set_PGC_positioning_flag(dvdnav_t *self, int32_t pgc_based_flag)=0;
52  virtual dvdnav_status_t dvdnav_get_next_cache_block(dvdnav_t *self, uint8_t **buf, int32_t *event, int32_t *len)=0;
53  virtual dvdnav_status_t dvdnav_free_cache_block(dvdnav_t *self, unsigned char *buf)=0;
54  virtual dvdnav_status_t dvdnav_still_skip(dvdnav_t *self)=0;
55  virtual dvdnav_status_t dvdnav_wait_skip(dvdnav_t *self)=0;
56  virtual dvdnav_status_t dvdnav_stop(dvdnav_t *self)=0;
57  virtual dvdnav_status_t dvdnav_button_select(dvdnav_t *self, pci_t *pci, int32_t button)=0;
58  virtual dvdnav_status_t dvdnav_button_activate(dvdnav_t *self, pci_t *pci)=0;
59  virtual dvdnav_status_t dvdnav_upper_button_select(dvdnav_t *self, pci_t *pci)=0;
60  virtual dvdnav_status_t dvdnav_lower_button_select(dvdnav_t *self, pci_t *pci)=0;
61  virtual dvdnav_status_t dvdnav_right_button_select(dvdnav_t *self, pci_t *pci)=0;
62  virtual dvdnav_status_t dvdnav_left_button_select(dvdnav_t *self, pci_t *pci)=0;
63  virtual dvdnav_status_t dvdnav_sector_search(dvdnav_t *self, uint64_t offset, int32_t origin)=0;
64  virtual pci_t* dvdnav_get_current_nav_pci(dvdnav_t *self)=0;
65  virtual dsi_t* dvdnav_get_current_nav_dsi(dvdnav_t *self)=0;
66  virtual dvdnav_status_t dvdnav_get_position(dvdnav_t *self, uint32_t *pos, uint32_t *len)=0;
67  virtual dvdnav_status_t dvdnav_current_title_info(dvdnav_t *self, int32_t *title, int32_t *part)=0;
68  virtual dvdnav_status_t dvdnav_spu_language_select(dvdnav_t *self, char *code)=0;
69  virtual dvdnav_status_t dvdnav_audio_language_select(dvdnav_t *self, char *code)=0;
70  virtual dvdnav_status_t dvdnav_menu_language_select(dvdnav_t *self, char *code)=0;
71  virtual int8_t dvdnav_is_domain_vts(dvdnav_t *self)=0;
72  virtual int8_t dvdnav_get_active_spu_stream(dvdnav_t *self)=0;
73  virtual int8_t dvdnav_get_spu_logical_stream(dvdnav_t *self, uint8_t subp_num)=0;
74  virtual uint16_t dvdnav_spu_stream_to_lang(dvdnav_t *self, uint8_t stream)=0;
75  virtual dvdnav_status_t dvdnav_get_current_highlight(dvdnav_t *self, int32_t *button)=0;
76  virtual dvdnav_status_t dvdnav_menu_call(dvdnav_t *self, DVDMenuID_t menu)=0;
77  virtual dvdnav_status_t dvdnav_prev_pg_search(dvdnav_t *self)=0;
78  virtual dvdnav_status_t dvdnav_next_pg_search(dvdnav_t *self)=0;
79  virtual dvdnav_status_t dvdnav_get_highlight_area(pci_t *nav_pci , int32_t button, int32_t mode, dvdnav_highlight_area_t *highlight)=0;
80  virtual dvdnav_status_t dvdnav_go_up(dvdnav_t *self)=0;
81  virtual int8_t dvdnav_get_active_audio_stream(dvdnav_t *self)=0;
82  virtual uint16_t dvdnav_audio_stream_to_lang(dvdnav_t *self, uint8_t stream)=0;
83  virtual int8_t dvdnav_get_audio_logical_stream(dvdnav_t *self, uint8_t audio_num)=0;
84  virtual dvdnav_status_t dvdnav_set_region_mask(dvdnav_t *self, int32_t region_mask)=0;
85  virtual uint8_t dvdnav_get_video_aspect(dvdnav_t *self)=0;
86  virtual uint8_t dvdnav_get_video_scale_permission(dvdnav_t *self)=0;
87  virtual dvdnav_status_t dvdnav_get_number_of_titles(dvdnav_t *self, int32_t *titles)=0;
88  virtual dvdnav_status_t dvdnav_get_number_of_parts(dvdnav_t *self, int32_t title, int32_t *parts)=0;
89  virtual dvdnav_status_t dvdnav_title_play(dvdnav_t *self, int32_t title)=0;
90  virtual dvdnav_status_t dvdnav_part_play(dvdnav_t *self, int32_t title, int32_t part)=0;
91  virtual dvdnav_status_t dvdnav_get_audio_attr(dvdnav_t * self, int32_t streamid, audio_attr_t* audio_attributes)=0;
92  virtual dvdnav_status_t dvdnav_get_spu_attr(dvdnav_t * self, int32_t streamid, subp_attr_t* stitle_attributes)=0;
93  virtual dvdnav_status_t dvdnav_jump_to_sector_by_time(dvdnav_t* self,
94  uint64_t offset,
95  int32_t origin) = 0;
96  virtual int64_t dvdnav_convert_time(dvd_time_t *time)=0;
97  virtual dvdnav_status_t dvdnav_get_angle_info(dvdnav_t *self, int32_t *current_angle,int32_t *number_of_angles)=0;
98  virtual dvdnav_status_t dvdnav_angle_change(dvdnav_t *self, int32_t angle) = 0;
99  virtual dvdnav_status_t dvdnav_mouse_activate(dvdnav_t *self, pci_t *pci, int32_t x, int32_t y)=0;
100  virtual dvdnav_status_t dvdnav_mouse_select(dvdnav_t *self, pci_t *pci, int32_t x, int32_t y)=0;
101  virtual dvdnav_status_t dvdnav_get_title_string(dvdnav_t *self, const char **title_str)=0;
102  virtual dvdnav_status_t dvdnav_get_serial_string(dvdnav_t *self, const char **serial_str)=0;
103  virtual const char* dvdnav_get_volid_string(dvdnav_t* self) = 0;
104  virtual dvdnav_status_t dvdnav_get_disk_region_mask(dvdnav_t* self, int32_t* region_mask) = 0;
105  virtual uint32_t dvdnav_describe_title_chapters(dvdnav_t* self, uint32_t title, uint64_t** times, uint64_t* duration)=0;
106  virtual int64_t dvdnav_get_current_time(dvdnav_t* self) = 0;
107  virtual int dvdnav_get_video_resolution(dvdnav_t* self, uint32_t* width, uint32_t* height)=0;
108  virtual int8_t dvdnav_get_number_of_streams(dvdnav_t* self, dvdnav_stream_type_t stream_type) = 0;
109  virtual dvdnav_status_t dvdnav_toggle_spu_stream(dvdnav_t* self, uint8_t visibility) = 0;
110  virtual dvdnav_status_t dvdnav_set_active_stream(dvdnav_t* self,
111  uint8_t stream_num,
112  dvdnav_stream_type_t stream_type) = 0;
113  virtual dvdnav_status_t dvdnav_program_play(dvdnav_t* self,
114  int32_t title,
115  int32_t pgcn,
116  int32_t pgn) = 0;
117  virtual dvdnav_status_t dvdnav_current_title_program(dvdnav_t* self,
118  int32_t* title,
119  int32_t* pgcn,
120  int32_t* pgn) = 0;
121 };
122 
124 {
125  DECLARE_DLL_WRAPPER(DllDvdNav, DLL_PATH_LIBDVDNAV)
126 
127  DEFINE_METHOD2(dvdnav_status_t, dvdnav_open, (dvdnav_t **p1, const char *p2))
128  DEFINE_METHOD4(dvdnav_status_t,
129  dvdnav_open2,
130  (dvdnav_t * *p1, void* p2, const dvdnav_logger_cb* p3, const char* p4))
131  DEFINE_METHOD3(dvdnav_status_t, dvdnav_open_stream, (dvdnav_t **p1, void *p2, dvdnav_stream_cb *p3))
132  DEFINE_METHOD4(dvdnav_status_t,
133  dvdnav_open_stream2,
134  (dvdnav_t * *p1, void* p2, const dvdnav_logger_cb* p3, dvdnav_stream_cb* p4))
135  DEFINE_METHOD1(dvdnav_status_t, dvdnav_close, (dvdnav_t *p1))
136  DEFINE_METHOD1(dvdnav_status_t, dvdnav_reset, (dvdnav_t *p1))
137  DEFINE_METHOD1(const char*, dvdnav_err_to_string, (dvdnav_t *p1))
138  DEFINE_METHOD2(dvdnav_status_t, dvdnav_set_readahead_flag, (dvdnav_t *p1, int32_t p2))
139  DEFINE_METHOD2(dvdnav_status_t, dvdnav_set_PGC_positioning_flag, (dvdnav_t *p1, int32_t p2))
140  DEFINE_METHOD4(dvdnav_status_t, dvdnav_get_next_cache_block, (dvdnav_t *p1, uint8_t **p2, int32_t *p3, int32_t *p4))
141  DEFINE_METHOD2(dvdnav_status_t, dvdnav_free_cache_block, (dvdnav_t *p1, unsigned char *p2))
142  DEFINE_METHOD1(dvdnav_status_t, dvdnav_still_skip, (dvdnav_t *p1))
143  DEFINE_METHOD1(dvdnav_status_t, dvdnav_wait_skip, (dvdnav_t *p1))
144  DEFINE_METHOD1(dvdnav_status_t, dvdnav_stop, (dvdnav_t *p1))
145  DEFINE_METHOD3(dvdnav_status_t, dvdnav_button_select, (dvdnav_t *p1, pci_t *p2, int32_t p3))
146  DEFINE_METHOD2(dvdnav_status_t, dvdnav_button_activate,(dvdnav_t *p1, pci_t *p2))
147  DEFINE_METHOD2(dvdnav_status_t, dvdnav_upper_button_select, (dvdnav_t *p1, pci_t *p2))
148  DEFINE_METHOD2(dvdnav_status_t, dvdnav_lower_button_select, (dvdnav_t *p1, pci_t *p2))
149  DEFINE_METHOD2(dvdnav_status_t, dvdnav_right_button_select, (dvdnav_t *p1, pci_t *p2))
150  DEFINE_METHOD2(dvdnav_status_t, dvdnav_left_button_select, (dvdnav_t *p1, pci_t *p2))
151  DEFINE_METHOD3(dvdnav_status_t, dvdnav_sector_search, (dvdnav_t *p1, uint64_t p2, int32_t p3))
152  DEFINE_METHOD1(pci_t*, dvdnav_get_current_nav_pci, (dvdnav_t *p1))
153  DEFINE_METHOD1(dsi_t*, dvdnav_get_current_nav_dsi, (dvdnav_t *p1))
154  DEFINE_METHOD3(dvdnav_status_t, dvdnav_get_position, (dvdnav_t *p1, uint32_t *p2, uint32_t *p3))
155  DEFINE_METHOD3(dvdnav_status_t, dvdnav_current_title_info, (dvdnav_t *p1, int32_t *p2, int32_t *p3))
156  DEFINE_METHOD2(dvdnav_status_t, dvdnav_spu_language_select, (dvdnav_t *p1, char *p2))
157  DEFINE_METHOD2(dvdnav_status_t, dvdnav_audio_language_select, (dvdnav_t *p1, char *p2))
158  DEFINE_METHOD2(dvdnav_status_t, dvdnav_menu_language_select, (dvdnav_t *p1, char *p2))
159  DEFINE_METHOD1(int8_t, dvdnav_is_domain_vts, (dvdnav_t *p1))
160  DEFINE_METHOD1(int8_t, dvdnav_get_active_spu_stream, (dvdnav_t *p1))
161  DEFINE_METHOD2(int8_t, dvdnav_get_spu_logical_stream, (dvdnav_t *p1, uint8_t p2))
162  DEFINE_METHOD2(uint16_t, dvdnav_spu_stream_to_lang, (dvdnav_t *p1, uint8_t p2))
163  DEFINE_METHOD2(dvdnav_status_t, dvdnav_get_current_highlight, (dvdnav_t *p1, int32_t *p2))
164  DEFINE_METHOD2(dvdnav_status_t, dvdnav_menu_call, (dvdnav_t *p1, DVDMenuID_t p2))
165  DEFINE_METHOD2(dvdnav_status_t, dvdnav_get_disk_region_mask, (dvdnav_t * p1, int32_t* p2))
166  DEFINE_METHOD1(dvdnav_status_t, dvdnav_prev_pg_search, (dvdnav_t *p1))
167  DEFINE_METHOD1(dvdnav_status_t, dvdnav_next_pg_search, (dvdnav_t *p1))
168  DEFINE_METHOD4(dvdnav_status_t, dvdnav_get_highlight_area, (pci_t *p1, int32_t p2, int32_t p3, dvdnav_highlight_area_t *p4))
169  DEFINE_METHOD1(dvdnav_status_t, dvdnav_go_up, (dvdnav_t *p1))
170  DEFINE_METHOD1(int8_t, dvdnav_get_active_audio_stream, (dvdnav_t *p1))
171  DEFINE_METHOD2(uint16_t, dvdnav_audio_stream_to_lang, (dvdnav_t *p1, uint8_t p2))
172  DEFINE_METHOD2(int8_t, dvdnav_get_audio_logical_stream, (dvdnav_t *p1, uint8_t p2))
173  DEFINE_METHOD2(int8_t, dvdnav_get_number_of_streams, (dvdnav_t * p1, dvdnav_stream_type_t p2))
174  DEFINE_METHOD2(dvdnav_status_t, dvdnav_set_region_mask, (dvdnav_t *p1, int32_t p2))
175  DEFINE_METHOD1(uint8_t, dvdnav_get_video_aspect, (dvdnav_t *p1))
176  DEFINE_METHOD1(uint8_t, dvdnav_get_video_scale_permission, (dvdnav_t *p1))
177  DEFINE_METHOD2(dvdnav_status_t, dvdnav_get_number_of_titles, (dvdnav_t *p1, int32_t *p2))
178  DEFINE_METHOD3(dvdnav_status_t, dvdnav_get_number_of_parts, (dvdnav_t *p1, int32_t p2, int32_t *p3))
179  DEFINE_METHOD2(dvdnav_status_t, dvdnav_title_play, (dvdnav_t *p1, int32_t p2))
180  DEFINE_METHOD3(dvdnav_status_t, dvdnav_part_play, (dvdnav_t *p1, int32_t p2, int32_t p3))
181  DEFINE_METHOD3(dvdnav_status_t, dvdnav_get_audio_attr, (dvdnav_t * p1, int32_t p2, audio_attr_t* p3))
182  DEFINE_METHOD3(dvdnav_status_t, dvdnav_get_spu_attr, (dvdnav_t * p1, int32_t p2, subp_attr_t* p3))
183  DEFINE_METHOD3(dvdnav_status_t, dvdnav_jump_to_sector_by_time, (dvdnav_t * p1, uint64_t p2, int32_t p3))
184  DEFINE_METHOD1(int64_t, dvdnav_convert_time, (dvd_time_t *p1))
185  DEFINE_METHOD3(dvdnav_status_t, dvdnav_get_angle_info, (dvdnav_t *p1, int32_t *p2,int32_t *p3))
186  DEFINE_METHOD2(dvdnav_status_t, dvdnav_angle_change, (dvdnav_t *p1, int32_t p2))
187  DEFINE_METHOD4(dvdnav_status_t, dvdnav_mouse_activate, (dvdnav_t *p1, pci_t *p2, int32_t p3, int32_t p4))
188  DEFINE_METHOD4(dvdnav_status_t, dvdnav_mouse_select, (dvdnav_t *p1, pci_t *p2, int32_t p3, int32_t p4))
189  DEFINE_METHOD2(dvdnav_status_t, dvdnav_get_title_string, (dvdnav_t *p1, const char **p2))
190  DEFINE_METHOD2(dvdnav_status_t, dvdnav_get_serial_string, (dvdnav_t *p1, const char **p2))
191  DEFINE_METHOD1(const char*, dvdnav_get_volid_string, (dvdnav_t * p1))
192  DEFINE_METHOD4(uint32_t, dvdnav_describe_title_chapters, (dvdnav_t* p1, uint32_t p2, uint64_t** p3, uint64_t* p4))
193  DEFINE_METHOD1(int64_t, dvdnav_get_current_time, (dvdnav_t * p1))
194  DEFINE_METHOD3(int, dvdnav_get_video_resolution, (dvdnav_t * p1, uint32_t* p2, uint32_t* p3))
195  DEFINE_METHOD2(dvdnav_status_t, dvdnav_toggle_spu_stream, (dvdnav_t * p1, uint8_t p2))
196  DEFINE_METHOD3(dvdnav_status_t,
197  dvdnav_set_active_stream,
198  (dvdnav_t * p1, uint8_t p2, dvdnav_stream_type_t p3))
199  DEFINE_METHOD4(dvdnav_status_t,
200  dvdnav_program_play,
201  (dvdnav_t * p1, int32_t p2, int32_t p3, int32_t p4))
202  DEFINE_METHOD4(dvdnav_status_t,
203  dvdnav_current_title_program,
204  (dvdnav_t * p1, int32_t* p2, int32_t* p3, int32_t* p4))
205  BEGIN_METHOD_RESOLVE()
206  RESOLVE_METHOD(dvdnav_open)
207  RESOLVE_METHOD(dvdnav_open2)
208  RESOLVE_METHOD(dvdnav_open_stream)
209  RESOLVE_METHOD(dvdnav_open_stream2)
210  RESOLVE_METHOD(dvdnav_close)
211  RESOLVE_METHOD(dvdnav_reset)
212  RESOLVE_METHOD(dvdnav_err_to_string)
213  RESOLVE_METHOD(dvdnav_set_readahead_flag)
214  RESOLVE_METHOD(dvdnav_set_PGC_positioning_flag)
215  RESOLVE_METHOD(dvdnav_get_next_cache_block)
216  RESOLVE_METHOD(dvdnav_free_cache_block)
217  RESOLVE_METHOD(dvdnav_still_skip)
218  RESOLVE_METHOD(dvdnav_wait_skip)
219  RESOLVE_METHOD(dvdnav_stop)
220  RESOLVE_METHOD(dvdnav_get_number_of_streams)
221  RESOLVE_METHOD(dvdnav_get_disk_region_mask)
222  RESOLVE_METHOD(dvdnav_button_select)
223  RESOLVE_METHOD(dvdnav_button_activate)
224  RESOLVE_METHOD(dvdnav_upper_button_select)
225  RESOLVE_METHOD(dvdnav_lower_button_select)
226  RESOLVE_METHOD(dvdnav_right_button_select)
227  RESOLVE_METHOD(dvdnav_left_button_select)
228  RESOLVE_METHOD(dvdnav_sector_search)
229  RESOLVE_METHOD(dvdnav_get_current_nav_pci)
230  RESOLVE_METHOD(dvdnav_get_current_nav_dsi)
231  RESOLVE_METHOD(dvdnav_get_position)
232  RESOLVE_METHOD(dvdnav_current_title_info)
233  RESOLVE_METHOD(dvdnav_spu_language_select)
234  RESOLVE_METHOD(dvdnav_audio_language_select)
235  RESOLVE_METHOD(dvdnav_menu_language_select)
236  RESOLVE_METHOD(dvdnav_is_domain_vts)
237  RESOLVE_METHOD(dvdnav_get_active_spu_stream)
238  RESOLVE_METHOD(dvdnav_get_spu_logical_stream)
239  RESOLVE_METHOD(dvdnav_spu_stream_to_lang)
240  RESOLVE_METHOD(dvdnav_get_current_highlight)
241  RESOLVE_METHOD(dvdnav_menu_call)
242  RESOLVE_METHOD(dvdnav_prev_pg_search)
243  RESOLVE_METHOD(dvdnav_next_pg_search)
244  RESOLVE_METHOD(dvdnav_get_highlight_area)
245  RESOLVE_METHOD(dvdnav_go_up)
246  RESOLVE_METHOD(dvdnav_get_active_audio_stream)
247  RESOLVE_METHOD(dvdnav_audio_stream_to_lang)
248  RESOLVE_METHOD(dvdnav_get_audio_logical_stream)
249  RESOLVE_METHOD(dvdnav_set_region_mask)
250  RESOLVE_METHOD(dvdnav_get_video_aspect)
251  RESOLVE_METHOD(dvdnav_get_video_scale_permission)
252  RESOLVE_METHOD(dvdnav_get_number_of_titles)
253  RESOLVE_METHOD(dvdnav_get_number_of_parts)
254  RESOLVE_METHOD(dvdnav_title_play)
255  RESOLVE_METHOD(dvdnav_part_play)
256  RESOLVE_METHOD(dvdnav_get_audio_attr)
257  RESOLVE_METHOD(dvdnav_get_spu_attr)
258  RESOLVE_METHOD(dvdnav_jump_to_sector_by_time)
259  RESOLVE_METHOD(dvdnav_convert_time)
260  RESOLVE_METHOD(dvdnav_get_angle_info)
261  RESOLVE_METHOD(dvdnav_angle_change)
262  RESOLVE_METHOD(dvdnav_mouse_activate)
263  RESOLVE_METHOD(dvdnav_mouse_select)
264  RESOLVE_METHOD(dvdnav_get_title_string)
265  RESOLVE_METHOD(dvdnav_get_serial_string)
266  RESOLVE_METHOD(dvdnav_get_volid_string)
267  RESOLVE_METHOD(dvdnav_describe_title_chapters)
268  RESOLVE_METHOD(dvdnav_get_current_time)
269  RESOLVE_METHOD(dvdnav_get_video_resolution)
270  RESOLVE_METHOD(dvdnav_toggle_spu_stream)
271  RESOLVE_METHOD(dvdnav_set_active_stream)
272  RESOLVE_METHOD(dvdnav_program_play)
273  RESOLVE_METHOD(dvdnav_current_title_program)
274  END_METHOD_RESOLVE()
275 };
Definition: dvdnav.h:80
Definition: DynamicDll.h:514
Definition: DllDvdNav.h:123
Definition: dvd_types.h:69
Definition: LibInputPointer.h:13
Definition: DllDvdNav.h:33
Definition: inftrees.h:24
Definition: dvd_reader.h:81