AudioDeal.h
3.7 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
/**
********************************************************************
* @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 "libavutil/channel_layout.h"
#include "libavutil/frame.h"
#ifdef __cplusplus
extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
/* Exported types ------------------------------------------------------------*/
/*******
*
* 音频库信息结构体
*
* ********/
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(int In_Bitrate, unsigned char *buffer, int bytesRead, int DataType);
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);
#ifdef __cplusplus
}
#endif
#endif