What happens when you do a conversion from AV_SAMPLE_FMT_S16P to AV_SAMPLE_FMT_S16? How is the AVFrame structure going to contain the planar and non-planar data?
问问题
14424 次
2 回答
52
AV_SAMPLE_FMT_S16P
是平面有符号的 16 位音频,即每个样本 2 个字节,对于AV_SAMPLE_FMT_S16
.
唯一的区别是AV_SAMPLE_FMT_S16
每个通道的样本是交错的,即如果你有两个通道音频,那么样本缓冲区看起来像
c1 c2 c1 c2 c1 c2 c1 c2...
其中c1
是通道 1 的样本,c2
是通道 2 的样本。
而对于一帧平面音频,您将拥有类似
c1 c1 c1 c1 .... c2 c2 c2 c2 ..
现在它是如何存储在 AVFrame 中的:
- 对于平面音频:
data[i] 将包含通道 i 的数据(假设通道 0 是第一个通道)。
但是,如果您的频道多于 8 个,则其余频道的数据可以在 AVFrame 的扩展数据属性中找到。
- 对于非平面音频
data[0] 将以交错方式包含所有通道的数据。
于 2013-09-19T07:56:50.350 回答
0
在
AV_SAMPLE_FMT_S16P
数据中进入 decoded_frame->extended_data 而在 AV_SAMPLE_FMT_S16 中数据进入 decoded_frame->data在
AV_SAMPLE_FMT_S16P
数据是平面的在
AV_SAMPLE_FMT_S16
数据是交错的,我想你知道是什么意思。
示例代码在基于 Sourceforge Libav 的软件中可用
于 2020-10-14T08:34:10.483 回答