文件格式的LE和BE(L/B)是干什么的
这两个单词的诞生距今已经有~50年的历史了。
在YUV420P10LE,YUV422P10BE等等例子中,LE和BE这两个字母说的是little-endian和big-endian。区别是,"little-endian 小位先写"在x86架构处理器上的效率比符合人类书写的"big-endian 大位先写"更高,而ARM架构的处理器为了增强兼容,也多用LE书写数据。
LE的书写方式是*先写*最不足道位LSD,例子-1011,1100,1101,0010,0110,1010,注意整个数被倒过来了,不仅仅是换了数位:
但若使用LE,处理器就可以在导入全部的数之前就开始计算,这种精神分裂的行为源于处理器几十年前就能做到每秒上百万时钟(MHZ)的速度。而现在的处理器速度更快,所以一般情况下,LE还是BE的速度差距就不大了,但理论上对于大数据,视频编码,3A游戏,大型渲染等需要一切计算资源的任务来说,在x86架构的处理器上用LE就对了。
全文完,转载请注明地址❀
参考:
[1] stackoverflow.com/questions/4752715/why-are-both-little-and-big-endian-in-use
在YUV420P10LE,YUV422P10BE等等例子中,LE和BE这两个字母说的是little-endian和big-endian。区别是,"little-endian 小位先写"在x86架构处理器上的效率比符合人类书写的"big-endian 大位先写"更高,而ARM架构的处理器为了增强兼容,也多用LE书写数据。
LE的书写方式是*先写*最不足道位LSD,例子-1011,1100,1101,0010,0110,1010,注意整个数被倒过来了,不仅仅是换了数位:
0x0000000001--------------LSD-0101
0x0000000002------------------0110
0x0000000003------------------0100
0x0000000004------------------1011
0x0000000005------------------0011
0x0000000006--------------MSD-1101
BE的书写方式是先写最大道位MSD,例子-1011,1100,1101,0010,0110,1010:0x0000000001--------------MSD-1011
0x0000000002------------------1100
0x0000000003------------------1101
0x0000000004------------------0010
0x0000000005------------------0110
0x0000000006--------------LSD-1010
这种设计来源于几十年前的处理器信道带宽(Bus width)窄,如果用BE方法计算大数,那么处理器就必须先导入全部的数再开始算,类似人类将整个算式写下来的步骤。但若使用LE,处理器就可以在导入全部的数之前就开始计算,这种精神分裂的行为源于处理器几十年前就能做到每秒上百万时钟(MHZ)的速度。而现在的处理器速度更快,所以一般情况下,LE还是BE的速度差距就不大了,但理论上对于大数据,视频编码,3A游戏,大型渲染等需要一切计算资源的任务来说,在x86架构的处理器上用LE就对了。
全文完,转载请注明地址❀
参考:
[1] stackoverflow.com/questions/4752715/why-are-both-little-and-big-endian-in-use
[...]S(igned)/U(nsigned):首个位深字节值里面有(范围 0~255)或没有(范围 – 128~127)正负号,一般都有,没见过就写默认的 SF(loat):源音频流是浮点位深,不是整数位深位深:在音频上都叫位宽,一般是默认 16bit,此处不加后缀 bitsL(ittle-Endian)/B(ig-Endian):具体看这篇教程的解释,总之要用到 x86 架构的处理器,用默[...]