blob: caa859ce8cb9d712b95722ec8d16a5745631cfd8
1 | /* |
2 | * Copyright (c) 2014 Amlogic, Inc. All rights reserved. |
3 | * |
4 | * This source code is subject to the terms and conditions defined in the |
5 | * file 'LICENSE' which is part of this source code package. |
6 | * |
7 | * Description: |
8 | */ |
9 | |
10 | |
11 | #define LOG_TAG "media_ctl" |
12 | #include <stdio.h> |
13 | #include <stdlib.h> |
14 | #include <fcntl.h> |
15 | #include <string.h> |
16 | #include <unistd.h> |
17 | #include <sys/ioctl.h> |
18 | #include <errno.h> |
19 | #include <cutils/log.h> |
20 | #include <../mediaconfig/media_config.h> |
21 | #include <amports/amstream.h> |
22 | #include "common_ctl.h" |
23 | #include <media_ctl.h> |
24 | #include <video_ctl.h> |
25 | |
26 | #ifdef __cplusplus |
27 | extern "C" { |
28 | #endif |
29 | |
30 | static int mediactl_set_black_policy(const char* path, int blackout) |
31 | { |
32 | int para=blackout; |
33 | if (path == NULL) |
34 | return -1; |
35 | return media_video_set_int(AMSTREAM_IOC_SET_BLACKOUT_POLICY, para); |
36 | } |
37 | |
38 | static int mediactl_get_black_policy(const char* path) |
39 | { |
40 | if (path == NULL) |
41 | return -1; |
42 | return media_video_get_int(AMSTREAM_IOC_GET_BLACKOUT_POLICY); |
43 | } |
44 | |
45 | static int mediactl_get_disable_video(const char* path) |
46 | { |
47 | if (path == NULL) |
48 | return -1; |
49 | return media_video_get_int(AMSTREAM_IOC_GET_VIDEO_DISABLE); |
50 | } |
51 | |
52 | static int mediactl_set_disable_video(const char* path, int mode) |
53 | { |
54 | int para=mode; |
55 | if (path == NULL) |
56 | return -1; |
57 | return media_video_set_int(AMSTREAM_IOC_SET_VIDEO_DISABLE, para); |
58 | } |
59 | |
60 | static int mediactl_set_screen_mode(const char* path, int mode) |
61 | { |
62 | int para=mode; |
63 | if (path == NULL) |
64 | return -1; |
65 | return media_video_set_int(AMSTREAM_IOC_SET_SCREEN_MODE, para); |
66 | } |
67 | |
68 | static int mediactl_get_screen_mode(const char* path) |
69 | { |
70 | if (path == NULL) |
71 | return -1; |
72 | return media_video_get_int(AMSTREAM_IOC_GET_SCREEN_MODE); |
73 | } |
74 | |
75 | static int mediactl_clear_video_buf( const char * path, int val) |
76 | { |
77 | int para=val; |
78 | if (path == NULL) |
79 | return -1; |
80 | return media_video_set_int(AMSTREAM_IOC_CLEAR_VBUF, para); |
81 | } |
82 | int mediactl_get_subtitle_fps(const char* path) |
83 | { |
84 | if (path == NULL) |
85 | return -1; |
86 | return media_sub_getinfo(SUB_FPS); |
87 | } |
88 | |
89 | int mediactl_set_subtitle_fps(const char * path,int fps) |
90 | { |
91 | if (path == NULL) |
92 | return -1; |
93 | return media_sub_setinfo(SUB_FPS, fps); |
94 | } |
95 | |
96 | int mediactl_get_subtitle_total(const char * path) |
97 | { |
98 | if (path == NULL) |
99 | return -1; |
100 | return media_sub_getinfo(SUB_TOTAL); |
101 | } |
102 | |
103 | int mediactl_set_subtitle_total(const char * path, int total) |
104 | { |
105 | if (path == NULL) |
106 | return -1; |
107 | return media_sub_setinfo(SUB_TOTAL, total); |
108 | } |
109 | |
110 | int mediactl_get_subtitle_enable(const char * path) |
111 | { |
112 | if (path == NULL) |
113 | return -1; |
114 | return media_sub_getinfo(SUB_ENABLE); |
115 | } |
116 | |
117 | int mediactl_set_subtitle_enable(const char * path,int enable) |
118 | { |
119 | if (path == NULL) |
120 | return -1; |
121 | return media_sub_setinfo(SUB_ENABLE, enable); |
122 | } |
123 | |
124 | int mediactl_get_subtitle_index(const char * path) |
125 | { |
126 | if (path == NULL) |
127 | return -1; |
128 | return media_sub_getinfo(SUB_INDEX); |
129 | } |
130 | |
131 | int mediactl_set_subtitle_index(const char * path,int index) |
132 | { |
133 | if (path == NULL) |
134 | return -1; |
135 | return media_sub_setinfo(SUB_INDEX, index); |
136 | } |
137 | |
138 | int mediactl_get_subtitle_width(const char * path) |
139 | { |
140 | if (path == NULL) |
141 | return -1; |
142 | return media_sub_getinfo(SUB_WIDTH); |
143 | } |
144 | |
145 | int mediactl_set_subtitle_width(const char * path, int width) |
146 | { |
147 | if (path == NULL) |
148 | return -1; |
149 | return media_sub_setinfo(SUB_WIDTH, width); |
150 | } |
151 | |
152 | int mediactl_get_subtitle_height(const char * path) |
153 | { |
154 | if (path == NULL) |
155 | return -1; |
156 | return media_sub_getinfo(SUB_HEIGHT); |
157 | } |
158 | |
159 | int mediactl_set_subtitle_height(const char * path, int height) |
160 | { |
161 | if (path == NULL) |
162 | return -1; |
163 | return media_sub_setinfo(SUB_HEIGHT, height); |
164 | } |
165 | |
166 | int mediactl_get_subtitle_subtype(const char * path) |
167 | { |
168 | if (path == NULL) |
169 | return -1; |
170 | return media_sub_getinfo(SUB_SUBTYPE); |
171 | } |
172 | |
173 | int mediactl_set_subtitle_subtype(const char * path, int type) |
174 | { |
175 | if (path == NULL) |
176 | return -1; |
177 | return media_sub_setinfo(SUB_SUBTYPE, type); |
178 | } |
179 | |
180 | int mediactl_get_subtitle_curr(const char * path) |
181 | { |
182 | if (path == NULL) |
183 | return -1; |
184 | return media_sub_getinfo(SUB_CURRENT); |
185 | } |
186 | |
187 | int mediactl_set_subtitle_curr(const char * path, int num) |
188 | { |
189 | if (path == NULL) |
190 | return -1; |
191 | return media_sub_setinfo(SUB_CURRENT, num); |
192 | } |
193 | |
194 | int mediactl_get_subtitle_startpts(const char * path) |
195 | { |
196 | if (path == NULL) |
197 | return -1; |
198 | return media_sub_getinfo(SUB_START_PTS); |
199 | } |
200 | |
201 | int mediactl_set_subtitle_startpts(const char * path, int startpts) |
202 | { |
203 | if (path == NULL) |
204 | return -1; |
205 | return media_sub_setinfo(SUB_START_PTS, startpts); |
206 | } |
207 | |
208 | static MediaCtlPool Mediactl_SetPool[] = { |
209 | {"/sys/class/tsync/enable","media.tsync.enable", |
210 | media_set_ctl,media_get_ctl, |
211 | media_set_ctl_str,media_get_ctl_str}, |
212 | {"/sys/class/tsync/slowsync_enable","media.tsync.slowsync_enable", |
213 | media_set_ctl,media_get_ctl, |
214 | media_set_ctl_str,media_get_ctl_str}, |
215 | {"/sys/class/tsync/startsync_mode","media.tsync.startsync_mode", |
216 | media_set_ctl,media_get_ctl, |
217 | media_set_ctl_str,media_get_ctl_str}, |
218 | {"/sys/class/tsync/av_threshold_min","media.tsync.av_threshold_min", |
219 | media_set_ctl,media_get_ctl, |
220 | media_set_ctl_str,media_get_ctl_str}, |
221 | {"/sys/class/tsync/vpause_flag","media.tsync.vpause_flag", |
222 | media_set_ctl,media_get_ctl, |
223 | media_set_ctl_str,media_get_ctl_str}, |
224 | {"/sys/class/tsync/pts_pcrscr","media.tsync.pts_pcrscr", |
225 | media_set_ctl,media_get_ctl, |
226 | media_set_ctl_str,media_get_ctl_str}, |
227 | {"/sys/class/tsync/pts_video","media.tsync.pts_video", |
228 | media_set_ctl,media_get_ctl, |
229 | media_set_ctl_str,media_get_ctl_str}, |
230 | {"/sys/class/tsync/pts_audio","media.tsync.pts_audio", |
231 | media_set_ctl,media_get_ctl, |
232 | media_set_ctl_str,media_get_ctl_str}, |
233 | {"/sys/class/tsync/vpause_flag","media.tsync.vpause_flag", |
234 | media_set_ctl,media_get_ctl, |
235 | media_set_ctl_str,media_get_ctl_str}, |
236 | {"/sys/class/tsync/mode","media.tsync.mode", |
237 | media_set_ctl,media_get_ctl, |
238 | media_set_ctl_str,media_get_ctl_str}, |
239 | {"/sys/class/tsync/firstapts","media.tsync.firstapts", |
240 | media_set_ctl,media_get_ctl, |
241 | media_set_ctl_str,media_get_ctl_str}, |
242 | {"/sys/class/tsync/event","media.tsync.event", |
243 | media_set_ctl,media_get_ctl, |
244 | media_set_ctl_str,media_get_ctl_str}, |
245 | {"/sys/class/tsync/discontinue","media.tsync.discontinue", |
246 | media_set_ctl,media_get_ctl, |
247 | media_set_ctl_str,media_get_ctl_str}, |
248 | {"/sys/class/tsync/dobly_av_sync","media.tsync.dobly_av_sync", |
249 | media_set_ctl,media_get_ctl, |
250 | media_set_ctl_str,media_get_ctl_str}, |
251 | {"/sys/class/tsync/pcr_recover","media.tsync.pcr_recover", |
252 | media_set_ctl,media_get_ctl, |
253 | media_set_ctl_str,media_get_ctl_str}, |
254 | {"/sys/class/tsync/debug_pts_checkin","media.tsync.debug_pts_checkin", |
255 | media_set_ctl,media_get_ctl, |
256 | media_set_ctl_str,media_get_ctl_str}, |
257 | {"/sys/class/tsync/debug_pts_checkout","media.tsync.debug_pts_checkout", |
258 | media_set_ctl,media_get_ctl, |
259 | media_set_ctl_str,media_get_ctl_str}, |
260 | {"/sys/class/tsync/debug_video_pts","media.tsync.debug_video_pts", |
261 | media_set_ctl,media_get_ctl, |
262 | media_set_ctl_str,media_get_ctl_str}, |
263 | {"/sys/class/tsync/debug_audio_pts","media.tsync.debug_audio_pts", |
264 | media_set_ctl,media_get_ctl, |
265 | media_set_ctl_str,media_get_ctl_str}, |
266 | {"/sys/class/tsync/av_threshold_max","media.tsync.av_threshold_max", |
267 | media_set_ctl,media_get_ctl, |
268 | media_set_ctl_str,media_get_ctl_str}, |
269 | {"/sys/class/tsync/last_checkin_apts","media.tsync.last_checkin_apts", |
270 | media_set_ctl,media_get_ctl, |
271 | media_set_ctl_str,media_get_ctl_str}, |
272 | {"/sys/class/tsync/firstvpts","media.tsync.firstvpts", |
273 | media_set_ctl,media_get_ctl, |
274 | media_set_ctl_str,media_get_ctl_str}, |
275 | {"/sys/class/tsync/checkin_firstvpts","media.tsync.checkin_firstvpts", |
276 | media_set_ctl,media_get_ctl, |
277 | media_set_ctl_str,media_get_ctl_str}, |
278 | {"/sys/class/audiodsp/digital_raw","/sys/class/audiodsp/digital_raw", |
279 | media_set_ctl,media_get_ctl, |
280 | media_set_ctl_str,media_get_ctl_str}, |
281 | {"/sys/class/audiodsp/ac3_drc_control","media.audio.audiodsp.ac3_drc_control", |
282 | media_set_ctl,media_get_ctl, |
283 | media_set_ctl_str,media_get_ctl_str}, |
284 | {"/sys/class/audiodsp/audio_samesource","media.audio.audiodsp.audio_samesource", |
285 | media_set_ctl,media_get_ctl, |
286 | media_set_ctl_str,media_get_ctl_str}, |
287 | {"/sys/class/audiodsp/codec_fatal_err","/sys/class/audiodsp/codec_fatal_err", |
288 | media_set_ctl,media_get_ctl, |
289 | media_set_ctl_str,media_get_ctl_str}, |
290 | {"/sys/class/audiodsp/digital_codec","media.audio.audiodsp.digital_codec", |
291 | media_set_ctl,media_get_ctl, |
292 | media_set_ctl_str,media_get_ctl_str}, |
293 | {"/sys/class/audiodsp/dts_dec_control","media.audio.audiodsp.dts_dec_control", |
294 | media_set_ctl,media_get_ctl, |
295 | media_set_ctl_str,media_get_ctl_str}, |
296 | {"/sys/module/amvideo/parameters/new_frame_count","media.video.new_frame_count", |
297 | media_set_ctl,media_get_ctl, |
298 | media_set_ctl_str,media_get_ctl_str}, |
299 | {"/sys/module/amvideo/parameters/hdmi_in_onvideo","media.video.hdmi_in_onvideo", |
300 | media_set_ctl,media_get_ctl, |
301 | media_set_ctl_str,media_get_ctl_str}, |
302 | {"/sys/module/amvideo/parameters/pause_one_3d_fl_frame","media.video.pause_one_3d_fl_frame", |
303 | media_set_ctl,media_get_ctl, |
304 | media_set_ctl_str,media_get_ctl_str}, |
305 | {"/sys/module/amvideo/parameters/pause_one_3d_fl_frame","media.video.pause_one_3d_fl_frame", |
306 | media_set_ctl,media_get_ctl, |
307 | media_set_ctl_str,media_get_ctl_str}, |
308 | {"/sys/module/amvideo/parameters/debug_flag","media.video.debug_flag", |
309 | media_set_ctl,media_get_ctl, |
310 | media_set_ctl_str,media_get_ctl_str}, |
311 | {"/sys/module/amvideo/parameters/force_3d_scaler","media.video.force_3d_scaler", |
312 | media_set_ctl,media_get_ctl, |
313 | media_set_ctl_str,media_get_ctl_str}, |
314 | {"/sys/module/amvideo/parameters/video_3d_format","media.video.video_3d_format", |
315 | media_set_ctl,media_get_ctl, |
316 | media_set_ctl_str,media_get_ctl_str}, |
317 | {"/sys/module/amvideo/parameters/vsync_enter_line_max","media.video.vsync_enter_line_max", |
318 | media_set_ctl,media_get_ctl, |
319 | media_set_ctl_str,media_get_ctl_str}, |
320 | {"/sys/module/amvideo/parameters/vsync_enter_line_max","media.video.vsync_enter_line_max", |
321 | media_set_ctl,media_get_ctl, |
322 | media_set_ctl_str,media_get_ctl_str}, |
323 | {"/sys/module/amvideo/parameters/vsync_exit_line_max","media.video.vsync_exit_line_max", |
324 | media_set_ctl,media_get_ctl, |
325 | media_set_ctl_str,media_get_ctl_str}, |
326 | {"/sys/module/amvideo/parameters/vsync_rdma_line_max","media.video.vsync_rdma_line_max", |
327 | media_set_ctl,media_get_ctl, |
328 | media_set_ctl_str,media_get_ctl_str}, |
329 | {"/sys/module/amvideo/parameters/underflow","media.video.underflow", |
330 | media_set_ctl,media_get_ctl, |
331 | media_set_ctl_str,media_get_ctl_str}, |
332 | {"/sys/module/amvideo/parameters/next_peek_underflow","media.video.next_peek_underflow", |
333 | media_set_ctl,media_get_ctl, |
334 | media_set_ctl_str,media_get_ctl_str}, |
335 | {"/sys/module/amvideo/parameters/smooth_sync_enable","media.video.smooth_sync_enable", |
336 | media_set_ctl,media_get_ctl, |
337 | media_set_ctl_str,media_get_ctl_str}, |
338 | {"/sys/module/amvideo/parameters/hdmi_in_onvideo","media.video.hdmi_in_onvideo", |
339 | media_set_ctl,media_get_ctl, |
340 | media_set_ctl_str,media_get_ctl_str}, |
341 | {"/sys/module/amvideo/parameters/video_play_clone_rate","media.video.video_play_clone_rate", |
342 | media_set_ctl,media_get_ctl, |
343 | media_set_ctl_str,media_get_ctl_str}, |
344 | {"/sys/module/amvideo/parameters/android_clone_rate","media.video.android_clone_rate", |
345 | media_set_ctl,media_get_ctl, |
346 | media_set_ctl_str,media_get_ctl_str}, |
347 | {"/sys/module/amvideo/parameters/noneseamless_play_clone_rate","media.video.noneseamless_play_clone_rate", |
348 | media_set_ctl,media_get_ctl, |
349 | media_set_ctl_str,media_get_ctl_str}, |
350 | {"/sys/module/amvideo/parameters/cur_dev_idx","media.video.cur_dev_idx", |
351 | media_set_ctl,media_get_ctl, |
352 | media_set_ctl_str,media_get_ctl_str}, |
353 | {"/sys/module/amvideo/parameters/omx_pts","media.video.omx_pts", |
354 | media_set_ctl,media_get_ctl, |
355 | media_set_ctl_str,media_get_ctl_str}, |
356 | {"/sys/module/amvideo/parameters/omx_pts_interval_upper","media.video.omx_pts_interval_upper", |
357 | media_set_ctl,media_get_ctl, |
358 | media_set_ctl_str,media_get_ctl_str}, |
359 | {"/sys/module/amvideo/parameters/bypass_pps","media.video.bypass_pps", |
360 | media_set_ctl,media_get_ctl, |
361 | media_set_ctl_str,media_get_ctl_str}, |
362 | {"/sys/module/amvideo/parameters/platform_type","media.video.platform_type", |
363 | media_set_ctl,media_get_ctl, |
364 | media_set_ctl_str,media_get_ctl_str}, |
365 | {"/sys/module/amvideo/parameters/process_3d_type","media.video.process_3d_type", |
366 | media_set_ctl,media_get_ctl, |
367 | media_set_ctl_str,media_get_ctl_str}, |
368 | {"/sys/module/amvideo/parameters/framepacking_support","media.video.framepacking_support", |
369 | media_set_ctl,media_get_ctl, |
370 | media_set_ctl_str,media_get_ctl_str}, |
371 | {"/sys/module/amvideo/parameters/framepacking_width","media.video.framepacking_width", |
372 | media_set_ctl,media_get_ctl, |
373 | media_set_ctl_str,media_get_ctl_str}, |
374 | {"/sys/module/amvideo/parameters/framepacking_height","media.video.framepacking_height", |
375 | media_set_ctl,media_get_ctl, |
376 | media_set_ctl_str,media_get_ctl_str}, |
377 | {"/sys/module/amvideo/parameters/framepacking_blank","media.video.framepacking_blank", |
378 | media_set_ctl,media_get_ctl, |
379 | media_set_ctl_str,media_get_ctl_str}, |
380 | {"/sys/module/amvideo/parameters/reverse","media.video.reverse", |
381 | media_set_ctl,media_get_ctl, |
382 | media_set_ctl_str,media_get_ctl_str}, |
383 | {"/sys/module/amvdec_h265/parameters/double_write_mode","media.decoder.h265.double_write_mode", |
384 | media_set_ctl,media_get_ctl, |
385 | media_set_ctl_str,media_get_ctl_str}, |
386 | {"/sys/module/amvdec_h265/parameters/buf_alloc_width","media.decoder.h265.buf_alloc_width", |
387 | media_set_ctl,media_get_ctl, |
388 | media_set_ctl_str,media_get_ctl_str}, |
389 | {"/sys/module/amvdec_h265/parameters/buf_alloc_height","media.decoder.h265.buf_alloc_height", |
390 | media_set_ctl,media_get_ctl, |
391 | media_set_ctl_str,media_get_ctl_str}, |
392 | {"/sys/module/amvdec_h265/parameters/buffer_mode","media.decoder.h265.buffer_mode", |
393 | media_set_ctl,media_get_ctl, |
394 | media_set_ctl_str,media_get_ctl_str}, |
395 | {"/sys/module/amvdec_h265/parameters/dynamic_buf_num_margin","media.decoder.h265.dynamic_buf_num_margin", |
396 | media_set_ctl,media_get_ctl, |
397 | media_set_ctl_str,media_get_ctl_str}, |
398 | {"/sys/module/amvdec_h265/parameters/debug","media.decoder.h265.debug", |
399 | media_set_ctl,media_get_ctl, |
400 | media_set_ctl_str,media_get_ctl_str}, |
401 | {"/sys/module/amvdec_vp9/parameters/double_write_mode","media.decoder.vp9.double_write_mode", |
402 | media_set_ctl,media_get_ctl, |
403 | media_set_ctl_str,media_get_ctl_str}, |
404 | {"/sys/module/amvdec_vp9/parameters/buf_alloc_width","media.decoder.vp9.buf_alloc_width", |
405 | media_set_ctl,media_get_ctl, |
406 | media_set_ctl_str,media_get_ctl_str}, |
407 | {"/sys/module/amvdec_vp9/parameters/buf_alloc_height","media.decoder.vp9.buf_alloc_height", |
408 | media_set_ctl,media_get_ctl, |
409 | media_set_ctl_str,media_get_ctl_str}, |
410 | {"/sys/class/vfm/map","media.vfm.map", |
411 | media_set_ctl,media_get_ctl, |
412 | media_set_ctl_str,media_get_ctl_str}, |
413 | {"/sys/class/video/video_seek_flag","media.video.video_seek_flag", |
414 | media_set_ctl,media_get_ctl, |
415 | media_set_ctl_str,media_get_ctl_str}, |
416 | {"/sys/class/video/slowsync_repeat_enable","media.video.slowsync_repeat_enable", |
417 | media_set_ctl,media_get_ctl, |
418 | media_set_ctl_str,media_get_ctl_str}, |
419 | {"/sys/class/video/show_first_frame_nosync","media.video.show_first_frame_nosync", |
420 | media_set_ctl,media_get_ctl, |
421 | media_set_ctl_str,media_get_ctl_str}, |
422 | {"/sys/class/amstream/videobufused","media.amports.videobufused", |
423 | media_set_ctl,media_get_ctl, |
424 | media_set_ctl_str,media_get_ctl_str}, |
425 | {"/sys/class/vdec/poweron_clock_level","media.decoder.vdec.poweron_clock_level", |
426 | media_set_ctl,media_get_ctl, |
427 | media_set_ctl_str,media_get_ctl_str}, |
428 | {"/sys/class/codec_mm/tvp_enable","media.codec_mm.trigger.tvp_enable", |
429 | media_set_ctl,media_get_ctl, |
430 | media_set_ctl_str,media_get_ctl_str}, |
431 | {"/sys/class/codec_mm/fastplay","media.codec_mm.trigger.fastplay", |
432 | media_set_ctl,media_get_ctl, |
433 | media_set_ctl_str,media_get_ctl_str}, |
434 | {"/sys/class/codec_mm/debug","media.codec_mm.trigger.debug", |
435 | media_set_ctl,media_get_ctl, |
436 | media_set_ctl_str,media_get_ctl_str}, |
437 | {"/sys/class/video/blackout_policy","/dev/amvideo", |
438 | mediactl_set_black_policy,mediactl_get_black_policy, |
439 | NULL,NULL}, |
440 | {"/sys/class/video/screen_mode","/dev/amvideo", |
441 | mediactl_set_screen_mode,mediactl_get_screen_mode, |
442 | NULL,NULL}, |
443 | {"/sys/class/video/disable_video","/dev/amvideo", |
444 | mediactl_set_disable_video,mediactl_get_disable_video, |
445 | NULL,NULL}, |
446 | {"/sys/class/video/clear_video_buf","/dev/amvideo", |
447 | mediactl_clear_video_buf,NULL, |
448 | NULL,NULL}, |
449 | {"/sys/class/subtitle/fps","/dev/amsubtitle", |
450 | mediactl_set_subtitle_fps,mediactl_get_subtitle_fps, |
451 | NULL,NULL}, |
452 | {"/sys/class/subtitle/total","/dev/amsubtitle", |
453 | mediactl_set_subtitle_total,mediactl_get_subtitle_total, |
454 | NULL,NULL}, |
455 | {"/sys/class/subtitle/curr","/dev/amsubtitle", |
456 | mediactl_set_subtitle_curr,mediactl_get_subtitle_curr, |
457 | NULL,NULL}, |
458 | {"/sys/class/subtitle/subtype","/dev/amsubtitle", |
459 | mediactl_set_subtitle_subtype,mediactl_get_subtitle_subtype, |
460 | NULL,NULL}, |
461 | {"/sys/class/subtitle/startpts","/dev/amsubtitle", |
462 | mediactl_set_subtitle_startpts,mediactl_get_subtitle_startpts, |
463 | NULL,NULL}, |
464 | {"/sys/class/subtitle/index","/dev/amsubtitle", |
465 | mediactl_set_subtitle_index,mediactl_get_subtitle_index, |
466 | NULL,NULL}, |
467 | {NULL, NULL, NULL, NULL, NULL, NULL} |
468 | }; |
469 | |
470 | int mediactl_set_str_func(const char* path, char* val) |
471 | { |
472 | MediaCtlPool *p = Mediactl_SetPool; |
473 | int ret = UnSupport; |
474 | while (p && p->device) { |
475 | if (!strcmp(p->device, path)) { |
476 | if (p->mediactl_setstr) { |
477 | ret = p->mediactl_setstr(p->path,val); |
478 | } |
479 | break; |
480 | } |
481 | p++; |
482 | } |
483 | return ret; |
484 | } |
485 | |
486 | int mediactl_get_str_func(const char* path, char* valstr, int size) |
487 | { |
488 | MediaCtlPool *p = Mediactl_SetPool; |
489 | int ret = UnSupport; |
490 | while (p && p->device) { |
491 | if (!strcmp(p->device, path)) { |
492 | if (p->mediactl_getstr) { |
493 | ret = p->mediactl_getstr(p->path,valstr,size); |
494 | } |
495 | break; |
496 | } |
497 | p++; |
498 | } |
499 | return ret; |
500 | } |
501 | |
502 | int mediactl_set_int_func(const char* path, int val) |
503 | { |
504 | MediaCtlPool *p = Mediactl_SetPool; |
505 | int ret = UnSupport; |
506 | while (p && p->device) { |
507 | if (!strcmp(p->device, path)) { |
508 | if (p->mediactl_setval) { |
509 | ret = p->mediactl_setval(p->path,val); |
510 | } |
511 | break; |
512 | } |
513 | p++; |
514 | } |
515 | return ret; |
516 | } |
517 | |
518 | int mediactl_get_int_func(const char* path) |
519 | { |
520 | MediaCtlPool *p = Mediactl_SetPool; |
521 | int ret = UnSupport; |
522 | while (p && p->device) { |
523 | if (!strcmp(p->device, path)) { |
524 | if (p->mediactl_getval) { |
525 | ret = p->mediactl_getval(p->path); |
526 | } |
527 | break; |
528 | } |
529 | p++; |
530 | } |
531 | return ret; |
532 | } |
533 | |
534 | #ifdef __cplusplus |
535 | } |
536 | #endif |