4G_module/include/cmiot/cm_audio_recorder.h

173 lines
5.9 KiB
C
Raw Normal View History

2024-09-02 17:54:29 +08:00
/**
* @file cm_audio_recorder.h
* @brief Audio recorder接口
* @copyright Copyright © 2021 China Mobile IOT. All rights reserved.
* @author By WangPeng
* @date 2021/4/12
*
* @defgroup audio_recorder
* @ingroup audio_recorder
* @{
*/
#ifndef __OPENCPU_AUDIO_RECORDER_H__
#define __OPENCPU_AUDIO_RECORDER_H__
/****************************************************************************
* Included Files
****************************************************************************/
#include <stdint.h>
#include "cm_audio_common.h"
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
/****************************************************************************
* Public Types
****************************************************************************/
/** 录音通道支持 */
typedef enum
{
CM_AUDIO_RECORD_CHANNEL_MAIN = 1, /*!< 主MIC通道不支持设置 */
CM_AUDIO_RECORD_CHANNEL_HP, /*!< 耳机MIC通道不支持设置 */
#if 0
CM_AUDIO_RECORD_CHANNEL_REMOTE, /*!< 从远端通话中录音(需建立通话) */
#endif
} cm_audio_record_channel_e;
/** 录音回调的事件类型 */
typedef enum
{
CM_AUDIO_RECORD_EVENT_DATA = 1, /*!< 录音数据上报 */
#if 0
CM_AUDIO_RECORD_EVENT_FINISHED, /*!< 录音结束 */
CM_AUDIO_RECORD_EVENT_INTERRUPT, /*!< 录音中断 */
#endif
} cm_audio_record_event_e;
/** 录音设置类型 */
typedef enum
{
CM_AUDIO_RECORD_CFG_CHANNEL = 1, /*!< 录音通道支持范围参见cm_audio_record_channel_e枚举量不支持设置 */
CM_AUDIO_RECORD_CFG_GAIN, /*!< 录音增益,不支持设置 */
} cm_audio_record_cfg_type_e;
/*
*
*/
typedef struct
{
uint8_t *data; /*!< 录音数据 */
uint32_t len; /*!< 录音数据长度 */
void *user; /*!< 用户传入参数 */
} cm_audio_record_data_t;
/****************************************************************************
* Public Data
****************************************************************************/
/****************************************************************************
* Public Function Prototypes
****************************************************************************/
#ifdef __cplusplus
#define EXTERN extern "C"
extern "C"
{
#else
#define EXTERN extern
#endif
/**
* @brief
*
* @param [in] event
* @param [in] param CM_AUDIO_RECORD_DATA时param强转为cm_audio_record_data_t型
*
* @details API中传入 \n
* 使UART打印log
*/
typedef void (*cm_audio_record_callback_t)(cm_audio_record_event_e event, void *param);
/**
* @brief
*
* @param [in] type
* @param [in] value
*
* @return
* = 0 - \n
* = -1 -
*
* @details 0~48线cm_audio_recorder_start() \n
* 0 -36dB \n
* 12 -24dB \n
* 24 -12dB \n
* 36 0dB \n
* 48 12dB \n
* 使mic/mic由用户决定 \n
* 8M版本ML307A-DSLN ML307A-GSLN ML305A-DSaudio功能
*/
int32_t cm_audio_record_set_cfg(cm_audio_record_cfg_type_e type, void *value);
/**
* @brief
*
* @param [in] type
* @param [out] value
*
* @return
* = 0 - \n
* = -1 -
*
* @details 0~48线 \n
* 0 -36dB \n
* 12 -24dB \n
* 24 -12dB \n
* 36 0dB \n
* 48 12dB \n
* 使mic/mic由用户决定 \n
* 8M版本ML307A-DSLN ML307A-GSLN ML305A-DSaudio功能
*/
int32_t cm_audio_record_get_cfg(cm_audio_record_cfg_type_e type, void *value);
/**
* @brief
*
* @param [in] format
* @param [in] sample_param PCM采样参数
* @param [in] cb
* @param [in] cb_param cm_audio_record_callback回调函数中param参数描述8
*
* @return
* = 0 - \n
* = -1 -
*
* @details PCM和AMR格式 \n
* 使UART打印log \n
* 8M版本ML307A-DSLN ML307A-GSLN ML305A-DSaudio功能
*/
int32_t cm_audio_recorder_start(cm_audio_record_format_e format, cm_audio_sample_param_t *sample_param, cm_audio_record_callback_t cb, void *cb_param);
/**
* @brief
*
* @details 8M版本ML307A-DSLN ML307A-GSLN ML305A-DSaudio功能
*/
void cm_audio_recorder_stop(void);
#undef EXTERN
#ifdef __cplusplus
}
#endif
#endif
/** @}*/