mkv中cluster位置的计算
来源:互联网 发布:数据库百科 编辑:程序博客网 时间:2024/06/10 02:23
来自项目中解决mkv中某个block中的track number不正确的问题:将此错误的cluster丢弃,直接获取下一个新的cluster
1.matroska中Cluster id 为 [1F][43][B6][75], cluster的Timecode id [E7].
介于cluster id 和 Timecode id之间的时这个cluster的大小。所以下个cluster 的起始位置 = 当前cluster的起始位置 + sizeof(cluster id) + sizeof(描述cluster大小的数据) + cluster大小。
当前cluster的起始位置 + sizeof(cluster id) + sizeof(描述cluster大小的数据) = cluster的Timecode 的起始位置。
所以下个cluster 的起始位置 = cluster的Timecode 的起始位置 + cluster大小
比如:cluster 的起始位置 = 450414
sizeof(cluster id) = sizeof ([1F][43][B6][75]) = 4
sizeof(描述cluster大小的数据) = sizeof (28 36 2E) = 3
cluster的Timecode 的起始位置 = 450421
cluster大小 = 0x8362E
下个cluster的位置 = 450421 + 0x8362E = 988579
2.cluster大小在文件中的内容:0x28362E
cluster大小 = 0x8362E
转换规则:
Data size, in octets, is also coded with an UTF-8 like system :
bits, big-endian
1xxx xxxx - value 0 to 2^7-2
01xx xxxx xxxx xxxx - value 0 to 2^14-2
001x xxxx xxxx xxxx xxxx xxxx - value 0 to 2^21-2
0001 xxxx xxxx xxxx xxxx xxxx xxxx xxxx - value 0 to 2^28-2
0000 1xxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx - value 0 to 2^35-2
0000 01xx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx - value 0 to 2^42-2
0000 001x xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx - value 0 to 2^49-2
0000 0001 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx - value 0 to 2^56-2
- mkv中cluster位置的计算
- Rocks Cluster中计算节点名称的更改
- 计算字符串中各个逗号的位置
- MKV的相关知识
- mkv
- mkv
- Dicom图像中关于患者位置信息的计算
- Android中百度地图计算MapView任意位置的经纬度
- java中根据两个位置的经纬度计算距离
- 计算字符中相邻位置相同字符的个数
- nodejs中cluster的运用
- javascript中那些计算元素位置的方法和jQuery位置计算方法比较
- mkv转rmvb的方法
- js 计算光标的位置
- php中计算学生位置代码片段
- 关于QUARTZ JOB 中cluster的用法
- Oracle中Cluster Table的使用
- ZigBee中Cluster和Attribute的概念
- Discuz X2.5搬家记录
- Using Web Server Plug-Ins with WebLogic Server
- Oracle-03
- 谷歌三大核心技术(二)Google MapReduce中文版
- 一个高级的Android启动画面
- mkv中cluster位置的计算
- matlab—size用法
- JNI引用与垃圾回收
- Memcached之内存利用率提升经验分享
- 快速排序、堆排序、希尔排序实现
- 【心灵鸡汤】@2012-06-15
- 自我学习
- memset函数的性质
- CEGUI控件随着窗口大小改变而改变