在研究 QuickTime File Format,里面涉及到一个 3 x 3 的矩阵用于图像的变换,矩阵的每一个元素用 4 字节保存,具体按照 32-bit fixed-point number
类型编码。
![](https://static-img.0xffff.one/BfXZngR0bsSuVf1_43GdYXghvOlvQdxOLY1xyAUBVp4/q:90/w:800/rt:fit/aHR0cHM6Ly9zdGF0/aWMuMHhmZmZmLm9u/ZS9hc3NldHMvZmls/ZXMvMjAxOS0xMC0y/Ny8xNTcyMTc1NzMz/LTY0MTMwNS0xNDc2/MDQxMTc5LmpwZWc)
ffmpeg 里面对应的代码是用 ((double) (x)) / (1 << 16)
实现这里的 fixed point
和 double
之间的转换,代码链接:
![](https://static-img.0xffff.one/qSv1QW2Ph0l0c-nYl3LqLpx9ciKdsHlhEzz0zC97hfE/q:90/w:800/rt:fit/aHR0cHM6Ly9zdGF0/aWMuMHhmZmZmLm9u/ZS9hc3NldHMvZmls/ZXMvMjAxOS0xMC0y/Ny8xNTcyMTc2MDM5/LTg4MjE3NS01MDY5/MzUzNzUuanBlZw)
这里有两个疑问:
- 32-bit fixed-point 的编码规则(二进制表示)具体是什么,在哪里可以找到?
- 怎么理解文档中的
32-bit fixed-point numbers divided as 16.16
和 32-bit fixed-point numbers divided as 2.30
?
望指点迷津~