我正在阅读avcodec 文档,并试图了解 MPEG 流被损坏意味着什么。它提到:
输入缓冲区 buf 的末尾应设置为 0,以确保损坏的 MPEG 流不会发生过度读取。
那么如果输入缓冲区的末尾没有设置为 0 会发生什么?这会是引入腐败的潜在方式吗?
我正在阅读avcodec 文档,并试图了解 MPEG 流被损坏意味着什么。它提到:
输入缓冲区 buf 的末尾应设置为 0,以确保损坏的 MPEG 流不会发生过度读取。
那么如果输入缓冲区的末尾没有设置为 0 会发生什么?这会是引入腐败的潜在方式吗?
要找到这个问题的答案,您可以查看为这种编解码器读取缓冲区的代码 - 这里是 avcodec
似乎缓冲区充满了许多帧,并且在每一帧数据的末尾都有下一帧的字节数。如果将其设置为零,则在 MPEG 流发生某种损坏的情况下,解码器将不会继续读取未初始化的内存。由于编码错误、传输错误或(很少)存储介质上的故障,此类流可能会被破坏。这是防御性编程的一个很好的例子。