【发布时间】:2014-01-10 07:37:09
【问题描述】:
我有以下无法正确使用的功能。 我一次又一次地研究它,但不知何故总是有问题。
我已经编码了一些音频数据。 音频数据以每个 3 字节的“帧”编码。
例如这样:
Frame #1
0
1
2
Frame #2
3
4
5
Frame #3
6
7
8
现在,当我想解码一些音频时(假设从字节位置 4 开始,长度为 3 个字节,我首先必须计算在哪一帧中可以找到该音频,我必须解码多少帧以及偏移量是多少在解码帧中是。
在这种情况下,我必须读取第 2 帧和第 3 帧,并且偏移量为 1。
我已尝试设置以下 void:
int g_iByteSize1FrameDecoded = 3;
void CalcFrames(unsigned long uByteStart,unsigned long uByteCount,unsigned long &uStartFrame,unsigned long &uFramesToRead,unsigned long& uOffset)
{
////calculate in which decoded frame the byte from uByteStart would be found in
uStartFrame = ((uByteStart) / g_iByteSize1FrameDecoded) + 1;
unsigned long iEndFrame = ((uByteStart + uByteCount) / g_iByteSize1FrameDecoded) + 1;
uFramesToRead = (iEndFrame - uStartFrame + 1);
uOffset = (uByteStart) % g_iByteSize1FrameDecoded;
}
但它不起作用,总是出错...四舍五入,数学本身...
有一些数学技能的人可以看看我的错误可能在哪里吗?
【问题讨论】:
-
一个恰好有
void返回类型的函数通常不被称为“void”。我已经相应地更新了你的标题和问题。