0

我正在阅读avcodec 文档,并试图了解 MPEG 流被损坏意味着什么。它提到:

输入缓冲区 buf 的末尾应设置为 0,以确保损坏的 MPEG 流不会发生过度读取。

那么如果输入缓冲区的末尾没有设置为 0 会发生什么?这会是引入腐败的潜在方式吗?

4

1 回答 1

1

要找到这个问题的答案,您可以查看为这种编解码器读取缓冲区的代码 - 这里是 avcodec

似乎缓冲区充满了许多帧,并且在每一帧数据的末尾都有下一帧的字节数。如果将其设置为零,则在 MPEG 流发生某种损坏的情况下,解码器将不会继续读取未初始化的内存。由于编码错误、传输错误或(很少)存储介质上的故障,此类流可能会被破坏。这是防御性编程的一个很好的例子。

于 2013-09-09T14:30:13.150 回答