ExtAudioFile - ExtAudioFileTell неправильная работа позиции вокруг
Q: Я вызываю ExtAudioFileTell для .m4a файла, содержащего аудио AAC (сразу после того, как я установил клиентский формат) и API, возвращает значение-2112 вместо 0. Это - знать проблема?
A: Я вызываю ExtAudioFileTell для .m4a файла, содержащего аудио AAC (сразу после того, как я установил клиентский формат) и API, возвращает значение-2112 вместо 0. Это - знать проблема?
ExtAudioFileTell в настоящее время всегда возвращает значение, которое является числом слишком маленьких кадров воспламенения.
ExtAudioFile APIs должен заботиться об этом смещении воспламенения от имени клиента, однако, поскольку поток битов AAC содержит 2 112 кадров воспламенения, ExtAudioFileTell возвращает значение, которое является слишком маленькими кадрами воспламенения, в этом случае-2112 вместо 0 (нуль).
Работа вокруг требует, чтобы клиент компенсировал:
Выполните начальный вызов к
ExtAudioFileTellсразу после открытия файла и установки клиентского формата.Если возвращенная позиция отрицательна, все будущие вызовы к
ExtAudioFileTellбудет выключено этим значением, и клиент должен компенсировать.
Фигура перечисления 1 значение исправления смещения.
...
// call ExtAudioFileTell immediately after opening the file and setting the client format
// and get the correction value to add to all future calls
SInt64 frameOffset = 0;
SInt64 frameOffsetCorrection = 0;
ExtAudioFileTell(sourceFile, &frameOffset);
if (frameOffset < 0) frameOffsetCorrection = -frameOffset;
... |
Перечисление 2 Как общая работа вокруг всегда добавляет это исправление при вызове ExtAudioFileTell.
... ExtAudioFileTell(sourceFile, &frameOffset); frameOffset += frameOffsetCorrection; ... |
История версии документа
| Дата | Примечания |
|---|---|
| 07.12.2009 | Новый документ, обсуждающий, как работать вокруг ошибки в ExtAudioFileTell, где возвращенное значение может быть слишком маленькими кадрами воспламенения. |