فهرست منبع

update:剥离multimedia与lua依赖
del:去掉默认音频硬件结构体
add:luat_audio_setup_codec

Dozingfiretruck 2 سال پیش
والد
کامیت
b0f4376622
3فایلهای تغییر یافته به همراه31 افزوده شده و 24 حذف شده
  1. 17 17
      components/multimedia/luat_multimedia.h
  2. 12 7
      components/multimedia/luat_multimedia_audio.c
  3. 2 0
      demo/hello_world/main.lua

+ 17 - 17
components/multimedia/luat_multimedia.h

@@ -5,10 +5,20 @@
 #define __LUAT_MULTIMEDIA_H__
 
 #include "luat_base.h"
+
+#ifdef __LUATOS__
 #include "luat_zbuff.h"
 
-enum
-{
+#define LUAT_M_CODE_TYPE "MCODER*"
+
+#endif
+
+#define MP3_FRAME_LEN 4 * 1152
+
+#define MAX_DEVICE_COUNT 2
+#define MP3_MAX_CODED_FRAME_SIZE 1792
+
+enum{
 	MULTIMEDIA_DATA_TYPE_NONE,
 	MULTIMEDIA_DATA_TYPE_PCM,
 	MULTIMEDIA_DATA_TYPE_MP3,
@@ -17,8 +27,7 @@ enum
 	MULTIMEDIA_DATA_TYPE_AMR_WB,
 };
 
-enum
-{
+enum{
 	MULTIMEDIA_CB_AUDIO_DECODE_START,	//开始解码文件
 	MULTIMEDIA_CB_AUDIO_OUTPUT_START,	//开始输出解码后的音数据
 	MULTIMEDIA_CB_AUDIO_NEED_DATA,		//底层驱动播放播放完一部分数据,需要更多数据
@@ -32,31 +41,22 @@ enum
 	MULTIMEDIA_AUDIO_BUS_SOFT_DAC
 };
 
-#define LUAT_M_CODE_TYPE "MCODER*"
-#define MP3_FRAME_LEN 4 * 1152
-
-
 #include <stddef.h>
-//#include "mp3_decode/minimp3.h"
-//#include "mp3_decode/libmad/decoder.h"
 
-typedef struct
-{
-
-	union
-	{
+typedef struct{
+	union{
 		void *mp3_decoder;
 		uint32_t read_len;
 		void *amr_coder;
 	};
 	FILE* fd;
+#ifdef __LUATOS__
 	luat_zbuff_t buff;
+#endif
 	uint8_t type;
 	uint8_t is_decoder;
 }luat_multimedia_codec_t;
 
-#define MAX_DEVICE_COUNT 2
-#define MP3_MAX_CODED_FRAME_SIZE 1792
 typedef struct luat_multimedia_cb {
     int function_ref;
 } luat_multimedia_cb_t;

+ 12 - 7
components/multimedia/luat_multimedia_audio.c

@@ -7,14 +7,8 @@
 #define LUAT_LOG_TAG "audio"
 #include "luat_log.h"
 
-static luat_audio_conf_t audio_hardware = {
-    .codec_conf.power_pin = LUAT_CODEC_PA_NONE,
-    .codec_conf.pa_pin = LUAT_CODEC_PA_NONE,
-};
-
 LUAT_WEAK luat_audio_conf_t *luat_audio_get_config(uint8_t multimedia_id){
-    if (multimedia_id == 0) return &audio_hardware;
-    else return NULL;
+    return NULL;
 }
 
 LUAT_WEAK int luat_audio_play_multi_files(uint8_t multimedia_id, uData_t *info, uint32_t files_num, uint8_t error_stop){
@@ -156,6 +150,17 @@ LUAT_WEAK uint16_t luat_audio_vol(uint8_t multimedia_id, uint16_t vol){
     return -1;
 }
 
+LUAT_WEAK int luat_audio_setup_codec(uint8_t multimedia_id, const luat_audio_codec_conf_t *codec_conf){
+	luat_audio_conf_t* audio_conf = luat_audio_get_config(multimedia_id);
+    if (audio_conf){
+        if (audio_conf->bus_type == MULTIMEDIA_AUDIO_BUS_I2S){
+            audio_conf->codec_conf= *codec_conf;
+            return 0;
+        }
+    }
+    return -1;
+}
+
 LUAT_WEAK uint8_t luat_audio_mic_vol(uint8_t multimedia_id, uint16_t vol){
     if(vol < 0 || vol > 100){
 		return -1;

+ 2 - 0
demo/hello_world/main.lua

@@ -12,6 +12,8 @@ print(_VERSION)
 
 sys.timerLoopStart(function()
     print("hi, LuatOS")
+    print("mem.lua", rtos.meminfo())
+    print("mem.sys", rtos.meminfo("sys"))
 end, 3000)