Описание

MP3 декодер для контроллеров Microchip DSC dsPIC основан на хорошо известном fixed-point MP3 декодере MAD. Вообше говоря, проект основан на порте MAD для TI TMS320C55xx, который можно найти в сети (автор: Grigory Abuladze).

Мной были переписаны все асмовые функции, проверено выравнивание (компилятор CCS подразумевает что char = 16 бит), проверены все операции, критичные к порядку байт в слове (TMS320 - big-endian, а dsPIC - little-endian), все массивы выделяются статически на этапе компиляции.

dsPIC33 MAD MP3 декодер распространяется на условиях GPL

Требования

Объем программной памяти + Объем ОЗУ

  • ~29 кБ исполняемого кода + ~17 кБ константы (18% от объема флэш-памяти dsPIC33FJ256GP710)
  • ~25 кБ + ~1.5 кБ стек (88% от объема SRAM dsPIC33FJ256GP710)

Исходя из требований, понятно, что на сегодняшний день единственный контроллер,на котором можно запустить этот проект - это dsPIC33FJ256GP710. Это связано только с требованиями к ОЗУ, производительности 16-битных DSC от Microchip достаточно, чтобы реализовать декодер потоков с низким значением kbps на любом контроллере dsPIC30.

Производительность

Архив с исходными кодами содержит тестовые музыкальные фрагменты с различными битрейтами. Производительность оценивалась как время необходимое на декодирование фрагмента, при этом в оценку не входят функции считывания исходного файла в буфер потока и вывода результирующего raw потока в файл. Частота тактирования контроллера устанавливалась равной 80 МГц (40 MIPS).

Результаты тестирования говорят о том, что текущая версия декодера способна декодировать в реальном времени (на 40 MIPS):

  • моно потоки с любым битрейтом
  • стерео потоки с частотой выборок до 32 кГц и битрейтом до 128 кбит/с

При этом для декодирования стерео-потока 32 кГц @ 128 кбит/с необходимо 33.6 MIPS производительности, а для декодирования стерео-потока 8 кГц @ 20 кбит/с требуется 6.8 MIPS производительности.

Полный отчет о тестировании приведен в файле ..\doc\test_results.txt.

Ограничения

Текущая версия декодера имеет следующие ограничения:

  • MPEG1 Layer 1 и Layer 2 не поддерживаются
  • Используется 16-битная арифметика
  • ошибка в функции mad_port_stereo_intensity_lsf()

Скачать

Актуальная версия

1.0.1042 (16 июля 2008) скачать (1 МБ)

Первая версия на этом сайте. Архив содержит исходные коды декодера, проект для MPLAB и тестовые mp3 файлы. Файл ..\doc\test_result.txt содержит отчеты о декодировании тестовых файлов.

Автор

Alex B. admin@pic24.ru

статьи/mp3.txt · Последние изменения: 11/06/2009.11:23 (внешнее изменение)
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0