Конвертирование PCM, ADPCM в WAVE формат - Версия для печати +- DC-SWAT Forum (http://www.dc-swat.ru/forum) +-- Форум: Sega Dreamcast (/forum-2.html) +--- Форум: General Discussion (/forum-7.html) +--- Тема: Конвертирование PCM, ADPCM в WAVE формат (/thread-767.html) Страниц: 1 2 |
RE: Конвертирование PCM, ADPCM в WAVE формат - SWAT - 27.01.2014 13:30 А не пробовал с помощью ffmpeg? В нем есть кодек Yamaha ADPCM. RE: Конвертирование PCM, ADPCM в WAVE формат - gr_ander - 28.01.2014 22:02 (27.01.2014 13:30)SWAT писал(а): А не пробовал с помощью ffmpeg? В нем есть кодек Yamaha ADPCM.Не пробовал, но в курсе, что в нём есть этот кодек. Не хотелось ради этого использовать ffmpeg размером в 7 мб. Нужна утилита, которая узко заточена под определённую конвертацию, как wavecon из KatanaSDK. Похоже, что нашёл решение: https://github.com/losinggeneration/kos/blob/master/utils/wav2adpcm/wav2adpcm.c Правда, требуется доработка кода. Во-первых, есть ошибки в заголовке для ADPCM. Во-вторых, при кодировании PCM->ADPCM теряется один байт данных (тоже самое происходит при декодировании ADPCM->PCM). RE: Конвертирование PCM, ADPCM в WAVE формат - SWAT - 29.01.2014 09:33 Эхх думал в оригинальном репозитории KOS есть исправления, но оказалось кроме форматирования в этом файле ничего не менялось очень давно http://sourceforge.net/p/cadcdev/kallistios/ci/master/tree/utils/wav2adpcm/wav2adpcm.c RE: Конвертирование PCM, ADPCM в WAVE формат - gr_ander - 29.01.2014 19:03 (29.01.2014 09:33)SWAT писал(а): Эхх думал в оригинальном репозитории KOS есть исправления, но оказалось кроме форматирования в этом файле ничего не менялось очень давно М-да... Кроме форматирования, никаких отличий. По поводу неверного заголовка: строка 234 есть: Код: wavhdr.format = 20; должно быть: Код: wavhdr.format = 0x20; после 235 строки, в соответствии со спецификацией Microsoft для Yamaha ADPCM, нужно вставить этот код: Код: wavhdr.blocksize = 1; строка 264: есть: Код: || wavhdr.format != 20 должно быть: Код: || wavhdr.format!=0x20 А по поводу недостающего байта, я думаю проблема в циклах do ... while функций pcm2adpcm и adpcm2pcm. Но тут надо разбираться более подробно. Может и сам алгоритм кодирования ADPCM неточный. Так как побайтно ADPCM-файлы, созданные при помощи wavecon от Sega и wav2adpcm сильно различаются, хотя на слух звучат одинаково и спектрограмма в GoldWave тоже смотрится идентично. |