首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift中的AudioBufferList分配

Swift中的AudioBufferList分配
EN

Stack Overflow用户
提问于 2017-04-28 04:22:28
回答 2查看 788关注 0票数 3

我正在努力学习这个API和Swift中的语法

代码语言:javascript
复制
audioBufferList = AudioBufferList(mNumberBuffers: 2, mBuffers: (AudioBuffer))

我不知道带()的(AudioBuffer)是什么意思?有什么想法吗?我该如何初始化它?这是来自标题的:

代码语言:javascript
复制
  public struct AudioBufferList {

      public var mNumberBuffers: UInt32
      public var mBuffers: (AudioBuffer) // this is a variable length array of mNumberBuffers elements
      public init()
      public init(mNumberBuffers: UInt32, mBuffers: (AudioBuffer))
 }
EN

回答 2

Stack Overflow用户

发布于 2017-04-28 09:34:24

这里有一种初始化AudioBufferList的方法,使用一个空的单声道缓冲区数组,您可以将其传递给音频单元调用,如AudioUnitRender(),然后根据需要分配和填充缓冲区:

代码语言:javascript
复制
var bufferList = AudioBufferList(
        mNumberBuffers: 1,
        mBuffers: AudioBuffer(
            mNumberChannels: UInt32(1),
            mDataByteSize: 1024,
            mData: nil))
票数 0
EN

Stack Overflow用户

发布于 2020-04-29 00:29:28

通过使用AVAudioPCMBuffer类,通过如下方式解决了这个问题:

代码语言:javascript
复制
import AVFoundation

// noninterleaved stereo data
let processingFormat = AVAudioFormat(
  commonFormat: .pcmFormatFloat32,
  sampleRate: 44100,
  channels: 2,
  interleaved: false
)!

// this line also creates AudioBufferList instance.
let buffer = AVAudioPCMBuffer(
  pcmFormat: processingFormat,
  frameCapacity: 1024)!
// this line updates mDataByteSize properties
buffer.frameLength = 1024

let bufferList: UnsafePointer<AudioBufferList> = buffer.audioBufferList

print(bufferList.pointee) // Prints: AudioBufferList(mNumberBuffers: 2, mBuffers: __C.AudioBuffer(mNumberChannels: 1, mDataByteSize: 4096, mData: Optional(0x00007ff253840e00)))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43667261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档