AudioFileOpenWithCallbacks - Предотвращение ошибки полномочий с MPEG 4 типов файлов
Q: Мы используем AudioFileOpenWithCallbacks для воспроизведения аудиоданных, сохраненных в памяти и, обеспечивают соответствующие процедуры по чтению, пишущий и т.д. Однако мы встречаемся с a kAudioFilePermissionsError при работе с контейнерами MPEG 4 файла. Что случилось?
A: Мы используем AudioFileOpenWithCallbacks для воспроизведения аудиоданных, сохраненных в памяти и, обеспечивают соответствующие процедуры по чтению, пишущий и т.д. Однако мы встречаемся с a kAudioFilePermissionsError при работе с контейнерами MPEG 4 файла. Что случилось?
AudioFileOpenWithCallbacks откроет аудиофайл (представленный AudioFileID непрозрачный тип данных), использование обратных вызовов Вы предусматриваете чтение данных, запись данных и получение/установку информации о размере. Эти обратные вызовы могут использоваться для предоставления данных аудиофайла из источника кроме физического файла (например, память) и позволяют Вам использовать в своих интересах стандартный AudioFile APIs такой как AudioFileReadPackets работать с этими аудиоданными.
Перечисление 1 AudioFileOpenWithCallbacks
OSStatus AudioFileOpenWithCallbacks(void *inClientData,
AudioFile_ReadProc inReadFunc,
AudioFile_WriteProc inWriteFunc,
AudioFile_GetSizeProc inGetSizeFunc,
AudioFile_SetSizeProc inSetSizeFunc,
AudioFileTypeID inFileTypeHint,
AudioFileID *outAudioFile);
Parameters:
inClientData - A pointer to a constant passed to your callbacks. The constant should contain any information you use to manage the state for reading data from the file.
inReadFunc - A callback function invoked when the audio file object wants to read data.
inWriteFunc - A callback function called when the audio file object wants to write data.
inGetSizeFunc - A callback function called when the audio file object wants to know the file size.
inSetSizeFunc - A callback function called when the audio file object wants to set the file size.
inFileTypeHint - A hint about the type of the designated file. For example, kAudioFileAAC_ADTSType, kAudioFileMP3Type and so on.
outAudioFile - On output, a pointer to the newly opened file ID. |
Фиксация ошибки полномочий
Существует, однако, ограничение при работе с MPEG 4 включающих типов файлов; .mp4 (kAudioFileMPEG4Type), .m4a (kAudioFileM4AType).3g2 (kAudioFile3GP2Type) и.3gp (kAudioFile3GPType).
AudioFile в настоящее время не поддерживает запись в существующие файлы этих типов.
Поэтому, если Вы обеспечиваете inWriteFunc процедура это - индикация AudioFileOpenWithCallbacks то, что файл открывается для записи, поочередно приводящей к kAudioFilePermissionsError быть возвращенным.
Так как Вы не можете записать в эти файлы, AudioFile_WriteProc не требуется и не должен использоваться. Установка inWriteFunc к NULL решает проблему.
Перечисление 2 AudioFileOpenWithCallbacks с a NULL inWriteFunc и inSetSizeFunc
static OSStatus MyAudioFile_ReadProc(void *inClientData, SInt64 inPosition, UInt32 requestCount,
void *buffer, UInt32 *actualCount)
{
// this is my read proc.
...
}
{
...
AudioFileID myAudioFileID = 0;
OSStatus result;
result = AudioFileOpenWithCallbacks(self, MyAudioFile_ReadProc, NULL, MyAudioFile_GetSizeProc, NULL,
kAudioFileMPEG4Type, &myAudioFileID);
...
} |
История версии документа
| Дата | Примечания |
|---|---|
| 27.10.2009 | Новый документ, описывающий, как избежать kAudioFilePermissionsError ошибки с MPEG 4 файла при использовании AudioFileOpenWithCallbacks. |