Родной аудиоформат iPhone - PullRequest
7 голосов
/ 11 марта 2009

На данный момент у меня есть выходной звук на iPhone:

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;

Однако, когда я проверяю свои показатели производительности через акулу, я вижу такие функции, как: SRC_Convert_table_i32_scalar_stereo

потратьте немало времени.

Это заставило меня задуматься - каков идеальный и предлагаемый формат вывода для iPhone? Тот, который требует так мало работы для устройства, чтобы играть.

Ответы [ 3 ]

11 голосов
/ 01 апреля 2009

Акула работает с iPhone. Вы можете включить профилирование iPhone, выбрав в меню «Выборка> Профилирование сети / iPhone ...».

Обязательно попробуйте использовать частоту дискретизации 44100 Гц. С 48000 я вижу ту же функцию, что вы опубликовали, появляясь в коллстеках - при использовании 44100 такая функция не отображается. Канонический аудиоформат для Аудиоустройств на iPhone не чередуется 8.24 линейных 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 голосов
/ 11 марта 2009

С iphone dev center (требуется вход в систему). Аппаратно поддерживаемые кодеки:

Аудио аппаратные кодеки iPhone

Приложения для iPhone OS могут использовать широкий диапазон форматов аудио данных, как описано в следующем разделе. Некоторые из эти форматы используют программный кодирование и декодирование. Вы можете одновременно воспроизводить несколько звуков в эти форматы. Кроме того, ваш приложение и фон приложение (в частности, iPod приложение) может одновременно играть звучит в этих форматах.

В других аудиоформатах iPhone OS используется аппаратный кодек для воспроизведения. Эти форматы:

  • AAC
  • ALAC (Apple Lossless)
  • MP3
1 голос
/ 11 марта 2009

48000 - странный формат звука в целом. Хотя он незначительно (и незаметно) лучше, чем стандарт CD с частотой 44,1 кГц, его размер не стоит.

Есть ли в вашем приложении веская причина использовать высококачественный стереозвук? Другими словами, может ли приложение воспроизводиться на динамиках или хороших наушниках?

Формат LinearPCM является аппаратным, поэтому он должен быть оптимальным. (Никакой декомпрессии, чтобы возиться с ней.) Так что этот вызов может быть уменьшен до 44,1 кГц.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...