如何使用原生定点类型(8.24)进行iOS音频处理

如何使用原生定点类型(8.24)进行iOS音频处理,第1张

概述所以我想正确地将-1到1范围内的浮点数缩放为AUGraph所期望的格式,其流格式设置如下: size_t bytesPerSample = sizeof (AudioUnitSampleType); // is 4 bytesstereoStreamFormat.mFormatID = kAudioFormatLinearPCM;stereoStreamFormat.mFo 所以我想正确地将-1到1范围内的浮点数缩放为AUGraph所期望的格式,其流格式设置如下:

size_t bytesPerSample = sizeof (AudioUnitSampleType); // is 4 bytesstereoStreamFormat.mFormatID          = kAudioFormatlinearPCM;stereoStreamFormat.mFormatFlags       = kAudioFormatFlagsAudioUnitCanonical;stereoStreamFormat.mBytesPerPacket    = bytesPerSample;stereoStreamFormat.mFramesPerPacket   = 1;stereoStreamFormat.mBytesPerFrame     = bytesPerSample;stereoStreamFormat.mChannelsPerFrame  = 2;                    stereoStreamFormat.mBitsPerChannel    = 8 * bytesPerSample;stereoStreamFormat.mSampleRate        = graphSampleRate; // 44.1k

this question帮我设置了图形,但当我像这样抛出一个浮点数:

sampleValueleft = (Fixed) (floatVal * 32767.0f); // there doesn't seem to be any difference whether i cast into // SInt16 or SInt32 (which the Fixed type is defined to be)..

它工作,信号听起来不错,但非常安静.所以我做错了吗?
通过更大的数字缩放会使信号变得混乱.听起来不像剪辑,输出量不会更高.我不打算深入研究定点数学,我所需要的只是一个单线程,它投入到正确的格式.

谢谢!

编辑:我一直在使用不同的流格式,之前我无法弄清楚如何正确使用立体声信号.有了这个不同的设置,我对输出音量没有任何问题,所以我认为增益问题必须与缩放…

解决方法 我讨厌8.24,因为我不认为有便利功能可以用它做数学.

反建议:将转换器单元(AUConverter)放在图形的前面,并将输入ASBD设置为更方便的东西,如16位整数或其他(我总是在iOS上使用整数…浮点数可能工作进入转换器,但我不会指望它).不要设置转换器的输出ASBD;它只是默认为音频单元规范(8.24).事实上,看看你是否可以在不使用AUConverter的情况下在第一台设备上设置方便的ASBD.

总结

以上是内存溢出为你收集整理的如何使用原生定点类型(8.24)进行iOS音频处理全部内容,希望文章能够帮你解决如何使用原生定点类型(8.24)进行iOS音频处理所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1060136.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存