- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
对任何比 Java 更低级别的东西都一无所知,深入研究 iPhone 音频,并从所有转换/指针/原始内存访问中实现。
我正在使用 some example code它从光盘读取 WAV 文件并将立体声样本作为单个 UInt32 值返回。如果我理解正确,这只是返回创建两个 16 位样本所需的 32 位内存的便捷方式。最终,这些数据被写入缓冲区,然后一个音频单元将其拾取。即使数据是以 UInt32 大小的 block 写入的,它最终也会被解释为成对的 16 位样本。
我需要帮助的是将这些 UInt32 帧拆分为左右样本。我假设我想将每个 UInt32 转换为 SInt16,因为音频样本是有符号值。在我看来,为了效率,我应该能够简单地指向内存中的相同 block ,并避免任何复制。
所以,在伪代码中,它会是这样的:
UInt32 myStereoFrame = getFramefromFilePlayer;
SInt16* leftChannel = getFirst16Bits(myStereoFrame);
SInt16* rightChannel = getSecond16Bits(myStereoFrame);
SInt16* left = (SInt16*)&myUInt32Chunk;
SInt16* right = left + 1;
SInt16 newFrameInMemory[2] = {*left, *right}
UInt32 newFrame32 = newFrameInMemory
UInt32 newFrame32 = *((UInt32*)&newFrameInMemory)
最佳答案
这很容易:
SInt16* left = (SInt16*)&myUInt32Chunk;
SInt16* right = left + 1;
right
和
left
.
int
可以看作是两个连续的
short
s,你只需要得到它的地址,然后就好像它确实是两个
short
s。
关于iphone - 将 UInt32(音频帧)拆分为两个 SInt16(左右)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2405289/
我有这个架构: 当我尝试推送 id = 6661883440 的新文档时,出现此错误: SEVERE: org.apache.solr.common.SolrExce
我有一个字符串格式的函数f(t,u,v);例如't^2 * sint + u*(20 + t) + v*t'。 如何解决这个问题? 我尝试这样做: t = Symbol('t') u = mu v =
我需要使用C语言中的64位变量来实现操作。尽管如此,嵌入式系统仅允许不超过32位的操作。 例如,也许我需要将64位变量拆分为32位,应用该操作,然后将值返回64位。 请检查以下伪代码: 函数Add()
作为tile,如何在Chisel3中以正确的方式将UInt转换为SInt值?IG: val opC = RegInit(0.U(64.W)) val result = RegInit(0.U(6
我是一名优秀的程序员,十分优秀!