AudioDeal.h
4.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/**
********************************************************************
* @file AudioDeal.h
* AudioDeal的头文件
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef AUDIO_DEAL_H
#define AUDIO_DEAL_H
/* Includes ------------------------------------------------------------------*/
#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
#include "BaseConfig.h"
#ifdef AUDIODEAL_CONFIG_STATUS_ON
#include "libavutil/channel_layout.h"
#include "libavutil/frame.h"
#endif
#ifdef __cplusplus
extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
/* Exported types ------------------------------------------------------------*/
/*******
*
* 音频库信息结构体
*
* ********/
#ifdef AUDIODEAL_CONFIG_STATUS_ON
struct AudioDealInfo
{
int Flag_AudioPlayStatus; //播放状态线程 用于标识当前的播放状态
int Flag_AudioSwicthStatus; //音频切换状态标志位 用于是否是播放中切换播放中
int Flag_AudioDataGeneration; //音频数据产生的标志位 用于判断是否是
int Flag_AlsaPlay; //alsa库的播放标志位,用于标志alsa库是否处于播放中
int Flag_AudioDataGenerationImplement; //数据产生线程执行中
int Flag_AudioDataGenerationFinsh; //数据产生线程执行完毕
int AudioDeal_ResampleAndFilter_Execute_Flag; //音频库的滤波及重采样的执行标志位,用于进行管理音频库的线程使用
int AudioDeal_ResampleAndFilterAndPlay_Finish_Flag; //音频库的滤波及重采样的执行完成的函数
//用于管理alsa部分的内容
int AudioDeal_Alsa_Execute_Flag;
int AudioDeal_Alsa_Finish_Flag;
int FilterMode; //滤波模式
//输出的pcm部分
void *PcmPoolIndex;
unsigned int Target_SampleRate; //目标采样率
unsigned int Target_SampleFormat; //目标采样深度
//unsigned int Target_ChannelLayout; //目标频道数
AVChannelLayout Target_ChannelLayout; //目标通道布局
//alsa部分
void *AlsaInfo;
//重采样
void *ResampleInfo;
//滤波
void *FilterInfo;
//原始数据信息
unsigned int Raw_SampleRate;
unsigned int Raw_SampleFormat; //原始数据信息采样深度
//unsigned int Raw_ChannelLayout; //原始数据信息频道数
AVChannelLayout Raw_ChannelLayout; //原始数据通道布局
}AudioDealInfo;
/*******
*
* 音频库播放类型枚举
*
* ********/
enum AudioDealPlayType
{
AUDIO_TYPE_IDLE = 0x00, //空闲状态
AUDIO_TYPE_FILE = 0x01, //文件播放状态
AUDIO_TYPE_MP3_STREAM = 0x02, //mp3流播放状态
AUDIO_TYPE_PCM_STREAM = 0x03, //pcm流播放状态
}AudioDealPlayType;
/* Exported functions --------------------------------------------------------*/
T_JZsdkReturnCode AudioDeal_Init();
T_JZsdkReturnCode AudioDeal_PcmDataInput_TextSteam(int In_Bitrate, unsigned char *buffer, int bytesRead);
T_JZsdkReturnCode AudioDeal_PcmDataInput_RecordSteam(int In_Bitrate, unsigned char *buffer, int bytesRead);
T_JZsdkReturnCode AudioDeal_PcmDataInput_RealTimeSteam(int In_Bitrate, unsigned char *buffer, int bytesRead);
T_JZsdkReturnCode AudioDeal_EchoCancellation_Init(int SampleRate);
T_JZsdkReturnCode AudioDeal_StopDeal();
T_JZsdkReturnCode AudioDeal_FilePlayInput(unsigned char *FilePath);
T_JZsdkReturnCode AudioDeal_ResampleRest(unsigned int in_sampleRate, AVChannelLayout in_ch_layout, enum AVSampleFormat in_format);
T_JZsdkReturnCode AudioFile_Stream_DataInput(AVFrame *frame);
T_JZsdkReturnCode AudioDeal_Mp3DataInput(int In_Bitrate, unsigned char *buffer, int bytesRead);
T_JZsdkReturnCode AudioDeal_PauseAndContinuePlay(int status);
int AudioDeal_GetPauseAndContinuePlayStatus();
T_JZsdkReturnCode Get_AudioDealStatus();
T_JZsdkReturnCode AudioDeal_SetFilterMode(int mode);
T_JZsdkReturnCode AudioDeal_GetFilterMode();
T_JZsdkReturnCode AudioDeal_Mp3DataStop();
T_JZsdkReturnCode AudioDeal_GetAudio_DurationInfo(JZ_U8 *FilePath, JZ_U32 *Duration);
#endif
#ifdef __cplusplus
}
#endif
#endif