AV_SAMPLE_FMT_S16P is
planar signed 16 bit audio, i.e. 2 bytes for each sample which is same for AV_SAMPLE_FMT_S16.
The only difference is in AV_SAMPLE_FMT_S16 samples
of each channel are interleaved i.e. if you have two channel audio then the samples buffer will look like
c1 c1 c2 c2 c1 c1 c2 c2...
where c1 is
a sample for channel1 and c2 is
sample for channel2.
while for one frame of planar audio you will have something like
c1 c1 c1 c1 .... c2 c2 c2 c2 ..
now how is it stored in AVFrame:
- for planar audio:
data[i] will contain the data of channel i (assuming channel 0 is first channel).
however if you have more channels than 8, then data for rest of the channels can be found in extended_data attribute of AVFrame.
- for non-planar audio
data[0] will contain the data for all channels in an interleaved manner.
本文详细解释了AV_SAMPLE_FMT_S16与AV_SAMPLE_FMT_S16P两种音频格式的区别。前者为交错格式,即不同声道的数据交替存储;后者为平面格式,同一声道的所有样本连续存储。文中还介绍了这两种格式在AVFrame中的存储方式。
1287

被折叠的 条评论
为什么被折叠?



