2014-09-23 12 views
7

Mam aplikację, która wyrzuca próbki w wywoływaniu wywołań renderowania za pomocą AudioUnitSampleType. Jest przestarzały w systemie iOS 8, a dźwięk nie działa teraz. Poprzednie wersje iOS działały idealnie. Nie mogę znaleźć żadnej dokumentacji dotyczącej zastąpienia AudioUnitSampleType.AudioUnitSampleType jest przestarzałe w systemie iOS8, funkcja wywołania zwrotnego renderowania nie działa teraz.

Jedyne informacje mam to ostrzeżenie Xcode ... „Koncepcja kanonicznych formatach jest przestarzała”

Proszę o pomoc, może ktoś umieścić trochę światła na to, jak to naprawić?

Odpowiedz

11

Mam ten sam problem. Możesz zamienić AudioUnitSampleType na SInt32. Zgaduję, że zadeklarowałeś także AudioStreamBasicDescription, więc zastąp swoją deklarację od streamFormat.mFormatFlags = kAudioFormatFlagsAudioUnitCanonical; na streamFormat.mFormatFlags = kAudioFormatFlagIsFloat | kAudioFormatFlagsNativeEndian | kAudioFormatFlagIsPacked | kAudioFormatFlagIsNonInterleaved;

Mam nadzieję, że to pomoże.

EDIT:

Można również użyć typealias zdefiniować AudioUnitSampleType

EDIT: Można również rozważyć przejście do TheAmazingAudioEngine

+0

Bravo. Dziękuje – glenstorey

+1

Właściwie to nie działa, a przynajmniej część w pierwszym akapicie. Dodanie parametru kAudioFormatIsFloat nie jest poprawne i zapewni dźwięk, a nie dźwięk. –

+1

Obawiam się, że to nie takie proste, ponieważ może to być również Float32. W CoreAudioTypes.h znajduje się komentarz: "Te typy są przestarzałe, przetwarzanie sygnału wykonującego kod powinno wykorzystywać konkretne typy (np. Float, Float32, SInt16, SInt32) .Kod formatowania-agnostyk, zamiast polegać na rozmiarach tych typów, powinien obliczyć wielkość próbki z mBytesPerChannel, mChannelsPerFrame i (mFlags & kLinearPCMFormatFlagIsNl). Dla formatów z przeplotem rozmiar próbki to mBytesPerFrame/mChannelsPerFrame. Dla formatów bez przeplotu jest to po prostu mBytesPerFrame. " – auco

Powiązane problemy