重采样,创建输入缓冲区的疑问

来源:8-3 实战音频重采样2

音视频雪兔

2020-12-17

av_samples_alloc_array_and_samples(src_data, //输出缓冲区地址
src_linesize, //缓冲区的大小
2, //通道个数
512, //单通道采样个数
AV_SAMPLE_FMT_FLT, //采样格式
0);
第一个参数,缓冲区地址,是一个双指针,听课里面,老师所讲,缓冲区是双指针,也就是个二维数据,第一维代表不同类别的缓冲区;
而在读取输入设备数据后,要对缓冲区进行数据copy,用的memcpy,咱们这里只进行了第一个缓冲区的数据copy,也就是src_data[0],
我的疑问是是不是只要是进行重采样,默认只操作第一个缓冲区;
如果需要操作后面的缓冲区,一般会在什么情况下,每一个缓冲区分别代表什么。
因为目前只听到该处,后面还没有听到,暂时请老师解答一下,谢谢。

写回答

2回答

李超

2020-12-21

src_data是一个指针数组,对于音频来说它只用第一个数组指针就够了;对于视频来说它会用到三个;ffmpeg 之所以要这样定义是为了更灵活的使用不同的结构类型;具体用几个有开发者自己说了算

1
2
音视频雪兔
今天听了视频编码数据准备,知道如果是视频,会用到三个类型,分别对应yuv;如果是rgba,则,可能用到4个数据;一共是8中数据。
2020-12-22
共2条回复

heaven强

2020-12-21

此问题问的很好,

0
0

音视频小白系统入门课 音视频基础+ffmpeg原理

掌握音视频采集、编解码、RTMP传输协议等核心基础

2318 学习 · 813 问题

查看课程