pinebuds/services/multimedia/speech/inc/anc_assist_algo.h

88 lines
2.4 KiB
C

/***************************************************************************
*
* Copyright 2015-2019 BES.
* All rights reserved. All unpublished rights reserved.
*
* No part of this work may be used or reproduced in any form or by any
* means, or stored in a database or retrieval system, without prior written
* permission of BES.
*
* Use of this work is governed by a license granted by BES.
* This work contains confidential and proprietary information of
* BES. which is protected by copyright, trade secret,
* trademark and other intellectual property rights.
*
****************************************************************************/
#ifndef __AF_ANC_H__
#define __AF_ANC_H__
#ifdef __cplusplus
extern "C" {
#endif
#include "plat_types.h"
#include "hal_aud.h"
//#define AF_ANC_DUMP_DATA
#if defined(_24BITS_ENABLE)
#define _SAMPLE_BITS (24)
typedef int ASSIST_PCM_T;
#else
#define _SAMPLE_BITS (16)
typedef short ASSIST_PCM_T;
#endif
typedef enum{
AF_ANC_OFF = 0,
AF_ANC_ON,
}AF_ANC_STATUS_T;
typedef enum{
AF_ANC_MUSIC = 0,
AF_ANC_STANDALONE,
}AF_ANC_MODE_T;
typedef struct LeakageDetectionState_ LeakageDetectionState;
LeakageDetectionState *LeakageDetection_create(int frame_size,int delay0);
void LeakageDetection_destroy(LeakageDetectionState *st);
int LeakageDetection_process(LeakageDetectionState *leak_st,AF_ANC_STATUS_T adapflag,ASSIST_PCM_T *fb_buf,ASSIST_PCM_T *ref_buf,int pcm_len);
void LeakageDetection_adjust_delay(LeakageDetectionState *st, int delay0);
void get_pilot_data(uint8_t *buf,int len);
typedef struct ANCAssistMulti_ ANCAssistMultiState;
ANCAssistMultiState * ANCAssistMulti_create(int sample_rate, int frame_size,int fftsize);
void ANCAssistMulti_process(ANCAssistMultiState *st, ASSIST_PCM_T *inF, ASSIST_PCM_T *inB,ASSIST_PCM_T *inR,int frame_len);
void ANCAssistMulti_destroy(ANCAssistMultiState * st);
//need to implement
void anc_assist_change_curve(int curve_id);
// void audio_adpt_status_set_anc_mode(uint8_t mode, bool init);
// void audio_engine_set_anc_gain(int32_t gain_ch_l, int32_t gain_ch_r, int type);
// int af_anc_sync_wind_status(uint8_t status);
bool audio_engine_tt_is_on();
// bool anc_usb_app_get_status();
// void audio_adpt_status_set_wind_status(int state);
void anc_assist_set_anc_gain(float gain_ch_l, float gain_ch_r,enum ANC_TYPE_T anc_type);
extern bool app_anc_work_status();
#ifdef __cplusplus
}
#endif
#endif