На текущий момент есть небольшая проблема с adv7180 - при захвате видео при помощи gstreamer наблюдаются "бегающие" кадры (при этом утилиты unit_test работают правильно), судя по всему неправильно определяется размер кадра и соотвественно выделяется буфер неподходящего размера. Есть простой способ избежать этого без правки исходников через параметры плагина. Пример для захвата видео, кодирования "налету" в h264 и сохранение в файл в формате avi (видеосигнал - PAL)
Добрый день!
Воспользовался Вашим советом насчет preview. Действительно кадры перестали мерцать. Но есть следующая проблема при захвате видео с композитного входа и аудио с микрофона - в результирующем файле видео идет в явно ускоренном темпе (в 2-3 раза быстрее чем должно), звук вроде нормально (но естественно сразу рассинхронизируется с видео, т.к. оно ускоренное). При этом preview выглядит совершенно нормально.
Более того даже если не примешивать звук, то видео все равно ускоренное (там тяжелее оценить насколько ускоренное).
Пробовал использовать разные контейнеры (avi и mkv) - не помогло. Пробовал разные типы кодеков (codec-type=...) - не помогло.
Запись делаю так
Видел похожую ситуацию на другой борде (тоже от starterkit только с камнем OMAP_L138) так там выяснилось, что процессор просто не успевает кодировать в h264 и поэтому теряет кадры, а при воспроизведении пропуски кадров проводили к ускоренному воспроизведению. Но неужели IMX53 не может выжать 30 fps на разрешении 720х576 со звуком?
Заранее благодарен за любую информацию.
С уважением
Сергей
Есть смутное подозрение, что preview довольно сильно подгружает VPU. В ситуации описанной мною выше загрузка проца почти нулевая, но вся деятельность по кодированию и преобразованиям лежит, я так понимаю, на VPU и это действительно может его сильно тормозить. К сожалению обойтись без preview и проверить это не получается (кадровая рассинхронизация).
Сильно сомневаюсь что preview может нагружать VPU, потому что далется он через IPU, а вообще VPU может кодировать два потока 720P одновременно, насчет 4 заявленных не знаю - будет в Linux работать.
Интересно - в драйвере adv7180 добавлена инициализация регистров которые не описаны в даташите - у меня Rev. F
adv7180_write_reg(0x3E, 0x6A);
adv7180_write_reg(0x3F, 0xA0);
adv7180_write_reg(0x55, 0x81);
Эти регистры есть в примерах настройки - раздел I2C Programming Examples.
Вообще за данной серией уже было замечено, что некоторые регистры то появляются, то пропадают от ревизии к ревизии даташита.
Да - нашел, только ясности не прибавилось :) судя по всему ничего интересного кроме инициализации этих регистров в патче ядра нет - там добавлена поддержка 16 битного интерфейса и деинтерлейсинг в v4l output.
Где реализована поддержка режима preview в драйвере ядра или в плагине mfw_v4lsrc ? Вопрос этот возник потому, что очевидно при активном preview делается что-то убирающее рассинхранизацию. При этом я наблюдал следующую ситуацию - я запустил запись видео с включенным preview и потом срубил gst-launch через kill -9, соответственно gs-launch из списка процессов исчез, но вывод preview на экран продолжался !!! Получается, что вывод в /dev/fb0 делает сам драйвер (плагин просто включает или не включает его). Если это все так, то код содержащий баг приводящий к рассинхранизации находится в драйвере и случится этот глюк или нет зависит от включения или не включения preview. Правильно ли я понимаю?
не могу ответить на этот вопрос потому что не занимался плотно, надо смотреть плагин и драйверы IPU и adv7180, а еще лучше imxcommunity полистать - там много тем про adv7180.