Цитата(hwdev @ Aug 13 2008, 12:37)

Идет оценка проекта от заказчика..
Требуется сжимать, чтобы сохранить на носитель данные от 2-х (4-х) видеокамер. Картинка 640х480 30fps.
Камера поддерживает форматы: Raw RGB, RGB (GRB 4:2:2, RGB565/555), YUV (4:2:2) and YCbCr (4:2:2). Какой выбирать?
Теперь по алгоритмам. Сразу скажу, что аппаратура будет на DSP или ARM9, не х86, об этом позже.
Из постановки задачи требуется записывать в кольцевой буфер 10-15мин от всех камер. Каким кодеком предпочтительнее сжимать видео поток, чтобы сохранить хорошее качество видео и не потерять кадры при захвате? Я так понимаю, от скорости кодека зависят требования к производительности процессора, Core Duo ставить возможности нет

. Где хранить этот поток еще не решили, в зависимости от объема может поставим SDRAM большой, чтобы не парится с флешами из-за их низкой скорости записи и ограниченного ресурса. Ресурс записи также важен, т.к. прибор будет работать до 14ч в день и постоянно писать в кольцефой буфер..
Теперь конкретные вопросы:
1) какую библиотеку взять (пока смотрю в сторону ffmpeg, кросс-компиляция есть)?
2) каким конкретно кодеком жать?
3) какой процессор использовать?
На счет процессора: можно взять TI DSP + какой-нибудь МК или АРМ7. Можно взять DM355, у этого явного DSP нет, зато аппаратный MPEG сопроцессор стоит. C64x не подходят из-за цены. 5л назад работал с C6713, так они стоили не дорого. Теперь же их сняли с производства и заменили дорогими, а есть ограничение на стоимость прибора

1. Не совсем ясно что должен делать этот прибор. Какой по времени объем данных надо хранить?
2. Сколько вам выделено времени на разработку?
Предположим заказчик хочет увидеть демо через пол года, предположим сохранять надо всего 15 минут с каждого канала. (...здается мне это очередной девайс для автомобилей...).
Для H264 (считаем что реализация енкодера качественная) хорошее качество картинки для заданного разрешения и заданного фрэймрэйта будет около 1.5 мегабит для Main Profile и около 3 мегабит для бэйзлана. Это примерно (1.5...3) * 60 * 15 =170...340 мегабайт на канал. Соответственно 700...1400 мбайт на все четыре канала. Т.е. все видео войдет в 2х гигабайтную флэшку. При этом поток данных будет около 2 мбайт/сек (== 16 мбит/сек) (все округляю в большую сторону).
Написать енкодер х264 (пусть даже только бэйзлайн) - год. Вы хотите год делать устройство? Четыре канала х264 нужно еще постараться запихнуть в один дсп (не важно какой, наличие ускорителей на борту скорости разработке не прибавит особо...) "один микросхем - один канал" - наверняка вам такое решение не очень понравится ибо "есть ограничение на стоимость прибора"...
Рекомендация: MJPEG. TI + DM642. Либа енкодера идет с edk. Если она не устраивает - пишите своё - жипег на порядок проще 264го. JPEG 640x480 30 fps приемлемого качества это около 6..8 мегабит, хорошего качества - около 12..16. Объем хранилища: 16 * 60 * 15 = 1.8 Гбайта, 1.8 * 4 = 8 гигабайт на 4 канала. (поправте если обсчитался) Не так уж и много. Поток в хранилище: 16 * 4 = 64 мбита/сек.
P.S. Скорость флэшей - приличная, так что не бойтесь их.
Итого получаем: 4х канальная видео ацп (TI, Techwell) + DM642 (600MHz, а если немножко не хватит роизводительность ставте 720 - не на много дороже) + 8ГБ флэш (CF, на пример или рассыпуха).
За пол года должны будете уложиться.