我正在编写一个压缩YUV420p视频的简单视频编码器。我注意到,当我使用相同的压缩设置从相同的输入文件重新生成文件时,生成的文件总是略有不同。没有大的变化,通常只有几个位受到“宇宙射线位翻转”效应的影响。
在我的程序中,我没有使用随机值,因此结果输出应该始终相同。我怀疑我的程序在其分配的内存之外执行读/写操作,这可以解释数据的随机性。
除了常规调试实践外,是否有特殊的工具/技巧可以帮助我发现这些恶作剧的原因?
答案 0 :(得分:3)
如果在Windows操作系统上,您可以尝试AppVerifier
答案 1 :(得分:0)
不确定您正在开发哪个平台。提到的工具是'nixes和OS X(也是'nix但是......)
答案 2 :(得分:0)
您可以创建一个输出记录,然后创建另一个输出记录。在压缩前者的每个输出位的过程中,您可以与后者的相同位进行比较。我不知道压缩机。但是如果你有几个压缩阶段,你可以为第一个结果记录制作不同阶段的几个记录。压缩第二个结果记录时,您需要将每个阶段的位与第一个输出的对应记录的位进行比较。结果你可以找到一个破坏位的地方。