1 /*
2  * Copyright (C) 2000-2018 the xine project
3  *
4  * This file is part of xine, a free video player.
5  *
6  * xine is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * xine is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
19  */
20 
21 #ifndef __VDR_H
22 #define __VDR_H
23 
24 #define XINE_VDR_VERSION 901
25 
26 #include <xine/os_types.h>
27 
28 enum funcs
29 {
30   func_unknown = -1
31   , func_nop
32   , func_osd_new
33   , func_osd_free
34   , func_osd_show
35   , func_osd_hide
36   , func_osd_set_position
37   , func_osd_draw_bitmap
38   , func_set_color
39   , func_clear
40   , func_mute
41   , func_set_volume
42   , func_set_speed
43   , func_set_prebuffer
44   , func_metronom
45   , func_start
46   , func_wait
47   , func_setup
48   , func_grab_image
49   , func_get_pts
50   , func_flush
51   , func_first_frame
52   , func_still_frame
53   , func_video_size
54   , func_set_video_window
55   , func_osd_flush
56   , func_play_external
57   , func_key
58   , func_frame_size
59   , func_reset_audio
60   , func_select_audio
61   , func_trick_speed_mode
62   , func_get_version
63   , func_discontinuity
64   , func_query_capabilities
65 };
66 
67 enum keys
68 {
69   key_none,
70   key_up,
71   key_down,
72   key_menu,
73   key_ok,
74   key_back,
75   key_left,
76   key_right,
77   key_red,
78   key_green,
79   key_yellow,
80   key_blue,
81   key_0,
82   key_1,
83   key_2,
84   key_3,
85   key_4,
86   key_5,
87   key_6,
88   key_7,
89   key_8,
90   key_9,
91   key_play,
92   key_pause,
93   key_stop,
94   key_record,
95   key_fast_fwd,
96   key_fast_rew,
97   key_power,
98   key_channel_plus,
99   key_channel_minus,
100   key_volume_plus,
101   key_volume_minus,
102   key_mute,
103   key_schedule,
104   key_channels,
105   key_timers,
106   key_recordings,
107   key_setup,
108   key_commands,
109   key_user1,
110   key_user2,
111   key_user3,
112   key_user4,
113   key_user5,
114   key_user6,
115   key_user7,
116   key_user8,
117   key_user9,
118   key_audio,
119   key_info,
120   key_channel_previous,
121   key_next,
122   key_previous,
123   key_subtitles,
124   key_user0,
125 };
126 
127 
128 
129 typedef struct __attribute__((packed)) data_header_s
130 {
131   uint32_t func:8;
132   uint32_t len:24;
133 }
134 data_header_t;
135 
136 
137 
138 typedef data_header_t result_header_t;
139 typedef data_header_t event_header_t;
140 
141 
142 
143 typedef struct __attribute__((packed)) data_nop_s
144 {
145   data_header_t header;
146 }
147 data_nop_t;
148 
149 
150 
151 typedef struct __attribute__((packed)) data_osd_new_s
152 {
153   data_header_t header;
154 
155   uint8_t  window;
156   int16_t  x;
157   int16_t  y;
158   uint16_t width;
159   uint16_t height;
160   uint16_t w_ref;
161   uint16_t h_ref;
162 }
163 data_osd_new_t;
164 
165 
166 
167 typedef struct __attribute__((packed)) data_osd_free_s
168 {
169   data_header_t header;
170 
171   uint8_t window;
172 }
173 data_osd_free_t;
174 
175 
176 
177 typedef struct __attribute__((packed)) data_osd_show_s
178 {
179   data_header_t header;
180 
181   uint8_t window;
182 }
183 data_osd_show_t;
184 
185 
186 
187 typedef struct __attribute__((packed)) data_osd_hide_s
188 {
189   data_header_t header;
190 
191   uint8_t window;
192 }
193 data_osd_hide_t;
194 
195 
196 
197 typedef struct __attribute__((packed)) data_osd_flush_s
198 {
199   data_header_t header;
200 }
201 data_osd_flush_t;
202 
203 
204 
205 typedef struct __attribute__((packed)) data_play_external_s
206 {
207   data_header_t header;
208 }
209 data_play_external_t;
210 
211 
212 
213 typedef struct __attribute__((packed)) data_osd_set_position_s
214 {
215   data_header_t header;
216 
217   uint8_t window;
218   int16_t x;
219   int16_t y;
220 }
221 data_osd_set_position_t;
222 
223 
224 
225 typedef struct __attribute__((packed)) data_osd_draw_bitmap_s
226 {
227   data_header_t header;
228 
229   uint8_t  window;
230   int16_t  x;
231   int16_t  y;
232   uint16_t width;
233   uint16_t height;
234   uint8_t  argb;
235 }
236 data_osd_draw_bitmap_t;
237 
238 
239 
240 typedef struct __attribute__((packed)) data_set_color_s
241 {
242   data_header_t header;
243 
244   uint8_t window;
245   uint8_t index;
246   uint8_t num;
247 }
248 data_set_color_t;
249 
250 
251 
252 typedef struct __attribute__((packed)) data_flush_s
253 {
254   data_header_t header;
255 
256   int32_t ms_timeout;
257   uint8_t just_wait;
258 }
259 data_flush_t;
260 
261 
262 
263 typedef struct __attribute__((packed)) result_flush_s
264 {
265   result_header_t header;
266 
267   uint8_t timed_out;
268 }
269 result_flush_t;
270 
271 
272 
273 typedef struct __attribute__((packed)) data_clear_s
274 {
275   data_header_t header;
276 
277   int32_t n;
278   int8_t s;
279   uint8_t i;
280 }
281 data_clear_t;
282 
283 
284 
285 typedef struct __attribute__((packed)) data_mute_s
286 {
287   data_header_t header;
288 
289   uint8_t mute;
290 }
291 data_mute_t;
292 
293 
294 
295 typedef struct __attribute__((packed)) data_set_volume_s
296 {
297   data_header_t header;
298 
299   uint8_t volume;
300 }
301 data_set_volume_t;
302 
303 
304 
305 typedef struct __attribute__((packed)) data_set_speed_s
306 {
307   data_header_t header;
308 
309   int32_t speed;
310 }
311 data_set_speed_t;
312 
313 
314 
315 typedef struct __attribute__((packed)) data_set_prebuffer_s
316 {
317   data_header_t header;
318 
319   uint32_t prebuffer;
320 }
321 data_set_prebuffer_t;
322 
323 
324 
325 typedef struct __attribute__((packed)) data_metronom_s
326 {
327   data_header_t header;
328 
329   int64_t  pts;
330   uint32_t flags;
331 }
332 data_metronom_t;
333 
334 
335 
336 typedef struct __attribute__((packed)) data_start_s
337 {
338   data_header_t header;
339 }
340 data_start_t;
341 
342 
343 
344 typedef struct __attribute__((packed)) data_wait_s
345 {
346   data_header_t header;
347   uint8_t id;
348 }
349 data_wait_t;
350 
351 
352 
353 typedef struct __attribute__((packed)) result_wait_s
354 {
355   result_header_t header;
356 }
357 result_wait_t;
358 
359 
360 
361 #define XINE_VDR_VOLUME_IGNORE    0
362 #define XINE_VDR_VOLUME_CHANGE_HW 1
363 #define XINE_VDR_VOLUME_CHANGE_SW 2
364 
365 #define XINE_VDR_MUTE_IGNORE   0
366 #define XINE_VDR_MUTE_EXECUTE  1
367 #define XINE_VDR_MUTE_SIMULATE 2
368 
369 typedef struct __attribute__((packed)) data_setup_s
370 {
371   data_header_t header;
372 
373   uint8_t osd_unscaled_blending;
374   uint8_t volume_mode;
375   uint8_t mute_mode;
376   uint16_t image4_3_zoom_x;
377   uint16_t image4_3_zoom_y;
378   uint16_t image16_9_zoom_x;
379   uint16_t image16_9_zoom_y;
380 }
381 data_setup_t;
382 
383 
384 
385 typedef struct __attribute__((packed)) data_first_frame_s
386 {
387   data_header_t header;
388 }
389 data_first_frame_t;
390 
391 
392 
393 typedef struct __attribute__((packed)) data_still_frame_s
394 {
395   data_header_t header;
396 }
397 data_still_frame_t;
398 
399 
400 
401 typedef struct __attribute__((packed)) data_set_video_window_s
402 {
403   data_header_t header;
404 
405   uint32_t x;
406   uint32_t y;
407   uint32_t w;
408   uint32_t h;
409   uint32_t w_ref;
410   uint32_t h_ref;
411 }
412 data_set_video_window_t;
413 
414 
415 
416 typedef struct __attribute__((packed)) data_grab_image_s
417 {
418   data_header_t header;
419 }
420 data_grab_image_t;
421 
422 
423 
424 typedef struct __attribute__((packed)) result_grab_image_s
425 {
426   result_header_t header;
427 
428   int32_t width;
429   int32_t height;
430   int32_t ratio;
431   int32_t format;
432   int32_t interlaced;
433   int32_t crop_left;
434   int32_t crop_right;
435   int32_t crop_top;
436   int32_t crop_bottom;
437 }
438 result_grab_image_t;
439 
440 
441 
442 typedef struct __attribute__((packed)) data_get_pts_s
443 {
444   data_header_t header;
445   int32_t ms_timeout;
446 }
447 data_get_pts_t;
448 
449 
450 
451 typedef struct __attribute__((packed)) result_get_pts_s
452 {
453   result_header_t header;
454 
455   int64_t pts;
456   int8_t queued;
457 }
458 result_get_pts_t;
459 
460 
461 
462 typedef struct __attribute__((packed)) data_get_version_s
463 {
464   data_header_t header;
465 }
466 data_get_version_t;
467 
468 
469 
470 typedef struct __attribute__((packed)) result_get_version_s
471 {
472   result_header_t header;
473 
474   int32_t version;
475 }
476 result_get_version_t;
477 
478 
479 
480 typedef struct __attribute__((packed)) data_video_size_s
481 {
482   data_header_t header;
483 }
484 data_video_size_t;
485 
486 
487 
488 typedef struct __attribute__((packed)) result_video_size_s
489 {
490   result_header_t header;
491 
492   int32_t left;
493   int32_t top;
494   int32_t width;
495   int32_t height;
496   int32_t ratio;
497   int32_t zoom_x;
498   int32_t zoom_y;
499 }
500 result_video_size_t;
501 
502 
503 
504 typedef struct __attribute__((packed)) data_reset_audio_s
505 {
506   data_header_t header;
507 }
508 data_reset_audio_t;
509 
510 
511 
512 typedef struct __attribute__((packed)) event_key_s
513 {
514   event_header_t header;
515 
516   uint32_t key;
517 }
518 event_key_t;
519 
520 
521 
522 typedef struct __attribute__((packed)) event_frame_size_s
523 {
524   event_header_t header;
525 
526   int32_t left;
527   int32_t top;
528   int32_t width;
529   int32_t height;
530   int32_t zoom_x;
531   int32_t zoom_y;
532 }
533 event_frame_size_t;
534 
535 
536 
537 typedef struct __attribute__((packed)) event_play_external_s
538 {
539   event_header_t header;
540 
541   uint32_t key;
542 }
543 event_play_external_t;
544 
545 
546 
547 typedef struct __attribute__((packed)) data_select_audio_s
548 {
549   data_header_t header;
550 
551   uint8_t channels;
552 }
553 data_select_audio_t;
554 
555 
556 
557 typedef struct __attribute__((packed)) data_trick_speed_mode_s
558 {
559   data_header_t header;
560 
561   uint8_t on;
562 }
563 data_trick_speed_mode_t;
564 
565 
566 
567 typedef struct __attribute__((packed)) event_discontinuity_s
568 {
569   event_header_t header;
570 
571   int32_t type;
572 }
573 event_discontinuity_t;
574 
575 
576 
577 typedef struct __attribute__((packed)) data_query_capabilities_s
578 {
579   data_header_t header;
580 }
581 data_query_capabilities_t;
582 
583 
584 
585 typedef struct __attribute__((packed)) result_query_capabilities_s
586 {
587   result_header_t header;
588 
589   uint8_t osd_max_num_windows;
590   uint8_t osd_palette_max_depth;
591   uint8_t osd_palette_is_shared;
592   uint8_t osd_supports_argb_layer;
593   uint8_t osd_supports_custom_extent;
594 }
595 result_query_capabilities_t;
596 
597 
598 
599 typedef union __attribute__((packed)) data_union_u
600 {
601   data_header_t             header;
602   data_nop_t                nop;
603   data_osd_new_t            osd_new;
604   data_osd_free_t           osd_free;
605   data_osd_show_t           osd_show;
606   data_osd_hide_t           osd_hide;
607   data_osd_set_position_t   osd_set_position;
608   data_osd_draw_bitmap_t    osd_draw_bitmap;
609   data_set_color_t          set_color;
610   data_flush_t              flush;
611   data_clear_t              clear;
612   data_mute_t               mute;
613   data_set_volume_t         set_volume;
614   data_set_speed_t          set_speed;
615   data_set_prebuffer_t      set_prebuffer;
616   data_metronom_t           metronom;
617   data_start_t              start;
618   data_wait_t               wait;
619   data_setup_t              setup;
620   data_grab_image_t         grab_image;
621   data_get_pts_t            get_pts;
622   data_first_frame_t        first_frame;
623   data_still_frame_t        still_frame;
624   data_video_size_t         video_size;
625   data_set_video_window_t   set_video_window;
626   data_osd_flush_t          osd_flush;
627   data_play_external_t      play_external;
628   data_reset_audio_t        reset_audio;
629   data_select_audio_t       select_audio;
630   data_trick_speed_mode_t   trick_speed_mode;
631   data_get_version_t        get_version;
632   data_query_capabilities_t query_capabilities;
633 }
634 data_union_t;
635 
636 
637 
638 typedef union __attribute__((packed)) result_union_u
639 {
640   result_header_t             header;
641   result_grab_image_t         grab_image;
642   result_get_pts_t            get_pts;
643   result_flush_t              flush;
644   result_video_size_t         video_size;
645   result_get_version_t        get_version;
646   result_wait_t               wait;
647   result_query_capabilities_t query_capabilities;
648 }
649 result_union_t;
650 
651 
652 
653 typedef union __attribute__((packed)) event_union_u
654 {
655   event_header_t          header;
656   event_key_t             key;
657   event_frame_size_t      frame_size;
658   event_play_external_t   play_external;
659   event_discontinuity_t   discontinuity;
660 }
661 event_union_t;
662 
663 
664 
665 #endif /* __VDR_H */
666 
667