Post

Replies

Boosts

Views

Activity

Reply to AVAudioEngine connect:to:format: fails with error -10868 when using AVAudioPCMFormatInt16
You can use singed 16 bit audio format, but you should convert it at first. swift // Setup your own format let inputFormat = AVAudioFormat( commonFormat: .pcmFormatInt16, sampleRate: 44100, channels: AVAudioChannelCount(2), interleaved: true )! let engine = AVAudioEngine() // Use system format as output format let outputFormat = engine.mainMixerNode.outputFormat(forBus: 0) self.converter = AVAudioConverter(from: inputFormat, to: outputFormat)! self.playerNode = AVAudioPlayerNode() engine.attach(playerNode) engine.connect(playerNode, to: engine.mainMixerNode, format: nil) ... // Prepare input and output buffer let inputBuffer = AVAudioPCMBuffer(pcmFormat: inputFormat, frameCapacity: maxSamplesPerBuffer)! let outputBuffer = AVAudioPCMBuffer(pcmFormat: outputFormat, frameCapacity: maxSamplesPerBuffer)! // When you fill your Int16 buffer with data, send it to converter self.converter.convert(to: outputBuffer, error: nil) { inNumPackets, outStatus in outStatus.pointee = .haveData return inputBuffer } // Now in outputBuffer sound in system format and we can play it self.playerNode.scheduleBuffer(outputBuffer)
Mar ’21