2017-05-14 5 views
0

Ich folge https://github.com/AlesTsurko/LearningCoreAudioWithSwift2.0/tree/master/CH05_Player , um eine Frequenz wiederzugeben, aber es ist mit Swift2. Get microphone input using Audio Queue in Swift 3 hat viele der Probleme gelöst, aber es ist für die Aufnahme.Swift3 AudioToolbox: PCM Wiedergabe wie AudioQueueAllocateBuffer?

ich bei Zuweisung eines Puffers, um Audio-Warteschlange hängen

var ringBuffers = [AudioQueueBufferRef](repeating:nil, count:3) 
AudioQueueAllocateBuffer(inQueue!, bufferSize, &ringBuffers[0]) 

ein Fehler

main.swift:152:29: Expression type '[AudioQueueBufferRef]' is ambiguous without more context 
main.swift:153:20: Cannot pass immutable value as inout argument: implicit conversion from 'AudioQueueBufferRef' to 'AudioQueueBufferRef?' requires a temporary 

--Nach Spads' answer--

var ringBuffers = [AudioQueueBufferRef?](repeating:nil, count:3) 
let status = AudioQueueAllocateBuffer(inQueue!, bufferSize, &ringBuffers[0]) 
print("\(status.description)") 

druckt

gibt
vm_map failed: 0x4 ((os/kern) invalid argument) 
4 

Audio-Beschreibung, die ich verwendet habe, ist

inFormat = AudioStreamBasicDescription(
      mSampleRate:  Double(sampleRate), 
      mFormatID:   kAudioFormatLinearPCM, 
      mFormatFlags:  kLinearPCMFormatFlagIsBigEndian | kLinearPCMFormatFlagIsSignedInteger | kLinearPCMFormatFlagIsPacked, 
      mBytesPerPacket: UInt32(numChannels * MemoryLayout<UInt16>.size), 
      mFramesPerPacket: 1, 
      mBytesPerFrame:  UInt32(numChannels * MemoryLayout<UInt16>.size), 
      mChannelsPerFrame: UInt32(numChannels), 
      mBitsPerChannel: UInt32(8 * (MemoryLayout<UInt16>.size)), 
      mReserved:   UInt32(0) 
     ) 
AudioQueueNewOutput(&inFormat, AQOutputCallback, &player, nil, nil, 0, &inQueue) 

Antwort

1

Sollten Sie nicht ein Array von AudioQueueBufferRef haben? statt AudioQueueBufferRef

var ringBuffers = [AudioQueueBufferRef?](repeating:nil, count:3) 
AudioQueueAllocateBuffer(inQueue!, bufferSize, &ringBuffers[0]) 
+0

es das ist, scheint alles ... Ich werde Fertigstellung wieder den Code – neckTwi

+0

, aber das ist was 'vm_map fehlgeschlagen: 0x4 ((o/kern) ungültiges Argument)' Laufzeitfehler mit 'AudioQueueAllocateBuffer' – neckTwi

+1

Given das Update auf deine Frage Ich bekomme es nicht mit einem AudioQueueBufferRef zu kompilieren! . Es muss ein AudioQueueBufferRef sein? – Spads