一、音频FIFO缓冲区
一)、函数
void | av_audio_fifo_free (AVAudioFifo *af) |
释放AVAudioFifo。
AVAudioFifo * | av_audio_fifo_alloc (enum AVSampleFormat sample_fmt, int channels, int nb_samples) |
参数:sample_fmt:采样格式
channels:频道数量
nb_samples:初始分配大小,在样本中
返回:新分配的AVAudioFifo,或错误的NULL
av_warn_unused_result int | av_audio_fifo_realloc (AVAudioFifo *af, int nb_samples) |
参数:af:AVAudioFifo重新分配
nb_samples:新分配大小,在样本中
返回:如果OK,则为0,否则为ERROR代码
int | av_audio_fifo_write (AVAudioFifo *af, void **data, int nb_samples) |
如果可用空间小于nb_samples,则AVAudioFifo将自动重新分配。
参数:af:写入的AVAudioFifo
data:音频数据平面指针
nb_samples:要写的样本数
返回:实际写入的样本数,或失败的负错误代码。 如果成功,实际写入的样本数将始终为nb_samples。
int | av_audio_fifo_peek (AVAudioFifo *af, void **data, int nb_samples) |
参数:af:从中读取的AVAudioFifo
data:音频数据平面指针
nb_samples:要窥探的样本数量
返回:样品数量实际窥视,否则AVERROR代码失败。 实际窥视的样本数量将不会大于nb_samples,如果av_audio_fifo_size小于nb_samples,则它将仅小于nb_samples。
int | av_audio_fifo_peek_at (AVAudioFifo *af, void **data, int nb_samples, int offset) |
参数:af:从中读取的AVAudioFifo
data:从中读取的AVAudioFifo
nb_samples:要窥探的样本数量
offset:偏离当前读取位置
返回:样品数量实际窥视,否则AVERROR代码失败。 实际窥视的样本数量将不会大于nb_samples,如果av_audio_fifo_size小于nb_samples,则它将仅小于nb_samples。
int | av_audio_fifo_read (AVAudioFifo *af, void **data, int nb_samples) |
参数:af:从中读取的AVAudioFifo
data:从中读取的AVAudioFifo
nb_samples:要读取的样本数
返回:实际读取的样本数,或失败时为负的AVERROR代码。 实际读取的样本数量不会大于nb_samples,如果av_audio_fifo_size小于nb_samples,则它将仅小于nb_samples。
int | av_audio_fifo_drain (AVAudioFifo *af, int nb_samples) |
删除数据而不读取它。
参数:af:排除的AVAudioFifo
nb_samples:排出的样本数目
返回:如果OK,则为0,否则为ERROR代码
void | av_audio_fifo_reset (AVAudioFifo *af) |
这将清空缓冲区中的所有数据。
参数:af:重置的AVAudioFifo
int | av_audio_fifo_size (AVAudioFifo *af) |
参数:af:进行查询的AVAudioFifo
返回:可用于读取的样本数
int | av_audio_fifo_space (AVAudioFifo *af) |
参数:af:进行查询的VAudioFifo
返回:可用于写入的样本数量
二、音频通道掩码
通道布局是一个64位整数,每个通道都有一个位设置。
设置的位数必须等于通道数。 值0表示通道布局未知。
注意:这种数据结构不够强大,无法处理具有相同通道多次的通道组合,例如双单声道。
#define | AV_CH_FRONT_LEFT 0x00000001 |
#define | AV_CH_FRONT_RIGHT 0x00000002 |
#define | AV_CH_FRONT_CENTER 0x00000004 |
#define | AV_CH_LOW_FREQUENCY 0x00000008 |
#define | AV_CH_BACK_LEFT 0x00000010 |
#define | AV_CH_BACK_RIGHT 0x00000020 |
#define | AV_CH_FRONT_LEFT_OF_CENTER 0x00000040 |
#define | AV_CH_FRONT_RIGHT_OF_CENTER 0x00000080 |
#define | AV_CH_BACK_CENTER 0x00000100 |
#define | AV_CH_SIDE_LEFT 0x00000200 |
#define | AV_CH_SIDE_RIGHT 0x00000400 |
#define | AV_CH_TOP_CENTER 0x00000800 |
#define | AV_CH_TOP_FRONT_LEFT 0x00001000 |
#define | AV_CH_TOP_FRONT_CENTER 0x00002000 |
#define | AV_CH_TOP_FRONT_RIGHT 0x00004000 |
#define | AV_CH_TOP_BACK_LEFT 0x00008000 |
#define | AV_CH_TOP_BACK_CENTER 0x00010000 |
#define | AV_CH_TOP_BACK_RIGHT 0x00020000 |
#define | AV_CH_STEREO_LEFT 0x20000000 |
#define | AV_CH_STEREO_RIGHT 0x40000000 |
#define | AV_CH_WIDE_LEFT 0x0000000080000000ULL |
#define | AV_CH_WIDE_RIGHT 0x0000000100000000ULL |
#define | AV_CH_SURROUND_DIRECT_LEFT 0x0000000200000000ULL |
#define | AV_CH_SURROUND_DIRECT_RIGHT 0x0000000400000000ULL |
#define | AV_CH_LOW_FREQUENCY_2 0x0000000800000000ULL |
#define | AV_CH_LAYOUT_NATIVE 0x8000000000000000ULL |