2009-03-10 10 views
7

Mam obecnie dostałem wyjścia audio w ustawieniach iPhone jak to:Native iPhone format audio

AudioStreamBasicDescription audioFormat; 

audioFormat.mSampleRate = 48000; 

audioFormat.mFormatID = kAudioFormatLinearPCM; 

audioFormat.mFormatFlags = kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked; 

audioFormat.mFramesPerPacket = 1; 

audioFormat.mChannelsPerFrame = 2; 

audioFormat.mBitsPerChannel = 16; 

audioFormat.mBytesPerPacket = 4; 

audioFormat.mBytesPerFrame = 4; 

Jednakże gdy badam moje osiągi przez rekina widzę funkcji, takich jak: SRC_Convert_table_i32_scalar_stereo

zająć sporo czasu.

To sprawiło, że pomyślałem - jaki jest idealny i sugerowany format wyjściowy dla iPhone'a? Ten, który wymaga tak mało pracy, aby urządzenie mogło grać.

+0

Jak czy używasz Sharka z iPhonem? Czy na pewno nie profilujesz symulatora? RF –

+0

Nie, profiluję urządzenie. Oto strona z instrukcjami, jak skonfigurować rekina do profilowania iPhonów: https://developer.apple.com/iphone/library/documentation/Developer Tools/Conceptual/SharkUserGuide/SelectingExecutiontoSampleorTrace/chapter_6_section_9.html –

Odpowiedz

11

Shark współpracuje z iPhonem. Możesz włączyć profilowanie iPhone'a wybierając "Sampling> Network/iPhone Profiling ..." w menu.

Zdecydowanie spróbuj użyć częstotliwości próbkowania 44100 Hz. Z 48000 widzę tę samą funkcję, która zostanie zaksięgowana powstające w callstacks - nie ma takiej funkcji pojawia się podczas korzystania 44100. Kanoniczna format audio dla urządzeń audio na iPhone nie jest przeplatana 8,24 liniowy PCM:

streamFormat.mFormatID   = kAudioFormatLinearPCM; 
streamFormat.mFormatFlags  = 
        kAudioFormatFlagIsSignedInteger 
       | kAudioFormatFlagsNativeEndian 
       | kLinearPCMFormatFlagIsNonInterleaved 
       | (24 << kLinearPCMFormatFlagsSampleFractionShift); 
streamFormat.mSampleRate  = mixing_rate; 
streamFormat.mBitsPerChannel = 32; 
streamFormat.mChannelsPerFrame = 2; 
streamFormat.mFramesPerPacket = 1; 
streamFormat.mBytesPerFrame = (streamFormat.mBitsPerChannel/8); 
streamFormat.mBytesPerPacket = streamFormat.mBytesPerFrame * 
           streamFormat.mFramesPerPacket; 
3

Od iphone dev centre (wymaga zalogowania) na sprzętowe suppoorted kodeki są

kodeki sprzętowe iPhone audio

aplikacje iPhone OS mogą korzystać z szerokiej zakres formatów danych audio, jak opisaną w następna sekcja. Niektóre z tych formatów używają kodowania i dekodowania opartego na oprogramowaniu . Możesz jednocześnie odtwarzać wiele dźwięków w tych formatach. Co więcej, aplikacja i aplikacja w tle (w szczególności aplikacja iPod) mogą jednocześnie odtwarzać dźwięki w tych formatach.

Inne formaty audio iPhone OS używają kodeka sprzętowego do odtwarzania. Te formaty to:

  • AAC
  • ALAC (Apple Lossless)
  • MP3
+0

Jestem mniej zainteresowany różnymi formatami, które iPhone może odtwarzać, więcej o tym, jaki jest wyjściowy format wyjścia. W ten sposób mogę dopasować mój typ wydruku i będzie wymagać mniejszej liczby cykli, aby iPhone mógł go przekonwertować. –

+1

Założę się, że używając kodeka sprzętowego używałbyś mniej cykli procesora ... Mogę się mylić, wypróbować i powiedzieć nam jak to działa – hhafez

1

48000 jest dziwny format dźwięku w ogóle. Choć jest nieznacznie (i niedostrzegalnie) lepszy od standardu CD o przekątnej 44,1Khz, to nie jest on wart wielkości.

Czy aplikacja ma wysoką jakość dźwięku stereofonicznego? Innymi słowy, czy aplikacja może być odtwarzana na głośnikach lub dobrych słuchawkach?

Format LinearPCM jest sprzętem natywnym, więc powinien być optymalny. (Bez dekompresji, z którą można się bawić). Tak więc połączenie może być obniżeniem do 44,1 Khz.

Powiązane problemy