реклама на сайте
подробности

 
 
> Cortex-M4F и сжатие видео на ходу, Вомзожно ли
Forger
сообщение Nov 26 2013, 17:46
Сообщение #1


Профессионал
*****

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



Подскажите, плиз, кто имел опыт сжатия видео на ходу на Cortex-M4F, в частности на STM32F4 или другом проце на таком ядре.
Возможно ли сжать на этих МК на ходу видео 320x240, 2 байта на пиксель, 25 fps и выше?
Скажем, в формат MJPEG. Исходные данные идут в формате YCbCr 4:2:2 или RGB565.
Если это анреал, то что посоветуете дешевое, без линуксов и с нормальным (IDE).


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_pv
сообщение Nov 26 2013, 20:38
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 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 контроллер и некие ухищрения в дма для графики, но не сильно это поможет.
Go to the top of the page
 
+Quote Post
Forger
сообщение Nov 27 2013, 05:21
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 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 и нормальная среда и библиотеки для сжатия видео по возможности.


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
jcxz
сообщение Nov 27 2013, 05:53
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Forger @ Nov 27 2013, 11:21) *
На 25fps поток выходит почти 4Мбайт/сек, а для 16-битной внешней SRAM выйдет почти 2Мслова в сек.
При использовании DMA перегон данных туда-сюда не сильно грузит проц.
Я как-то сравнивал: DMA2 гнал данные из DCMI (камера OV7725) в ЖК по FSMC.
Так вот нагрузка на проц на 168Мгц вырастала всего лишь на 0.2% (под TNKernel).

По-моему некорректное измерение.
А Вы учли, что DMA занимает шину и если при отсутствии этого потока какие-то процессорные вычисления занимали N тактов,
то при работающем DMA они уже будут занимать N+X тактов из-за ожиданий освобождения шины?
Go to the top of the page
 
+Quote Post
Forger
сообщение Nov 27 2013, 06:15
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 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%.
Но давайте не будем отклоняться от темы... )))


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
jcxz
сообщение Nov 27 2013, 07:05
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 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.
Go to the top of the page
 
+Quote Post
Forger
сообщение Nov 27 2013, 11:14
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 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 и им подобные для видео сигнала - пройденный этам, не годятся.
Поэтому работа исключительно с цифрой.


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
Ozelot
сообщение Nov 27 2013, 11:46
Сообщение #8


Частый гость
**

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



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


SSD1928 может и цифру сжимать в JPEG (гляньте даташит). К тому же у него очень низкое энергопотребление.
Вот только не знаю как сделать наложение sad.gif
Go to the top of the page
 
+Quote Post
Forger
сообщение Nov 27 2013, 12:37
Сообщение #9


Профессионал
*****

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



Цитата(Ozelot @ Nov 27 2013, 15:46) *
SSD1928 может и цифру сжимать в JPEG (гляньте даташит). К тому же у него очень низкое энергопотребление.
Вот только не знаю как сделать наложение sad.gif

Согласен, чип действительно интересный - напрямую работает с камерой и экраном, внутри есть 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-монстры, которые даже слишком круты для моей задачи, не вся нужная периферия на борту, да и тулчейн под них - отдельный разговор...


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 20:30
Рейтинг@Mail.ru


Страница сгенерированна за 0.02444 секунд с 7
ELECTRONIX ©2004-2016