无法理解flac帧头格式

时间:2018-11-12 17:43:21

标签: audio frame decode flac

我正在做一种flac解析器,我需要解析每个帧的标头。以flac格式(https://xiph.org/flac/format.html#frame_header)描述了一个字段

  

if(可变块大小)<8-56>:“ UTF-8”编码的样本编号   (解码的数字是36位)[4]否则<8-48>:“ UTF-8”编码帧   数字(解码后的数字为31位)[4]

[4]说:

  

用于样本/帧号的“ UTF-8”编码是相同的   可变长度代码,用于存储压缩的UCS-2,扩展为   处理更大的输入。

如果是8-56或8-48位,我绝对不知道如何知道该字段的大小。为什么解码后的数字是36或31位?另外,当我在使用UTF-8编码的十六进制编辑器中打开flac文件时,此字段中没有数字。我将非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

UTF-8编码样本意味着第一个字节(帧头的5个字节)包含有效位,这些有效位将告诉您在帧/样本号中有多少个后续字节。

您可以在此处检查有效位的格式:https://en.wikipedia.org/wiki/UTF-8

如果数字以48位编码,则如下所示: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

它具有31位('x'),您可以提取它并将其放入更易于管理的类型,例如UInt32。