luat_multimedia_codec.h 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. /******************************************************************************
  2. * multimedia 编解码抽象层
  3. *****************************************************************************/
  4. #ifndef __LUAT_MULTIMEDIA_CODEC_H__
  5. #define __LUAT_MULTIMEDIA_CODEC_H__
  6. #include "luat_base.h"
  7. #ifdef __LUATOS__
  8. #include "luat_zbuff.h"
  9. #define LUAT_M_CODE_TYPE "MCODER*"
  10. #endif
  11. #define MP3_FRAME_LEN 4 * 1152
  12. #define MP3_MAX_CODED_FRAME_SIZE 1792
  13. enum{
  14. LUAT_MULTIMEDIA_DATA_TYPE_NONE,
  15. LUAT_MULTIMEDIA_DATA_TYPE_PCM,
  16. LUAT_MULTIMEDIA_DATA_TYPE_MP3,
  17. LUAT_MULTIMEDIA_DATA_TYPE_WAV,
  18. LUAT_MULTIMEDIA_DATA_TYPE_AMR_NB,
  19. LUAT_MULTIMEDIA_DATA_TYPE_AMR_WB,
  20. LUAT_MULTIMEDIA_DATA_TYPE_ULAW,
  21. LUAT_MULTIMEDIA_DATA_TYPE_ALAW
  22. };
  23. enum{
  24. LUAT_MULTIMEDIA_CB_AUDIO_DECODE_START, //开始解码文件
  25. LUAT_MULTIMEDIA_CB_AUDIO_OUTPUT_START, //开始输出解码后的音数据
  26. LUAT_MULTIMEDIA_CB_AUDIO_NEED_DATA, //底层驱动播放播放完一部分数据,需要更多数据
  27. LUAT_MULTIMEDIA_CB_AUDIO_DONE, //底层驱动播放完全部数据了
  28. LUAT_MULTIMEDIA_CB_DECODE_DONE, //音频解码完成
  29. LUAT_MULTIMEDIA_CB_TTS_INIT, //TTS做完了必要的初始化,用户可以通过audio_play_tts_set_param做个性化配置
  30. LUAT_MULTIMEDIA_CB_TTS_DONE, //TTS编码完成了。注意不是播放完成
  31. LUAT_MULTIMEDIA_CB_RECORD_DATA, //录音数据
  32. LUAT_MULTIMEDIA_CB_RECORD_DONE, //录音完成
  33. };
  34. enum{
  35. LUAT_CODEC_VDDA_3V3,
  36. LUAT_CODEC_VDDA_1V8,
  37. };
  38. #include <stddef.h>
  39. #include <stdio.h>
  40. #ifndef __BSP_COMMON_H__
  41. #include "c_common.h"
  42. #endif
  43. typedef struct{
  44. union{
  45. void *mp3_decoder;
  46. uint32_t read_len;
  47. void *amr_coder;
  48. };
  49. FILE* fd;
  50. #ifdef __LUATOS__
  51. luat_zbuff_t buff;
  52. #endif
  53. Buffer_Struct file_data_buffer;
  54. Buffer_Struct audio_data_buffer;
  55. uint8_t type;
  56. uint8_t is_decoder;
  57. }luat_multimedia_codec_t;
  58. typedef struct luat_multimedia_cb {
  59. int function_ref;
  60. } luat_multimedia_cb_t;
  61. void *mp3_decoder_create(void);
  62. void mp3_decoder_init(void *decoder);
  63. void mp3_decoder_set_debug(void *decoder, uint8_t onoff);
  64. int mp3_decoder_get_info(void *decoder, const uint8_t *input, uint32_t len, uint32_t *hz, uint8_t *channel);
  65. int mp3_decoder_get_data(void *decoder, const uint8_t *input, uint32_t len, int16_t *pcm, uint32_t *out_len, uint32_t *hz, uint32_t *used);
  66. #ifdef __LUATOS__
  67. int l_multimedia_raw_handler(lua_State *L, void* ptr);
  68. #endif
  69. #endif