CD-DA采用差错校验码CIRC。除去控制位,纠错信息位大概只占总量25%。但是通过数学处理,纠错能力依然很强大。
如果纠错位是有用数据3倍,那直接把有用数据拷贝4次然后选一致的3个就好了,完全没必要编码。
作者:堂主
链接:https://www.zhihu.com/question/20587067/answer/15562969
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
我举一个例子。 假设乐谱上有1——2——3三个音,要求每个音唱1秒钟。这是一首音乐。也就是所谓CD上的数据。 A君B君各自看着自己的手表,唱这首。 A君唱的是1(0.99秒)——2(1.01秒)——3(1秒)。B君唱的是1(1秒)——2(1.01秒)——3(0.99秒)。 从数据上看,三个字节完全一致,MD5也都一样。对时值的定义也一样。 乐谱就是这样印刷,并被AB君的眼球读取到,输入脑中的。翻看多少次都一样。 光盘信息也就是这样被光头读取,输出给解码器君的。读取多少次也都一样。AB君的手表有误差,解码器君的时钟振荡器也有误差。 然后等AB君唱完,你听了,发现他们唱得不一样。 ———————————————————— 再进一步解释音乐CD的读取缺陷。 音乐CD(CDDA)读取方式是线性的,就是不能回头反复重读。 如果读的过程中间遇到有一个污渍,读不出,它会跳过去读后面的。 这个读不出的部分,它有三种解决办法: 1、静默;2、继承上一个数据; 3、插值,通过一个算法,根据前后的数据,往里面插逻辑值。 如果乐谱本来是135-145-135,这九个音符。但是乐谱脏了,那个4看不清,按照CDDA插值的算法,最后输出给解码器的就可能是135-135-135。CDDA是有纠错码的,当遇到少数字节错误,它可以纠正。当错误增多到一定程度,纠错码无法正确复原数据的时候,就开始猜,也就是插值。————————————————————— 回到题主的问题。 误差来自1、时钟(各个环节的时钟);2、文件是否受损,以及是否能够被正确纠错。
|