800*320工程文件+初始demo提交
This commit is contained in:
62
SW/components/modules/audio/audio_hw.h
Normal file
62
SW/components/modules/audio/audio_hw.h
Normal file
@ -0,0 +1,62 @@
|
||||
#ifndef _AUDIO_HW_H
|
||||
#define _AUDIO_HW_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "co_list.h"
|
||||
|
||||
typedef void (*audio_hw_request_pcm_t)(void *pcm, uint32_t samples, uint8_t channels);
|
||||
typedef void (*audio_hw_receive_pcm_ntf_t)(uint32_t samples);
|
||||
|
||||
typedef enum {
|
||||
AUDIO_HW_TYPE_I2S,
|
||||
AUDIO_HW_TYPE_CODEC,
|
||||
AUDIO_HW_TYPE_PDM,
|
||||
} audio_hw_type_t;
|
||||
|
||||
typedef enum {
|
||||
AUDIO_HW_DIR_IN = 0x01,
|
||||
AUDIO_HW_DIR_OUT = 0x02,
|
||||
AUDIO_HW_DIR_INOUT = (AUDIO_HW_DIR_IN | AUDIO_HW_DIR_OUT),
|
||||
} audio_hw_dir_t;
|
||||
|
||||
typedef struct {
|
||||
struct co_list_hdr hdr;
|
||||
|
||||
audio_hw_type_t type;
|
||||
audio_hw_dir_t dir;
|
||||
uint8_t channels;
|
||||
uint32_t sample_rate;
|
||||
uint32_t base_addr;
|
||||
void *hw_handle;
|
||||
|
||||
/* used for output mode */
|
||||
audio_hw_request_pcm_t request_handler;
|
||||
int16_t *pcm_out;
|
||||
|
||||
/* used for input mode */
|
||||
uint32_t wr_ptr; /* unit is sample */
|
||||
struct co_list output_list;
|
||||
uint32_t pcm_samples; /* unit is sample */
|
||||
uint8_t *pcm;
|
||||
} audio_hw_t;
|
||||
|
||||
typedef struct {
|
||||
struct co_list_hdr hdr;
|
||||
|
||||
audio_hw_t *audio_hw;
|
||||
audio_hw_receive_pcm_ntf_t handler;
|
||||
uint32_t rd_ptr; /* unit is sample */
|
||||
} audio_hw_output_t;
|
||||
|
||||
audio_hw_t *audio_hw_create(audio_hw_type_t type, audio_hw_request_pcm_t handler, uint32_t base_addr, audio_hw_dir_t dir, uint32_t sample_rate, uint8_t channels);
|
||||
|
||||
void audio_hw_destroy(audio_hw_t *hw);
|
||||
|
||||
audio_hw_output_t *audio_hw_output_add(audio_hw_t *hw, audio_hw_receive_pcm_ntf_t handler);
|
||||
|
||||
void audio_hw_output_remove(audio_hw_t *hw, audio_hw_output_t *output);
|
||||
|
||||
uint32_t audio_hw_read_pcm(audio_hw_output_t *output, void *pcm, uint32_t samples, uint8_t channels);
|
||||
|
||||
#endif // _AUDIO_HW_H
|
Reference in New Issue
Block a user