Як я розбирався з форматами ADPCM

Хоча IMA дійсно надає повний пакет специфікацій на IMA ADPCM, в тому числі приклади програм, що реалізують даний стандарт, мені не вдалося відшукати детальної інформації по реалізаціям останнього, підготовленим Microsoft і Apple Крім того, щоб не допустити можливого порушення авторських прав IMA, я навмисно не використовував розроблені цією організацією приклади Деякий корисний матеріал мені вдалося відшукати в Internet, в тому числі реалізацію базового алгоритму, написаного Джеком Дженсеном QackJansen), і розділ «Технічна підтримка розробників Apple 1081 »(Apple Developer Support TechNote 1081), де було виділено ряд фундаментальних відмінностей між версіями цього алгоритму від Microsoft і Apple

Проте зазначених джерел було недостатньо для реалізації тих декомпресора, про які йшла розмова в цій главі Щоб зясувати необхідні деталі, мені довелося експериментувати з реальними файлами Використані мною методи можуть стати в нагоді, якщо вам доведеться аналізувати інші схожі формати

Для початку я скористався стандартними утилітами (поставляються в складі Mac OS 76 і Windows 95), щоб конвертувати короткий файл вибірок в стислий формат IMA ADPCM Після чого я декомпрессірованний вийшов файл у формат 16-бітної ІКМ Оскільки при використанні алгоритмів IMA ADPCM відбувається втрата даних, замість порівняння стислих даних з вихідними краще проводити порівняння стислих даних з отриманими в результаті декомпресії

Ключем до IMA ADPCM є те, що в кожному полубайте зберігається прирощення зі знаком Дуже просто написати програму, яка вивантажує напівбайтів з файлу із стисненими даними і розташовує їх пліч о-пліч з відновленими Порівнюючи будову позитивних і негативних величин, мені вдалося дуже швидко зясувати порядок напівбайтів в кожному байті (відповідно до стандарту IMA ADPCM молодший напівбайт зберігається першим) і зясувати, де блоки напівбайтів узгоджуються з блоками збільшень Порушення послідовності позитивних і негативних чисел вказали на розташування заголовків пакетів, що дозволило визначити довжину самих пакетів

Якщо вам необхідно проаналізувати алгоритм АДІКМ, в которомдлязапісі одного відліку використовується 4 біта, описаний вище метод вам допоможе Зясування того, як саме 4-бітове стислий значення узгоджується з приростом, завдання більш складна Насамперед необхідно добре розбиратися в різних родинних алгоритмах Крім алгоритму IMA ADPCM можна вивчити ще сімейство алгоритмів ITU (особливо G721 і G723) Часто вдається

відшукати фрагменти вихідних текстів (як мені при роботі з IMA ADPCM),

які послужать вам джерелом важливої ​​інформації

Користуючись цими методами, мені вдалося створити наведену в даній главі програму, що працює дуже злагоджено з вихідними форматами офіційно визнаних компресорів для всіх протестованих мною файлів (За час, що минув з початку моєї роботи, мені вдалося підтвердити офіційною документацією багато хто з моїх припущень) Такі пошуки не завжди прості (один з моїх друзів порівнює їх з криптоаналіз), але часто це єдиний спосіб розшукати необхідну інформацію

Співавтори

Програма, про яку йде мова в цьому розділі, частково заснована на реалізації алгоритму Intel DVI ADPCM, здійсненої Джеком Дженсеном Авторський вихідний текст містить таке повідомлення про авторське право:

Лістинг 1312 Повідомлення про авторські права Джека Дженсена

/*****************************************************************

*

Copyright 1992 Stichting, математичний центр, Амстердам,

Нідерланди

Всі права зарезервовані

Справжнім дається дозвіл використовувати, копіювати, змінювати

і поширювати це програмне забезпечення і документацію

до нього за таких умов: вказане вище повідомлення про авторські права буде присутня в усіх копіях супроводжує документація повинна містити як повідомлення, так і дане дозвіл назви математичного центру Stichting, і CWI без попереднього особливого письмового дозволу не будуть використані в цілях реклами, повязаної

з розповсюдженням програмного забезпечення

Математичний центр Stichting не дає ніяких гарантій, повязаних з цим програмним забезпеченням, у тому числі гарантій на готовність і придатність для продажу Центр відмовляється від відповідальності при будь-яких умовах за будь-які прямі, непрямі

і непрямі збитки, а також за які б то не було збитки, викликані неможливістю використання, втратами даних чи прибутку, що стали наслідком дій, обумовлених контрактом або

що відбулися в результаті недбалості, а також інших шкідливих дій, що мали місце внаслідок або у звязку

з використанням або виконанням цього програмного забезпечення

******************************************************************

/

Джерело: Кінтцель Т Керівництво програміста по роботі зі звуком = A Programmers Guide to Sound: Пер з англ М: ДМК Пресс, 2000 432 с, іл (Серія «Для програмістів»)

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*