// Copyright 2019 Fuzhou Rockchip Electronics Co., Ltd. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef EASYMEDIA_SOUND_H_ #define EASYMEDIA_SOUND_H_ #include #include "utils.h" #ifdef __cplusplus extern "C" { #endif typedef enum { SAMPLE_FMT_NONE = -1, SAMPLE_FMT_U8, SAMPLE_FMT_S16, SAMPLE_FMT_S32, SAMPLE_FMT_FLT, SAMPLE_FMT_U8P, SAMPLE_FMT_S16P, SAMPLE_FMT_S32P, SAMPLE_FMT_FLTP, SAMPLE_FMT_G711A, SAMPLE_FMT_G711U, SAMPLE_FMT_NB } SampleFormat; typedef struct { SampleFormat fmt; int channels; int sample_rate; int nb_samples; } SampleInfo; #ifndef MAX_FILE_PATH_LEN #define MAX_FILE_PATH_LEN 256 #define AI_TALKVQE_MASK_AEC 0x1 #define AI_TALKVQE_MASK_ANR 0x2 #define AI_TALKVQE_MASK_AGC 0x4 #define AI_RECORDVQE_MASK_ANR 0x1 #define AO_VQE_MASK_ANR 0x1 #define AO_VQE_MASK_AGC 0x2 #endif typedef enum { VQE_MODE_AI_TALK, VQE_MODE_AI_RECORD, VQE_MODE_AO, VQE_MODE_BUTT } VQE_MODE_E; typedef struct rkVQE_CONFIG_S { VQE_MODE_E u32VQEMode; union { struct { uint32_t u32OpenMask; int32_t s32WorkSampleRate; int32_t s32FrameSample; char aParamFilePath[MAX_FILE_PATH_LEN]; } stAiTalkConfig; struct { uint32_t u32OpenMask; uint32_t s32WorkSampleRate; uint32_t s32FrameSample; struct { float fPostAddGain; /* post-gain 0*/ float fGmin; /* spectral gain floor,unit:(dB),default:-30dB */ float fNoiseFactor; /* noise suppression factor,default:0.98 */ } stAnrConfig; } stAiRecordConfig; struct { uint32_t u32OpenMask; uint32_t s32WorkSampleRate; uint32_t s32FrameSample; char aParamFilePath[MAX_FILE_PATH_LEN]; } stAoConfig; }; } VQE_CONFIG_S; #ifdef __cplusplus } #endif _API const char* SampleFmtToString(SampleFormat fmt); _API SampleFormat StringToSampleFmt(const char* fmt_str); _API bool SampleInfoIsValid(const SampleInfo& sample_info); _API size_t GetSampleSize(const SampleInfo& sample_info); #include #include namespace easymedia { bool ParseSampleInfoFromMap(std::map& params, SampleInfo& si); std::string _API to_param_string(const SampleInfo& si); } // namespace easymedia #endif // #ifndef EASYMEDIA_SOUND_H_