3 * Copyright (C) 2012-2013 Team XBMC
6 * This Program 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, or (at your option)
11 * This Program 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.
16 * You should have received a copy of the GNU General Public License
17 * along with XBMC; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
24 #include "DynamicDll.h"
28 #include <player_type.h>
29 #include <player_error.h>
32 struct AML_URLProtocol;
34 class DllLibAmplayerInterface
37 virtual ~DllLibAmplayerInterface() {};
39 virtual int player_init(void)=0;
40 virtual int player_start(play_control_t *p, unsigned long priv)=0;
41 virtual int player_stop(int pid)=0;
42 virtual int player_stop_async(int pid)=0;
43 virtual int player_exit(int pid)=0;
44 virtual int player_pause(int pid)=0;
45 virtual int player_resume(int pid)=0;
46 virtual int player_timesearch(int pid, float s_time)=0;
47 virtual int player_forward(int pid, int speed)=0;
48 virtual int player_backward(int pid, int speed)=0;
49 virtual int player_aid(int pid, int audio_id)=0;
50 virtual int player_sid(int pid, int sub_id)=0;
51 virtual int player_progress_exit(void)=0;
52 virtual int player_list_allpid(pid_info_t *pid)=0;
53 virtual int check_pid_valid(int pid)=0;
54 virtual int player_get_play_info(int pid, player_info_t *info)=0;
55 virtual int player_get_media_info(int pid, media_info_t *minfo)=0;
56 virtual int player_video_overlay_en(unsigned enable)=0;
57 virtual int player_start_play(int pid)=0;
58 virtual player_status player_get_state(int pid)=0;
59 virtual unsigned int player_get_extern_priv(int pid)=0;
60 virtual int player_enable_autobuffer(int pid, int enable)=0;
61 virtual int player_set_autobuffer_level(int pid, float min, float middle, float max)=0;
62 virtual int player_register_update_callback(callback_t *cb,update_state_fun_t up_fn,int interval_s)=0;
63 virtual char* player_status2str(player_status status)=0;
65 virtual int audio_set_volume(int pid,float val)=0;
66 virtual int audio_set_delay(int pid, int delay)=0;
68 virtual int codec_open_sub_read(void)=0;
69 virtual int codec_close_sub_fd(int sub_fd)=0;
70 virtual int codec_get_sub_size_fd(int sub_fd)=0;
71 virtual int codec_read_sub_data_fd(int sub_fd, char* buf, unsigned int length)=0;
73 virtual int av_register_protocol2(AML_URLProtocol *protocol, int size)=0;
76 class DllLibAmplayer : public DllDynamic, DllLibAmplayerInterface
78 DECLARE_DLL_WRAPPER(DllLibAmplayer, "libamplayer.so")
80 DEFINE_METHOD0(int, player_init)
81 DEFINE_METHOD2(int, player_start, (play_control_t *p1, unsigned long p2))
82 DEFINE_METHOD1(int, player_stop, (int p1))
83 DEFINE_METHOD1(int, player_stop_async, (int p1))
84 DEFINE_METHOD1(int, player_exit, (int p1))
85 DEFINE_METHOD1(int, player_pause, (int p1))
86 DEFINE_METHOD1(int, player_resume, (int p1))
87 DEFINE_METHOD2(int, player_timesearch, (int p1, float p2))
88 DEFINE_METHOD2(int, player_forward, (int p1, int p2))
89 DEFINE_METHOD2(int, player_backward, (int p1, int p2))
90 DEFINE_METHOD2(int, player_aid, (int p1, int p2))
91 DEFINE_METHOD2(int, player_sid, (int p1, int p2))
92 DEFINE_METHOD0(int, player_progress_exit)
93 DEFINE_METHOD1(int, player_list_allpid, (pid_info_t *p1))
94 DEFINE_METHOD1(int, check_pid_valid, (int p1))
95 DEFINE_METHOD2(int, player_get_play_info, (int p1, player_info_t *p2))
96 DEFINE_METHOD2(int, player_get_media_info, (int p1, media_info_t *p2))
97 DEFINE_METHOD1(int, player_video_overlay_en, (unsigned int p1))
98 DEFINE_METHOD1(int, player_start_play, (int p1))
99 DEFINE_METHOD1(player_status, player_get_state, (int p1))
100 DEFINE_METHOD1(unsigned int, player_get_extern_priv,(int p1))
101 DEFINE_METHOD2(int, player_enable_autobuffer, (int p1, int p2))
102 DEFINE_METHOD4(int, player_set_autobuffer_level, (int p1, float p2, float p3, float p4))
103 DEFINE_METHOD3(int, player_register_update_callback, (callback_t *p1, update_state_fun_t p2, int p3))
104 DEFINE_METHOD1(char*, player_status2str, (player_status p1))
106 DEFINE_METHOD2(int, audio_set_volume, (int p1, float p2))
107 DEFINE_METHOD2(int, audio_set_delay, (int p1, int p2))
109 DEFINE_METHOD0(int, codec_open_sub_read)
110 DEFINE_METHOD1(int, codec_close_sub_fd, (int p1))
111 DEFINE_METHOD1(int, codec_get_sub_size_fd, (int p1))
112 DEFINE_METHOD3(int, codec_read_sub_data_fd,(int p1, char *p2, unsigned int p3))
114 DEFINE_METHOD2(int, av_register_protocol2, (AML_URLProtocol *p1, int p2))
116 BEGIN_METHOD_RESOLVE()
117 RESOLVE_METHOD(player_init)
118 RESOLVE_METHOD(player_start)
119 RESOLVE_METHOD(player_stop)
120 RESOLVE_METHOD(player_stop_async)
121 RESOLVE_METHOD(player_exit)
122 RESOLVE_METHOD(player_pause)
123 RESOLVE_METHOD(player_resume)
124 RESOLVE_METHOD(player_timesearch)
125 RESOLVE_METHOD(player_forward)
126 RESOLVE_METHOD(player_backward)
127 RESOLVE_METHOD(player_aid)
128 RESOLVE_METHOD(player_sid)
129 RESOLVE_METHOD(player_progress_exit)
130 RESOLVE_METHOD(player_list_allpid)
131 RESOLVE_METHOD(check_pid_valid)
132 RESOLVE_METHOD(player_get_play_info)
133 RESOLVE_METHOD(player_get_media_info)
134 RESOLVE_METHOD(player_video_overlay_en)
135 RESOLVE_METHOD(player_start_play)
136 RESOLVE_METHOD(player_get_state)
137 RESOLVE_METHOD(player_get_extern_priv)
138 RESOLVE_METHOD(player_enable_autobuffer)
139 RESOLVE_METHOD(player_set_autobuffer_level)
140 RESOLVE_METHOD(player_register_update_callback)
141 RESOLVE_METHOD(player_status2str)
143 RESOLVE_METHOD(audio_set_volume)
144 RESOLVE_METHOD(audio_set_delay)
146 RESOLVE_METHOD(codec_open_sub_read)
147 RESOLVE_METHOD(codec_close_sub_fd)
148 RESOLVE_METHOD(codec_get_sub_size_fd)
149 RESOLVE_METHOD(codec_read_sub_data_fd)
151 RESOLVE_METHOD(av_register_protocol2)