Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите сжать видео ..как-нибудь по простому
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
InsolentS
Прошу помощи у уважаемого интернет-сообщества: есть задача - нужно записывать видео с цифровой камеры и хранить его в памяти (видеорегистратор). Качество не важно - можно CIF (320х240), чёрно-белое. Подскажите пожалуйста какую-нибудь доступную библеотеку, которая позволила бы это сделать используя АРМ7, Вывод, что на этом камне такое возможно, я сделал из доки http://www.iqmagazineonline.com/magazine/p...s5(Pg54-56).pdf . Ну, или какой-нибудь простой, недорогой и доступный аппаратный кодек. rolleyes.gif
Rst7
Сколько кадров в секунду хочется? Я тут выкладывал JPEG-кодер, в среднем на 5 миллионов тактов на кадр можно расчитывать. Т.е. порядка 12 кадров в секунду при тактовой 60МГц. Это так чтобы совсем по-простому.
HardJoker
Цитата(InsolentS @ Mar 29 2009, 04:28) *
magazine/p...s5(Pg54-56).pdf[/url] . Ну, или какой-нибудь простой, недорогой и доступный аппаратный кодек. rolleyes.gif


JPEG2000 от Analog Dev. подойдет - http://www.analog.com/en/audiovideo-produc...ucts/index.html? Но дешевле 30$ не выйдет.
InsolentS
Цитата(Rst7 @ Mar 29 2009, 10:25) *
Сколько кадров в секунду хочется? Я тут выкладывал JPEG-кодер, в среднем на 5 миллионов тактов на кадр можно расчитывать. Т.е. порядка 12 кадров в секунду при тактовой 60МГц. Это так чтобы совсем по-простому.

Спасибо, кажется то что нужно, буду пробовать! 5 кадров в секунду хватит за глаза.
Что касается ADV212, 2000р за штуку 07.gif Дешевле готовые китайские видеорегистраторы покупать и юзать biggrin.gif
etoja
12 кадров в секунду на ARM7 не получится, поскольку:
1) нужно время на ввод оцифрованного кадра, так как весь кадр не помещается даже в большое ОЗУ LPC2138 ;
2) нужно время на вывод сжатого видео опять же из-за малости внутреннего ОЗУ.
3) для межкадрового сжатия не хватит быстродействия. Проверено на алгоритмах H.261/H.263

Я разработал видеорегистратор с записью на карточку памяти MMC/SD ещё в 2005 году.
Неужели актуальность задачи сохранилась?
Rst7
Цитата
1) нужно время на ввод оцифрованного кадра, так как весь кадр не помещается даже в большое ОЗУ LPC2138 ;


Время нужно. Но это немного. Внешнее ОЗУ тоже нужно. Просто его можно подключить так-же, как я подключал к AVR - непосредственно щелкая GPIO.

Цитата
2) нужно время на вывод сжатого видео опять же из-за малости внутреннего ОЗУ.


Неужели траффик на карточку хуже, чем ~80-100килобайт/с? wink.gif

Цитата
3) для межкадрового сжатия не хватит быстродействия.


Я пока банально предлагал каждый кадр драть JPEG'ом.

Да и вообще, человека устраивает 5 кадров/с. Там вообще проц стоять будет smile.gif
etoja
Цитата(Rst7 @ Mar 30 2009, 14:04) *
Неужели траффик на карточку хуже, чем ~80-100килобайт/с? wink.gif


Нужно будет бегать по FAT16(FAT32) для поиска свободных кластеров файла, в который будет записываться видеопоток.
Размер FAT около 400 килобайт, от тоже не лезет в ОЗУ. Частично его можно кешировать, но это опять требует места в ОЗУ и создаёт опасность
незаписи кеша в FAT при выключении питания.
Rst7
Цитата
Нужно будет бегать по FAT16(FAT32) для поиска свободных кластеров файла, в который будет записываться видеопоток.


А тут есть масса решений. Начиная от записи непосредственно в сектора заранее заготовленного файла до создания своей файловой системы.
InsolentS
Цитата(etoja @ Mar 30 2009, 12:14) *
12 кадров в секунду на ARM7 не получится, поскольку:
1) нужно время на ввод оцифрованного кадра, так как весь кадр не помещается даже в большое ОЗУ LPC2138 ;
2) нужно время на вывод сжатого видео опять же из-за малости внутреннего ОЗУ.
3) для межкадрового сжатия не хватит быстродействия. Проверено на алгоритмах H.261/H.263

Я разработал видеорегистратор с записью на карточку памяти MMC/SD ещё в 2005 году.
Неужели актуальность задачи сохранилась?

Удивительно, но очевидная проблема с ОЗУ "осенила" меня только сегодня, когда уже развёл схему и плату blush.gif Если Вам не трудно, поделитесь пожалуйста структурной схемой своего устройства. Там хардверный кодек?
etoja
Цитата(InsolentS @ Mar 30 2009, 20:46) *
Если Вам не трудно, поделитесь пожалуйста структурной схемой своего устройства.


Структура устройства:

АЦП + схема выделения синхроимпульсов(LM1881) -> программируемая логика (Xilinx) -> статическое ОЗУ 128К х 8 -> LPC2106 -> карточка MMC по интерфейсу SPI.

Вместо АЦП можно использовать SAA7113H.

LPC2106 имеет внутреннее ОЗУ = 64Кбайт.
Оцифровка кадра: аппаратная с помощью программируемой логики.
Сжатие кадра: программное по JPEG.
Файловая система: FAT16.
Кадры складываются в один кольцевой видеофайл таким образом, чтобы при пропадании, а затем восстановлении питания можно было найти место окончания видеозаписи.
zksystem
Цитата(etoja @ Mar 30 2009, 14:20) *
Нужно будет бегать по FAT16(FAT32) для поиска свободных кластеров файла, в который будет записываться видеопоток.
Размер FAT около 400 килобайт, от тоже не лезет в ОЗУ. Частично его можно кешировать, но это опять требует места в ОЗУ и создаёт опасность
незаписи кеша в FAT при выключении питания.

Не так страшен FAT, к тому же кеширование хотябы сектора ускорит работу в сотни раз. А если использовать SDIO c DMA - вообще получится праздник
InsolentS
Цитата(etoja @ Mar 31 2009, 11:37) *
Структура устройства:

АЦП + схема выделения синхроимпульсов(LM1881) -> программируемая логика (Xilinx) -> статическое ОЗУ 128К х 8 -> LPC2106 -> карточка MMC по интерфейсу SPI.

т.е. сжатие осуществляется с помощью ПЛИС ?
etoja
Цитата(InsolentS @ Apr 1 2009, 16:22) *
т.е. сжатие осуществляется с помощью ПЛИС ?


Нет, ПЛИС занимается только оцифровкой композитного видеосигнала и записью его во внешнее ОЗУ.
Сжатие осуществляется программой внутри процессора.

Существует телекамера со встроенным JPEG кодером: C328R
http://bansky.net/blog/2008/03/jpeg-camera...k/comments.html
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.