作品 ID Header,那是什么?
Opus ID Header, what is that?
查看 OggOpus 的文档,我不明白这个 table 是什么意思:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 'O' | 'p' | 'u' | 's' |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 'H' | 'e' | 'a' | 'd' |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| version = 1 | channel count | pre-skip |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| original input sample rate in Hz |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| output gain Q7.8 in dB | channel map | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ :
| |
: optional channel mapping table... :
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
我该如何从中获得 header?
这是RFC中常见的一种数据格式的图形表示,例如RFC791第3.1节中的IPv4 header就是用同一种图片描述的。
顶部的数字是 0 到 31,每个数字代表一位。每行代表 32 位。
图表中的所有框都是 8 位宽的倍数,这使它成为一种很好的 byte-oriented 格式。第一个框包含 'O'
,所以 header 的第一个字节是 'O'
(大概是 ASCII,所以它的十六进制值为 4F
)。下一个字节是 'p'
(十六进制 70
),依此类推直到前 8 个字节。之后,下一个字节是版本字节。本文档定义的版本为 1,因此该字节的值为 1。
版本之后,下一个字节是通道数,然后有一个值叫做"pre-skip",它在水平space中占了16位,所以它是一个16位的字段。继续从左到右阅读每一行,从上到下逐行阅读,以获取其余字段。最后一个字段,"optional channel mapping table"被画成一个带椭圆的大区域,表示它的大小不固定。
图片中没有任何信息是您无法从下面的文字中获得的。
查看 OggOpus 的文档,我不明白这个 table 是什么意思:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 'O' | 'p' | 'u' | 's' |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 'H' | 'e' | 'a' | 'd' |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| version = 1 | channel count | pre-skip |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| original input sample rate in Hz |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| output gain Q7.8 in dB | channel map | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ :
| |
: optional channel mapping table... :
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
我该如何从中获得 header?
这是RFC中常见的一种数据格式的图形表示,例如RFC791第3.1节中的IPv4 header就是用同一种图片描述的。
顶部的数字是 0 到 31,每个数字代表一位。每行代表 32 位。
图表中的所有框都是 8 位宽的倍数,这使它成为一种很好的 byte-oriented 格式。第一个框包含 'O'
,所以 header 的第一个字节是 'O'
(大概是 ASCII,所以它的十六进制值为 4F
)。下一个字节是 'p'
(十六进制 70
),依此类推直到前 8 个字节。之后,下一个字节是版本字节。本文档定义的版本为 1,因此该字节的值为 1。
版本之后,下一个字节是通道数,然后有一个值叫做"pre-skip",它在水平space中占了16位,所以它是一个16位的字段。继续从左到右阅读每一行,从上到下逐行阅读,以获取其余字段。最后一个字段,"optional channel mapping table"被画成一个带椭圆的大区域,表示它的大小不固定。
图片中没有任何信息是您无法从下面的文字中获得的。