Понемногу начал воплощать мысли по созданию плеера на базе mini2440. Появляются вопросы, поэтому решил создать тему, может кто чего посоветует.
Итак, что имеем. Одноплатный компьютер, процессор ARM9 400 МГц, на борту 64 ОЗУ, 128 флэш, USB device, USB host, слот для карт SD/MMC, 100 Mbit/s Ethernet. ЖКИ 3,5" с тачскрином, может быть заменен на 7" или VGA адаптер.
Что хочется получить
1. Аудиоплеер с поддержкой как можно большего числа аудио форматов
2. Прием потокового вещания (интернет радио и т.п.)
3. Поддержка различных носителей (карты памяти, USB flash, жесткие диски, CD)
4. Удобная база данных по исполнителям, альбомам, жанрам и т.д.
5. Дистанционное управление
5. ?? ?? ?? ?? ?? ??
Как все это реализовать?
Железо
1. Жесткий диск, CD-ROM, карты памяти и флэшки подключаем через картридер с встроенным USB хабом
2. В слоте на плате - карта памяти с корневой файловой системой
3. С выводом звука пока не ясно. Пока что использую набортную UDA1341. Понятно, что далеко не лучший вариант. Варианты - USB DAC, или выводить данные через системную шину во внешний буфер с памятью, который будет выдавать I2S на ЦАП. Второй вариант на макете опробован. А через USB, есть сомнения, что потянет одновременно читать с внешнего носителя и выводить в ЦАП - хоcт поддерживает только USB 1.1
4. Приемник дистанционного управления, кнопки (возможно энкодер) - на отдельной плате
Софт
1. Linux
2. Собственно воспроизведением звука будет заниматься mplayer. Это дает поддержку кучи форматов, сетевых протоколов и т.д.
3. Основа GUI - nano-X. Скорее всего "голая", без всяких дополнительных слоев (типа FLTK и тому подобных) - но это еще не решено окончательно. Применение nano-X хорошо тем, что позволяет предварительно тестировать софт на ПК.
4. Настройка - через web интерфейс.
5. Заливка файлов на жесткий диск - через FTP.
Что сделано на настоящий момент
1. Собран и опробован mplayer. Протестированы форматы WAV, MP3, Ogg/Vorbis, FLAC, APE, AAC, WMA. APE и AAC не тянет, звук заикается. Интернет-радио играет.
2. Собран и опробован nano-X
3. Написана базовая обертка для mplayer, которая позволяет запускать/останавливать воспроизведение, перематывать, и т.д., а также читает метаданные и парсит cue-файлы.
Встал вот такой вопрос - как реализовать интерфейс. Самое простое - лазим по папкам, запускаем файл, он проигрывается до конца, потом следующий, и так до последнего файла в папке. Но хотелось бы также иметь базу данных по тэгам - жанр, исполнитель итп, а также поддержку плэйлистов. Как это удобно реализовать - пока мыслей нет. Экран маленький, тыкать в него - удовольствие небольшое, тем более что девайс будет не переносной, и экран на передней панели.