av_read_frame是否添加了FF_INPUT_BUFFER_PADDING_SIZE?

时间:2015-07-02 08:50:23

标签: c++ ffmpeg libavcodec libav

我正在使用libav来读取MPEG流 我正在使用函数av_read_frame()将一些帧读入数据包:

av_read_frame(pFormatCtx, &packet)

然后我使用函数avcodec_decode_video2将数据包解码为帧 函数avcodec_decode_video2的文档包含以下警告:

  

输入缓冲区必须大于FF_INPUT_BUFFER_PADDING_SIZE   实际读取字节,因为一些优化的比特流读取器读取32或   一次64位,可以读完头。输入结束   buffer buf应设置为0以确保不会发生重载   对于损坏的MPEG流。

我想知道函数av_read_frame是否还没有分配额外的FF_INPUT_BUFFER_PADDING_SIZE?

谢谢。

1 个答案:

答案 0 :(得分:3)

是的,av_read_frame()总是为您添加FF_INPUT_BUFFER_PADDING_SIZE。如果您使用自己的多路分解数据作为avcodec_decode_video2()的输入,您只需要关心它,例如如果您编写自己的分路器(如VLC或mplayer所做的那样)。