Переопределить Spotify Audio в SPTCoreAudioController с помощью SoundTouch

Я использую Spotify SDK в iOS Project, и я намерен переопределить аудио Spotify с помощью SoundTouch https://www.surina.net/soundtouch/

Итак, я импортирую свою библиотеку SoundTouch в мои проекты, я создаю оболочку Objective-C++ для своего кода Swift, и это удалось.

Однако, когда я пытаюсь переопределить spotify Audio, изменяя темп в функции SPTCoreAudioController ( https://developer.spotify.com/ios-sdk-docs/Documents/Classes/SPTCoreAudioController.html), звук становится беспорядочным.

Вот мой код:

override func attempt(toDeliverAudioFrames audioFrames: UnsafeRawPointer!, ofCount frameCount: Int, streamDescription audioDescription: AudioStreamBasicDescription) -> Int {
    let ptr = audioFrames.bindMemory(to: Int16.self, capacity: frameCount)
    let framePtr = UnsafeBufferPointer(start: ptr, count: frameCount)
    let frames = Array(framePtr)

    if soundTouch == nil {
        print("initialize soundTouch")
        soundTouch = SoundTouchWrapper()
        soundTouch.setSampleRate(uint(audioDescription.mSampleRate))
        soundTouch.setChannels(audioDescription.mChannelsPerFrame)
        soundTouch.setTempo(1.5)
    }

    soundTouch.putSamples(UnsafeMutablePointer(mutating: ptr), uint(frameCount)/soundTouch.numChannels())

    var written:UInt32 = 0
    let capacity = 1024
    let bufferPtr = UnsafeMutablePointer<Int16>.allocate(capacity: capacity)

    repeat {
        written = soundTouch.receiveSamples(bufferPtr, uint(capacity)/soundTouch.numChannels())            
        super.attempt(toDeliverAudioFrames: bufferPtr, ofCount: Int(written), streamDescription: audioDescription)
    } while written > 0

    return frameCount
}

Есть идеи, что я здесь делаю не так?

0 ответов

Другие вопросы по тегам