为了使用Opus音频编解码器,我需要从char缓冲区中解析一个TOC字节,并提取config、s和c段,每个片段代表一个数字。
我需要将这些数字存储到单独的变量中以供进一步使用,我想知道实现这一目标的最佳方法(在C++中)是什么。
格式良好的Opus数据包必须至少包含一个字节R1。
这个字节形成一个内容表(TOC)标题:
0 1 2 3 4 5 6 7
+-+
X=.
+-+
TOC字节的前五位标记为"config",编码了32种可能的操作模式、音频带宽和帧大小的配置之一。
一个额外的位,标记为"s",信号单对立体声,0表示单声道,1表示立体声。
标记为"c“的TOC字节的其余两位编码每个数据包的帧数(代码0到3)。
这种格式是根据在这里找到的RFC:https://www.rfc-editor.org/rfc/rfc6716#section-3.1。
谢谢!
发布于 2017-06-03 16:15:34
如果需要,只需使用右移位(>>)将比特转换为低比特,并使用按位和(&)掩蔽其他比特。
int config = (toc >> 3) & 31;
int s = (toc >> 2) & 1;
int c = toc & 3;https://stackoverflow.com/questions/44307578
复制相似问题