media_player.h 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748
  1. /*
  2. * Copyright (c) 2018 Actions Semiconductor Co., Ltd
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. */
  6. /**
  7. * @file Media player interface
  8. */
  9. #ifndef __MEDIA_PLAYER_H__
  10. #define __MEDIA_PLAYER_H__
  11. #ifdef __cplusplus
  12. extern "C" {
  13. #endif
  14. #include <media_type.h>
  15. #include <stream.h>
  16. #include <media_service.h>
  17. /**
  18. * @defgroup media_player_apis Media Player APIs
  19. * @ingroup media_system_apis
  20. * @{
  21. */
  22. /** media player type */
  23. typedef enum {
  24. /** media player type: only support playback */
  25. MEDIA_PLAYER_TYPE_PLAYBACK = 0x01,
  26. /** media player type: only support capture */
  27. MEDIA_PLAYER_TYPE_CAPTURE = 0x02,
  28. /** media player type: only support capture and playback */
  29. MEDIA_PLAYER_TYPE_CAPTURE_AND_PLAYBACK = 0x03,
  30. } media_player_type_e;
  31. /**media event type*/
  32. typedef enum {
  33. PLAYBACK_EVENT_OPEN,
  34. PLAYBACK_EVENT_DATA_INDICATE,
  35. PLAYBACK_EVENT_PAUSE,
  36. PLAYBACK_EVENT_RESUME,
  37. PLAYBACK_EVENT_SEEK,
  38. PLAYBACK_EVENT_STOP_INTERUPT,
  39. PLAYBACK_EVENT_STOP_COMPLETE,
  40. PLAYBACK_EVENT_STOP_ERROR,
  41. PLAYBACK_EVENT_CLOSE,
  42. CAPTURE_EVENT_OPEN,
  43. CAPTURE_EVENT_DATA_INDICATE,
  44. CAPTURE_EVENT_PAUSE,
  45. CAPTURE_EVENT_RESUME,
  46. CAPTURE_EVENT_STOP_INTERUPT,
  47. CAPTURE_EVENT_STOP_COMPLETE,
  48. CAPTURE_EVENT_STOP_ERROR,
  49. CAPTURE_EVENT_CLOSE,
  50. CAPTURE_EVENT_ASR,
  51. CAPTURE_EVENT_VAD,
  52. CAPTURE_EVENT_PP, /* audio processor event */
  53. PARSER_EVENT_OPEN,
  54. PARSER_EVENT_SEEK,
  55. PARSER_EVENT_STOP_COMPLETE,
  56. PARSER_EVENT_STOP_ERROR,
  57. PARSER_EVENT_CLOSE,
  58. /* player lifecycle event */
  59. PLAYER_EVENT_OPEN,
  60. PLAYER_EVENT_PLAY,
  61. PLAYER_EVENT_PAUSE,
  62. PLAYER_EVENT_RESUNE,
  63. PLAYER_EVENT_STOP,
  64. PLAYER_EVENT_CLOSE,
  65. } media_event_type_e;
  66. /** media capture mode */
  67. typedef enum {
  68. PLAYBACK_MODE_MASK = 0xf,
  69. CAPTURE_MODE_ENCODE = 0x1 << 4,
  70. CAPTURE_MODE_ASR = 0x2 << 4,
  71. CAPTURE_MODE_MASK = 0xf << 4,
  72. } media_mode_e;
  73. typedef enum {
  74. PLAYER_STATE,
  75. PLAYER_DECODE_ERROR,
  76. PLAYER_DECODE_SAMPLES,
  77. PLAYER_DECODE_DATALOST,
  78. PLAYER_DECODE_RAW,
  79. } media_player_state_e;
  80. /** media player structure */
  81. typedef struct {
  82. /** type of media player @see media_player_type_e */
  83. uint8_t type;
  84. /** flag of media player */
  85. uint8_t flag;
  86. /** tws flag of media player */
  87. uint8_t is_tws;
  88. /** dvfs level */
  89. uint8_t dvfs_level;
  90. /** handle of media service*/
  91. void *media_srv_handle;
  92. } media_player_t;
  93. /** media voice effect mode */
  94. typedef enum {
  95. VOICE_DOWNLOAD_EFFECT,
  96. VOICE_UPLOAD_EFFECT,
  97. } voice_effect_mode;
  98. /**
  99. * @brief open new media player
  100. *
  101. * This routine provides to open new media player,
  102. * support three type of media player &media_player_type_e
  103. *
  104. * @param init_param init param for open media player
  105. * @details init_param.format play back format &media_type_e;
  106. * init_param.sample_rate play back sample rate
  107. * init_param.input_indicator input stream indicator, if set input stream ,indicator may set 0;
  108. * init_param.input_stream input stream for playback, if set input indicator, input stream may create by service;
  109. * init_param.input_stream_size input stream max size
  110. * init_param.input_start_threshold input stream start threshold;
  111. * init_param.input_stop_threshold input stream stop threshold;
  112. * init_param.event_notify_handle playback event notify handle;
  113. * init_param.output_indicator output stream indicator, if set output stream ,indicator may set 0;
  114. * init_param.output_stream output stream for playback, if set output indicator, output stream may create by service;
  115. * init_param.capture_format capture encode format;
  116. * init_param.capture_sample_rate_input capture input sample rate;
  117. * init_param.capture_sample_rate_output capture out sample rate;
  118. * init_param.capture_input_indicator = AUDIO_STREAM_VOICE;
  119. * init_param.capture_input_stream = NULL;
  120. * init_param.capture_output_indicator = 0;
  121. * init_param.capture_output_stream = upload_stream;
  122. * init_param.capture_event_notify_handle capture event notify handle;
  123. * init_param.dumpable indicate support dump data;
  124. * init_param.support_tws indicate support tws;
  125. * init_param.support_csb indicate support csb;
  126. * init_param.aec_enable indicate support aec;
  127. *
  128. * @return handle of new media player
  129. */
  130. media_player_t *media_player_open(media_init_param_t *init_param);
  131. /**
  132. * @brief start play for media player
  133. *
  134. * This routine provides to start meida player play
  135. *
  136. * @param handle handle of media player
  137. *
  138. * @return 0 excute successed , others failed
  139. */
  140. int media_player_play(media_player_t *handle);
  141. /**
  142. * @brief pause for media player
  143. *
  144. * This routine provides to pause meida player
  145. *
  146. * @param handle handle of media player
  147. *
  148. * @return 0 excute successed , others failed
  149. */
  150. int media_player_pause(media_player_t *handle);
  151. /**
  152. * @brief resume for media player
  153. *
  154. * This routine provides to resume meida player
  155. *
  156. * @param handle handle of media player
  157. *
  158. * @return 0 excute successed , others failed
  159. */
  160. int media_player_resume(media_player_t *handle);
  161. /**
  162. * @brief seek for media player
  163. *
  164. * This routine provides to seek meida player.
  165. * only supported when local music play or net music play.
  166. *
  167. * @param handle handle of media player
  168. * @param info media seek info @see media_seek_info_t
  169. *
  170. * @return 0 excute successed , others failed
  171. */
  172. int media_player_seek(media_player_t *handle, media_seek_info_t *info);
  173. /**
  174. * @brief stop for media player
  175. *
  176. * This routine provides to stop meida player
  177. *
  178. * @param handle handle of media player
  179. *
  180. * @return 0 excute successed , others failed
  181. */
  182. int media_player_stop(media_player_t *handle);
  183. /**
  184. * @brief close for media player
  185. *
  186. * This routine provides to close meida player
  187. *
  188. * @param handle handle of media player
  189. *
  190. * @return 0 excute successed , others failed
  191. */
  192. int media_player_close(media_player_t *handle);
  193. /**
  194. * @brief Query media player parameter
  195. *
  196. * This routine provides to query meida player parameter
  197. *
  198. * @param handle handle of media player
  199. * @param pname query parameter name
  200. * @param param address of parameter to store query result
  201. * @param psize size of parameter buffer
  202. *
  203. * @return 0 excute successed , others failed
  204. */
  205. int media_player_get_parameter(media_player_t *handle, int pname, void *param, unsigned int psize);
  206. /**
  207. * @brief Configure media player parameter
  208. *
  209. * This routine provides to configure meida player parameter
  210. *
  211. * @param handle handle of media player
  212. * @param pname parameter name
  213. * @param param address of parameter buffer
  214. * @param psize size of parameter buffer
  215. *
  216. * @return 0 excute successed , others failed
  217. */
  218. int media_player_set_parameter(media_player_t *handle, int pname, void *param, unsigned int psize);
  219. /**
  220. * @brief Query media service global parameter
  221. *
  222. * This routine provides to query media service global parameter
  223. *
  224. * @param handle handle of media player, can be NULL
  225. * @param pname query parameter name
  226. * @param param address of parameter to store query result
  227. * @param psize size of parameter buffer
  228. *
  229. * @return 0 excute successed , others failed
  230. */
  231. int media_player_get_global_parameter(media_player_t *handle, int pname, void *param, unsigned int psize);
  232. /**
  233. * @brief Configure media service global parameter
  234. *
  235. * This routine provides to configure media service global parameter
  236. *
  237. * @param handle handle of media player, can be NULL
  238. * @param pname parameter name
  239. * @param param address of parameter buffer
  240. * @param psize size of parameter buffer
  241. *
  242. * @return 0 excute successed , others failed
  243. */
  244. int media_player_set_global_parameter(media_player_t *handle, int pname, void *param, unsigned int psize);
  245. /**
  246. * @brief Get media player media info
  247. *
  248. * This routine provides to get meida player media info
  249. *
  250. * Special case of media_player_get_parameter
  251. *
  252. * @param handle handle of media player
  253. * @param info address to store media info
  254. *
  255. * @return 0 excute successed , others failed
  256. */
  257. static inline int media_player_get_mediainfo(media_player_t *handle, media_info_t *info)
  258. {
  259. return media_player_get_parameter(handle, MEDIA_PARAM_MEDIAINFO, info, sizeof(*info));
  260. }
  261. /**
  262. * @brief Get media player playing breakpoint
  263. *
  264. * This routine provides to get meida player breakpoint
  265. *
  266. * Special case of media_player_get_parameter
  267. *
  268. * @param handle handle of media player
  269. * @param info address to store breakpoint info
  270. *
  271. * @return 0 excute successed, others failed
  272. */
  273. static inline int media_player_get_breakpoint(media_player_t *handle, media_breakpoint_info_t *info)
  274. {
  275. return media_player_get_parameter(handle, MEDIA_PARAM_BREAKPOINT, info, sizeof(*info));
  276. }
  277. /**
  278. * @brief Get media player output mode
  279. *
  280. * This routine provides to get meida player output mode. This output mode is
  281. * on the upper data stream of effect output mode.
  282. *
  283. * Special case of media_player_get_parameter
  284. *
  285. * @param handle handle of media player
  286. * @param mode address to store output mode, see media_output_mode_e
  287. *
  288. * @return 0 excute successed, others failed
  289. */
  290. static inline int media_player_get_output_mode(media_player_t *handle, int *mode)
  291. {
  292. return media_player_get_parameter(handle, MEDIA_PARAM_OUTPUT_MODE, mode, sizeof(*mode));
  293. }
  294. /**
  295. * @brief Set media player energy filter param.
  296. *
  297. * This routine provides to set media player energy filter param.
  298. *
  299. * @param handle handle of media player
  300. * @param info address of energy filter structure
  301. *
  302. * @return 0 excute successed, others failed
  303. */
  304. #if 0
  305. static inline int media_player_set_energy_filter(media_player_t *handle, energy_filter_t *info)
  306. {
  307. return media_player_set_parameter(handle, MEDIA_PARAM_ENERGY_FILTER, (void *)info, sizeof(*info));
  308. }
  309. #endif
  310. /**
  311. * @brief get effect output mode for media player
  312. *
  313. * This routine provides to get effect output mode for meida player
  314. *
  315. * @param handle handle of media player
  316. * @param mode output mode, see media_effect_output_mode_e
  317. *
  318. * @return 0 excute successed , others failed
  319. */
  320. static inline int media_player_get_effect_output_mode(media_player_t *handle, int *mode)
  321. {
  322. return media_player_get_parameter(handle, MEDIA_EFFECT_EXT_GET_DAE_OUTPUT_MODE, mode, sizeof(*mode));
  323. }
  324. /**
  325. * @brief Get media player freq point energy.
  326. *
  327. * This routine provides to get media player freq point energy.
  328. *
  329. * Special case of media_player_get_parameter
  330. *
  331. * @param handle handle of media player
  332. * @param info store the freq point energy, including the number of points and energy values.
  333. *
  334. * @return 0 excute successed , others failed
  335. */
  336. static inline int media_player_get_freqpoint_energy(media_player_t *handle, media_freqpoint_energy_info_t *info)
  337. {
  338. return media_player_get_parameter(handle, MEDIA_EFFECT_EXT_GET_FREQPOINT_ENERGY, info, sizeof(*info));
  339. }
  340. /**
  341. * @brief Set media player energy freq point.
  342. *
  343. * This routine provides to set media player energy freq point.
  344. *
  345. * Special case of media_player_get_parameter
  346. *
  347. * @param handle handle of media player
  348. * @param info set the energy freq points, including the number of points and freq values.
  349. *
  350. * @return 0 excute successed , others failed
  351. */
  352. static inline int media_player_set_energy_freqpoint(media_player_t *handle, media_freqpoint_energy_info_t *info)
  353. {
  354. return media_player_set_parameter(handle, MEDIA_EFFECT_EXT_SET_ENERGY_FREQPOINT, info, sizeof(*info));
  355. }
  356. /**
  357. * @brief Set media player output mode
  358. *
  359. * This routine provides to set meida player output mode. This output mode is
  360. * on the upper data stream of effect output mode.
  361. *
  362. * Special case of media_player_set_parameter
  363. *
  364. * @param handle handle of media player
  365. * @param mode output mode, see media_output_mode_e
  366. *
  367. * @return 0 excute successed, others failed
  368. */
  369. static inline int media_player_set_output_mode(media_player_t *handle, int mode)
  370. {
  371. return media_player_set_parameter(handle, MEDIA_PARAM_OUTPUT_MODE, (void *)mode, 0);
  372. }
  373. /**
  374. * @brief Set media player max audio lantency
  375. *
  376. * This routine provides to set meida player max audio lantency.
  377. *
  378. * Special case of media_player_set_parameter
  379. *
  380. * @param handle handle of media player
  381. * @param latency max audio lantency in ms
  382. *
  383. * @return 0 excute successed, others failed
  384. */
  385. static inline int media_player_set_audio_latency(media_player_t *handle, int latency)
  386. {
  387. return media_player_set_parameter(handle, MEDIA_PARAM_AUDIO_LATENCY, (void *)latency, 0);
  388. }
  389. /**
  390. * @brief Set media player sync play time
  391. *
  392. * This routine provides to set meida player sync play time.
  393. *
  394. * Special case of media_player_set_parameter
  395. *
  396. * @param handle handle of media player
  397. * @param bt_clk bluetooth clock time in us
  398. *
  399. * @return 0 excute successed, others failed
  400. */
  401. static inline int media_player_set_sync_play_time(media_player_t *handle, uint64_t bt_clk)
  402. {
  403. return media_player_set_parameter(handle, MEDIA_PARAM_SET_PLAY_TIME, (void *)&bt_clk, sizeof(bt_clk));
  404. }
  405. /**
  406. * @brief Get media record time
  407. *
  408. * This routine provides to get media record time in ms.
  409. *
  410. * @param handle handle of media player
  411. * @param record_time_ms record time in ms
  412. *
  413. * @return 0 excute successed, others failed
  414. */
  415. static inline int media_player_get_record_time(media_player_t *handle, uint32_t *record_time_ms)
  416. {
  417. return media_player_get_parameter(handle, MEDIA_PARAM_GET_RECORD_TIME, (void *)record_time_ms, sizeof(*record_time_ms));
  418. }
  419. /**
  420. * @brief set volume for media player
  421. *
  422. * This routine provides to set volume of meida player
  423. *
  424. * @param handle handle of media player
  425. * @param vol_l da volume level of left channel
  426. * @param vol_r da volume level of right channel
  427. *
  428. * @return 0 excute successed , others failed
  429. */
  430. static inline int media_player_set_volume(media_player_t *handle, int vol_l, int vol_r)
  431. {
  432. unsigned int volume;
  433. if(vol_l < 0) vol_l = 0;
  434. if(vol_l > 0xff) vol_l = 0xff;
  435. if(vol_r < 0) vol_r = 0;
  436. if(vol_r > 0xff) vol_r = 0xff;
  437. volume = ((vol_r & 0xff) << 8) | (vol_l & 0xff);
  438. return media_player_set_parameter(handle, MEDIA_EFFECT_EXT_SET_VOLUME, (void *)volume, 0);
  439. }
  440. /**
  441. * @brief set mic mute for media player
  442. *
  443. * This routine provides to set mic mute for meida player
  444. *
  445. * @param handle handle of media player
  446. * @param mute bool for mute or unmute
  447. *
  448. * @return 0 excute successed , others failed
  449. */
  450. static inline int media_player_set_mic_mute(media_player_t *handle, bool mute)
  451. {
  452. return media_player_set_parameter(handle, MEDIA_EFFECT_EXT_SET_MIC_MUTE, (void *)mute, 0);
  453. }
  454. /**
  455. * @brief set hfp connected flag for media player
  456. *
  457. * This routine provides to set hfp connected flag for meida player
  458. *
  459. * @param handle handle of media player
  460. * @param connected bool for connected or unconnected
  461. *
  462. * @return 0 excute successed , others failed
  463. */
  464. static inline int media_player_set_hfp_connected(media_player_t *handle, bool connected)
  465. {
  466. return media_player_set_parameter(handle, MEDIA_EFFECT_EXT_HFP_CONNECTED, (void *)connected, 0);
  467. }
  468. /**
  469. * @brief set effect enable for media player
  470. *
  471. * This routine provides to enable or disable audio effects for meida player
  472. *
  473. * @param handle handle of media player
  474. * @param enable enable or disable audio effect
  475. *
  476. * @return 0 excute successed , others failed
  477. */
  478. static inline int media_player_set_effect_enable(media_player_t *handle, bool enable)
  479. {
  480. return media_player_set_parameter(handle, MEDIA_EFFECT_EXT_SET_DAE_ENABLE, (void *)enable, 0);
  481. }
  482. /**
  483. * @brief set bt call upstream effect enable or no
  484. *
  485. * This routine provides to enable or disable upstream effect.
  486. * Default is enabled.
  487. *
  488. * @param handle handle of media player
  489. * @param enable enable or disable upstream effect
  490. *
  491. * @return 0 excute successed , others failed
  492. */
  493. static inline int media_player_set_upstream_dae_enable(media_player_t *handle, bool enable)
  494. {
  495. return media_player_set_parameter(handle, MEDIA_EFFECT_EXT_SET_UPSTREAM_DAE_ENABLE, (void *)enable, 0);
  496. }
  497. /**
  498. * @brief set effect bypass for media player
  499. *
  500. * This routine provides to bybpass audio effects for meida player, only
  501. * retain fade in/out and output mode config.
  502. *
  503. * @param handle handle of media player
  504. * @param bypass bypass audio effect or not
  505. *
  506. * @return 0 excute successed , others failed
  507. */
  508. int media_player_set_effect_bypass(bool bypass);
  509. static inline int _media_player_set_effect_bypass(media_player_t *handle, bool bypass)
  510. {
  511. return media_player_set_parameter(handle, MEDIA_EFFECT_EXT_SET_DAE_BYPASS, (void *)bypass, 0);
  512. }
  513. /**
  514. * @brief set voice effect bypass for media player
  515. *
  516. * This routine provides to bybpass audio voice effects for meida player.
  517. *
  518. * @param type handle of media player
  519. * @param bypass bypass audio effect or not
  520. *
  521. * @return 0 excute successed , others failed
  522. */
  523. int media_player_set_voice_effect_bypass(int type, bool bypass);
  524. static inline int _media_player_set_voice_effect_bypass(media_player_t *handle, uint8_t type, bool bypass)
  525. {
  526. return media_player_set_parameter(handle, MEDIA_EFFECT_EXT_SET_EFFECT_BYPASS, (void *)(type << 8 | bypass), 0);
  527. }
  528. /**
  529. * @brief set effect output mode for media player
  530. *
  531. * This routine provides to set effect output mode for meida player
  532. *
  533. * @param handle handle of media player
  534. * @param mode output mode, see media_effect_output_mode_e
  535. *
  536. * @return 0 excute successed , others failed
  537. */
  538. static inline int media_player_set_effect_output_mode(media_player_t *handle, int mode)
  539. {
  540. return media_player_set_parameter(handle, MEDIA_EFFECT_EXT_SET_DAE_OUTPUT_MODE, (void *)mode, 0);
  541. }
  542. /**
  543. * @brief update effect param for media player
  544. *
  545. * This routine provides to update effect param for media player
  546. *
  547. * @param handle handle of media player
  548. * @param param Address of effect param
  549. * @param size Size of effect param
  550. *
  551. * @return 0 excute successed , others failed
  552. */
  553. static inline int media_player_update_effect_param(media_player_t *handle, void *param, unsigned int size)
  554. {
  555. return media_player_set_parameter(handle, MEDIA_EFFECT_EXT_UPDATE_PARAM, param, size);
  556. }
  557. /**
  558. * @brief update aec param for media player
  559. *
  560. * This routine provides to update aec param for media player
  561. *
  562. * @param handle handle of media player
  563. * @param param Address of aec param
  564. * @param size Size of aec param
  565. *
  566. * @return 0 excute successed , others failed
  567. */
  568. static inline int media_player_update_aec_param(media_player_t *handle, void *param, unsigned int size)
  569. {
  570. return media_player_set_parameter(handle, MEDIA_EFFECT_EXT_UPDATE_AEC_PARAM, param, size);
  571. }
  572. /**
  573. * @brief fade in for media player
  574. *
  575. * This routine provides to fade in for media player
  576. *
  577. * @param handle handle of media player
  578. * @param fade_time_ms fadein time in ms
  579. *
  580. * @return 0 excute successed , others failed
  581. */
  582. static inline int media_player_fade_in(media_player_t *handle, int fade_time_ms)
  583. {
  584. return media_player_set_parameter(handle, MEDIA_EFFECT_EXT_FADEIN, (void *)fade_time_ms, 0);
  585. }
  586. /**
  587. * @brief fade out for media player
  588. *
  589. * This routine provides to fade out for media player
  590. *
  591. * @param handle handle of media player
  592. * @param fade_time_ms fadeout time in ms
  593. *
  594. * @return 0 excute successed , others failed
  595. */
  596. static inline int media_player_fade_out(media_player_t *handle, int fade_time_ms)
  597. {
  598. return media_player_set_parameter(handle, MEDIA_EFFECT_EXT_FADEOUT, (void *)fade_time_ms, 0);
  599. }
  600. /**
  601. * @brief dump data for media player
  602. *
  603. * This routine provides to dump data for media player
  604. *
  605. * @param handle handle of media player
  606. * @param num number of tags to dump
  607. * @param tags data tag array for dumpable data
  608. * @param bufs ring buf array to store dump data, set NULL to stop dumping
  609. *
  610. * @return 0 excute successed , others failed
  611. */
  612. int media_player_dump_data(media_player_t *handle, int num, const uint8_t tags[], struct acts_ringbuf *bufs[]);
  613. /**
  614. * @brief get current dumpable media player
  615. *
  616. * This routine provides to get current dumpable media player
  617. *
  618. * @return handle of media player @see media_player_t
  619. */
  620. media_player_t *media_player_get_current_dumpable_player(void);
  621. /**
  622. * @brief get current main media player
  623. *
  624. * This routine provides to get current main media player
  625. *
  626. * @return handle of media player @see media_player_t
  627. */
  628. media_player_t *media_player_get_current_main_player(void);
  629. /**
  630. * @brief start recording
  631. *
  632. * This routine provides start recording.
  633. *
  634. * @param handle of media player, can be NULL
  635. * @info record info
  636. *
  637. * @return 0 excute successed, others failed
  638. */
  639. static inline int media_player_start_record(media_player_t *handle, media_record_info_t *info)
  640. {
  641. return media_player_set_global_parameter(handle, MEDIA_PARAM_SET_RECORD, info, sizeof(*info));
  642. }
  643. /**
  644. * @brief stop background recording
  645. *
  646. * This routine provides start background recording.
  647. *
  648. * @param handle of media player, can be NULL
  649. *
  650. * @return 0 excute successed, others failed
  651. */
  652. static inline int media_player_stop_record(media_player_t *handle)
  653. {
  654. return media_player_set_global_parameter(handle, MEDIA_PARAM_SET_RECORD, NULL, 0);
  655. }
  656. /**
  657. * @brief Set media player lifecycle notifier
  658. *
  659. * This routine provides set lifecycle notifier, like player open/close.
  660. *
  661. *@param notify lifecycle event notify.
  662. *
  663. * @return 0 excute successed, others failed
  664. */
  665. int media_player_set_lifecycle_notifier(media_srv_event_notify_t notify);
  666. /**
  667. * @brief force stop for media player, @only test
  668. *
  669. * This routine provides to stop meida player
  670. */
  671. void media_player_force_stop(void);
  672. int media_player_set_mix_stream(media_player_t *handle, mix_service_param_t *init_param);
  673. int media_mix_pcm_stream_open(const char *url, int inrate, int outrate);
  674. int media_mix_pcm_stream_close(void);
  675. #ifdef __cplusplus
  676. }
  677. #endif
  678. /**
  679. * INTERNAL_HIDDEN @endcond
  680. */
  681. /**
  682. * @} end defgroup media_player_apis
  683. */
  684. #endif /* __MEDIA_PLAYER_H__ */