|
Cortex-M4F и сжатие видео на ходу, Вомзожно ли |
|
|
|
 |
Ответов
|
Nov 26 2013, 20:38
|
Гуру
     
Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954

|
для оценки можно взять циферки от блэкфина http://www.analog.com/en/dsp-software/bf_j...on-jpeg/sw.htmlи на 2, а то и на 3 помножить. jpeg - 50 блэкфиновских тактов на пиксель. 320*240*25 = 2МПикс/сек. то есть по хорошему кортексу надо бы 200-300МГц. с видео енкодерами с межкадровым сжатием (mpeg) всё еще хуже. можно конечно попробовать что-нибудь своё сгородить, тупо дельта кодирование или даже какой-нибудь простейший вэйвлет хаара (полусумма/полуразность, да еще и трехмерный, чтоб по времени) + энтропийное кодирование, но, имхо, если оно и влезет по быстродействию, сжатие будет не большое. да и с внешней памятью у STM32F4 через FSMC общение не самое быстрое, сколько там максимум, на 56МГц цикл шины? хотя у F429 есть и sdram контроллер и некие ухищрения в дма для графики, но не сильно это поможет.
|
|
|
|
|
Nov 27 2013, 05:21
|

Профессионал
    
Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831

|
Цитата(_pv @ Nov 27 2013, 00:38)  да и с внешней памятью у STM32F4 через FSMC общение не самое быстрое, сколько там максимум, на 56МГц цикл шины? На 25fps поток выходит почти 4Мбайт/сек, а для 16-битной внешней SRAM выйдет почти 2Мслова в сек. При использовании DMA перегон данных туда-сюда не сильно грузит проц. Я как-то сравнивал: DMA2 гнал данные из DCMI (камера OV7725) в ЖК по FSMC. Так вот нагрузка на проц на 168Мгц вырастала всего лишь на 0.2% (под TNKernel). Межкадровое кодирование необязательно, хватит обычного MJPEG. Т.е. вы считаете, что не потянет? На каком проце лучше это поднять? Нужен аппаратный интерфейс для работы с камерой и ЖК, USB device и нормальная среда и библиотеки для сжатия видео по возможности.
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
|
Nov 27 2013, 06:15
|

Профессионал
    
Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831

|
Цитата(jcxz @ Nov 27 2013, 09:53)  По-моему некорректное измерение. А Вы учли, что DMA занимает шину и если при отсутствии этого потока какие-то процессорные вычисления занимали N тактов, то при работающем DMA они уже будут занимать N+X тактов из-за ожиданий освобождения шины? Почему некорректно? Перед запуском всем процессов (в каждом процессе может быть несколько потоков) я замеряю за фиксированное время число входжений в idle поток. После пуска процессов сравниваю число вхождений в idle поток за тот же интервал времени с ранее замерянным без заботающих процессов. Разумеется здесь не учитываются накладные насходы RTOS. Так вот запуск процесса, который снимает картинку с камеры (~30fps) и кидает на экран (320x240) увеличивал загрузку с 1,5 до 1,7%. Но давайте не будем отклоняться от темы... )))
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
|
Nov 27 2013, 07:05
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(Forger @ Nov 27 2013, 12:15)  Почему некорректно? ... Так вот запуск процесса, который снимает картинку с камеры (~30fps) и кидает на экран (320x240) увеличивал загрузку с 1,5 до 1,7%. Но давайте не будем отклоняться от темы... ))) Потому, что у вас загрузка всего 1.5%, т.е. - CPU почти ничего не делает, крутится в малом регионе кода, который практически весь в кеше. Допустим у вас есть уже задача1, которая активно работает с ОЗУ и при её старте загрузка CPU увеличивается на 30% и становится равным 31.5% (т.е. - сама задача1 ест 30% времени CPU). Далее - запускаем ваш DMA-поток, загрузка CPU ==1.7%. Далее - запускаем задачу1. И сколько будет загрузка CPU? Думаете 31.7%? Я думаю - будет значительно больше, увеличение уже будет не на 30%, а скажем - на 35%. Это потому, что вы в своём расчёте загрузки CPU не учитываете загрузку шины. Цитата(Forger @ Nov 27 2013, 12:15)  Перед запуском всем процессов (в каждом процессе может быть несколько потоков) я замеряю за фиксированное время число входжений в idle поток. Число вхождений? Это как? И почему так? Вроде стандартный метод: замерить кол-во проходов некоего цикла за фиксированный интервал при нулевой загрузке CPU, получить N. Потом за этот-же интервал замерять кол-во проходов этого-же цикла при работающей системе, получать M. И находить отношение в % M/N.
|
|
|
|
|
Nov 27 2013, 11:14
|

Профессионал
    
Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831

|
Цитата(jcxz @ Nov 27 2013, 11:05)  Потому, что у вас загрузка всего 1.5%, т.е. - CPU почти ничего не делает, крутится в малом регионе кода, который практически весь в кеше. Делает. В RTOS есть системный таймер, который переключает потоки принудительно. Цитата Число вхождений? Это как? И почему так? В бесконечном цикле потока idle стоит инкремент некой переменной. И больше ничего. Мы говорим от об одном и том же. Вероятно, я неудачно объяснил... Цитата Вроде стандартный метод: замерить кол-во проходов некоего цикла за фиксированный интервал при нулевой загрузке CPU, получить N. Потом за этот-же интервал замерять кол-во проходов этого-же цикла при работающей системе, получать M. И находить отношение в % M/N. По сути, именно так я и делаю. Только не заставляю проц заниматься бесполезной работой по хождения по неким циклам. Достаточно просто замерить сколько времени проц проводит в ilde потоке, относительно варианта, когда нет ни одного потока, кроме idle. Цитата(Ozelot @ Nov 27 2013, 11:20)  Может используйте сенсоры со встроеным JPEG-энкодером (например MT9D111 или OV5642). Не подходят - нужна оч. высокая чувствительность, в OV7725 пиксель имеет размер аж 6 микрометров, чувствительность 3.8В/lux*c. Но у него нет JPEG. MT9D111 - пиксель 2.8um, а чувствительность 1В/lux*c OV5642 - пиксель 1.4um, а чувствительность всего 0.68В/lux*c Поэтому не подходят (( Цитата Если нужно оцифровывать и сжимать аналоговый видеосигнал, то можно использовать связку видеодекодер и SSD1928, в этом случае тоже сжатие JPEG. Сигнал цифровой, на исходном изображении с камеры требуется дорисовка некоторых картинок и текстов. MAX7456 и им подобные для видео сигнала - пройденный этам, не годятся. Поэтому работа исключительно с цифрой.
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
|
Nov 27 2013, 11:46
|

Частый гость
 
Группа: Свой
Сообщений: 115
Регистрация: 6-06-05
Из: Ukraine
Пользователь №: 5 764

|
Цитата(Forger @ Nov 27 2013, 14:14)  Сигнал цифровой, на исходном изображении с камеры требуется дорисовка некоторых картинок и текстов. MAX7456 и им подобные для видео сигнала - пройденный этам, не годятся. Поэтому работа исключительно с цифрой. SSD1928 может и цифру сжимать в JPEG (гляньте даташит). К тому же у него очень низкое энергопотребление. Вот только не знаю как сделать наложение
|
|
|
|
|
Nov 27 2013, 12:37
|

Профессионал
    
Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831

|
Цитата(Ozelot @ Nov 27 2013, 15:46)  SSD1928 может и цифру сжимать в JPEG (гляньте даташит). К тому же у него очень низкое энергопотребление. Вот только не знаю как сделать наложение  Согласен, чип действительно интересный - напрямую работает с камерой и экраном, внутри есть 256кб озу для картинки, этого вполне достаточно для 320x240. К нему тока нужен любой дешевый МК с нужной периферией. Спасибо за наводку )) Цитата(_pv @ Nov 27 2013, 16:25)  посмотрите на adsp-bf512..... но вот внешней шины памяти нет совсем Наверно вы что-то путаете, контроллер памяти у них есть: Memory controller providing glue-less connection to multiple banks of external SDRAM, SRAM, Flash, or ROMЦитата ну а дальше идут cortexы-A*, с линуксом и в некрасивых корпусах, зато любое видеосжатие потянут, хотя allwinner 13 или iMX233 в есть и в qfp. https://www.olimex.com/Products/OLinuXino/A13/https://www.olimex.com/Products/OLinuXino/iMX233/Увы, наблюдается некий разрыв - либо максимум Cortex-M4F с удобным тулчейном (тот же привычный keil), либо BGA-монстры, которые даже слишком круты для моей задачи, не вся нужная периферия на борту, да и тулчейн под них - отдельный разговор...
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
Сообщений в этой теме
Forger Cortex-M4F и сжатие видео на ходу Nov 26 2013, 17:46        _pv Цитата(Forger @ Nov 27 2013, 19:37) Навер... Nov 27 2013, 13:35  _pv Цитата(Forger @ Nov 27 2013, 11:21) На 25... Nov 27 2013, 08:37   Forger Цитата(_pv @ Nov 27 2013, 12:37) вопрос в... Nov 28 2013, 13:16    _pv Цитата(Forger @ Nov 28 2013, 20:16) Ради ... Nov 28 2013, 13:30     Forger Цитата(_pv @ Nov 28 2013, 17:30) отличный... Nov 28 2013, 15:41  _pv Цитата(Forger @ Nov 27 2013, 11:21) На ка... Nov 27 2013, 12:25 Ozelot Может используйте сенсоры со встроеным JPEG-энкоде... Nov 27 2013, 07:20 yes у BF есть lqfp корпуса, есть индусский пример JPEG... Nov 27 2013, 13:40 Rst7 Я тут выкладывал когда-то JPEG-кодер, прилично опт... Nov 28 2013, 15:59 Forger Цитата(Rst7 @ Nov 28 2013, 19:59) Я тут в... Nov 28 2013, 16:02
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|