Ник:
Пароль:

Контакты

Cтатус Skype: starterkit.ru
тел.: (+7 3412) 478-448
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
E-mail: info@starterkit.ru
Партнеры:
otladka.com.ua - г.Киев

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:4
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:8
Форум » starterkit.ru » Вспомогательные средства
SK-TW6869
Sol
Добавлено 29.05.2018 14:34 Сообщение: 41
Sol
0

Пункты: 578
Регистрация: 01.07.2010
Цитата

поменяйте
#define TW_DEFAULT_V4L2_STD V4L2_STD_NTSC
конвеер не конфигурируется динамически.


Спасибо, у меня действительно камеры NTSC и подход с заменой строки в исходниках драйвера помог!

Цитата

у меня работает - синий экран если нет сигнала

Да, у меня так же. Под "не работает" следует помнимать "синий экран не меняется на изображение с камеры"

Цитата

По хорошему - надо бы добавить параметр для плагина imxv4l2videosrc для дефолтного стандарта а не исходники в ядре править.

Даже если будет параметр для плагина то это не панацея - в моем случае подтыкаемая камера может быть как PAL, так и NTSC, и какая именно может быть ясно только после запуска пайплайна.

Отсюда следующий вопрос - можно ли из userspace'а отловить событие появления видеосигнала на входе TW6869 (по сути это соответствует сообщению в консоли tw6869 0000:01:00.0: tw6869_irq: ch1: signal recovered)?

Если перезапускать пайплайн целиком по этому событию то он будет (надеюсь) нормально стартовать с автоопределением стандарта.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 29.05.2018 15:08 Сообщение: 42
sasamy
4.77

Пункты: 60891
Регистрация: 14.08.2009
Цитата

Даже если будет параметр для плагина то это не панацея - в моем случае подтыкаемая камера может быть как PAL, так и NTSC, и какая именно может быть ясно только после запуска пайплайна.


сначала подключить камеру а потом конвеер запустить - никак ? в таком случае вообще ничего менять не надо, собственно какой смысл от синего экрана ? Можно в своем приложении опрашивать периодически через ioctl наличие сигнала и запускать конвеер когда он появился. Фреймбуфер синим цветом (или любым другим) и без gstreamer можно залить из юзерспейс.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 29.05.2018 23:51 Редактировалось 29.05.2018 23:53 Сообщение: 43
sasamy
4.77

Пункты: 60891
Регистрация: 14.08.2009
Цитата

Отсюда следующий вопрос - можно ли из userspace'а отловить событие появления видеосигнала на входе TW6869 (по сути это соответствует сообщению в консоли tw6869 0000:01:00.0: tw6869_irq: ch1: signal recovered)?

Если перезапускать пайплайн целиком по этому событию то он будет (надеюсь) нормально стартовать с автоопределением стандарта.


В принципе так примерно и должно быть по спецификации

https://linuxtv.org/downloads/v4l-dvb-apis-new/uapi/v4l/vidioc-querystd.html

Цитата

Drivers shall not switch the video standard automatically if a new video standard is detected. Instead, drivers should send the V4L2_EVENT_SOURCE_CHANGE event (if they support this) and expect that userspace will take action by calling ioctl VIDIOC_QUERYSTD. The reason is that a new video standard can mean different buffer sizes as well, and you cannot change buffer sizes on the fly. In general, applications that receive the Source Change event will have to call ioctl VIDIOC_QUERYSTD, and if the detected video standard is valid they will have to stop streaming, set the new standard, allocate new buffers and start streaming again.


только надо чтобы и плагин imxv4l2videosrc соблюдал ее и драйвер adv7180 в ядре NXP.
В общем проще отловить "вручную"

VIDIOC_QUERYSTD

https://github.com/sasamy/tw6869/blob/master/tw6869-video.c#L553

вернет

*std = V4L2_STD_UNKNOWN;

если нет сигнала с камеры
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 05.06.2018 22:14 Редактировалось 06.06.2018 08:03 Сообщение: 44
sasamy
4.77

Пункты: 60891
Регистрация: 14.08.2009
В архиве патч для драйвера tw6869 (при смене стандарта "на лету" драйвер сообщает об этом в юзерспейс в соответствии со спецификацией v4l2) и пример демонстрирующий принцип работы с этим в юзерспейс - при обнаружении смены стандарта конвеер перезапускается


https://yadi.sk/d/i87KpWLT3XB54v

forum-event_tst.tar.gz

Спуститься к концу Подняться к началу
Персональная информация
Sol
Добавлено 08.06.2018 16:55 Сообщение: 45
Sol
0

Пункты: 578
Регистрация: 01.07.2010
Цитата
В архиве патч для драйвера tw6869 (при смене стандарта "на лету" драйвер сообщает об этом в юзерспейс в соответствии со спецификацией v4l2) и пример демонстрирующий принцип работы с этим в юзерспейс - при обнаружении смены стандарта конвеер перезапускается


https://yadi.sk/d/i87KpWLT3XB54v

forum-event_tst.tar.gz



sasamy, добрый день!

Пропатчил драйвер, запустил пример, все работает, спасибо!

Есть мелкая тонкость что при смене стандарта на какое-то время на экране мусор, но думаю без проблем уберу это поверх в своем приложении.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 08.06.2018 22:20 Редактировалось 08.06.2018 22:21 Сообщение: 46
sasamy
4.77

Пункты: 60891
Регистрация: 14.08.2009
Цитата

Есть мелкая тонкость что при смене стандарта на какое-то время на экране мусор


мусор из-за несоответствия стандарта в настройках и входящих данных - сигнал присутствует поэтому авппаратно буфер не заливается выбранным цветом как при потере сигнала
Спуститься к концу Подняться к началу
Персональная информация
Sol
Добавлено 10.10.2018 17:13 Сообщение: 47
Sol
0

Пункты: 578
Регистрация: 01.07.2010
Уважаемый sasamy, добрый день!
Снова вопрос к вам.

Понадобилось поуправлять регистрами настройки аналоговой части tw6869.
Того что доступно средствами v4l2ctl.h и вынесено в ваш драйвер (brightness и т.п.) - к сожалению не достаточно, нужно иметь полный доступ к регистрам влияющим на оцифровку входного видеосигнала, т.к. сейчас есть некоторые проблемы с качеством картинки и видимо придется аккуратно подбирать параметры встроенных фильтров и т.п.

Поэтому вопрос - есть ли какой-то более-менее прямой путь организовать из userspace доcтуп к регистрам аналоговой части tw6869 кроме как вручную добавления их всех в драйвер с выносом интерфейса в v4l2ctl?
Интересуют регистры по адресам 0x103, 0x181 и прочие влияющие на качество картинки. Так же было бы очень удобно уметь включать генерацию тестовых полос встроенную в tw6869.

Я пробовал достучаться до них через утилиту setpci из состава pciutils, но регистры с адресацией через DMA через нее не видны.

Прошу помощи.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 10.10.2018 22:20 Сообщение: 48
sasamy
4.77

Пункты: 60891
Регистрация: 14.08.2009
Цитата

вопрос - есть ли какой-то более-менее прямой путь организовать из userspace доcтуп к регистрам аналоговой части tw6869


Есть
https://linuxtv.org/downloads/v4l-dvb-apis/uapi/v4l/vidioc-dbg-g-register.html

тут патч для драйвера

https://yadi.sk/d/bw6UYHpjl600Xw

в ядре нужно включить опцию

Device Drivers --->
<*> Multimedia support --->
[*] Enable advanced debug functionality on V4L2 drivers

и отключить фрискейловские драйверы сенсоров - они с этой опцией выдают ошибки при сборке

Device Drivers --->
<*> Multimedia support --->
[*] V4L platform devices --->
< > OmniVision ov5640 camera support using mipi
< > OmniVision ov5647 camera support using mipi

MXC Camera/V4L2 PRP Features support --->
< > OmniVision ov5640 camera support
< > OmniVision ov5642 camera support
< > OmniVision ov5640 camera support using mipi

включить в buildroot v4l2-utils

Libraries --->
Hardware handling --->
[*] libv4l
[*] v4l-utils tools

пример использования

# v4l2-dbg -g 0x103
ioctl: VIDIOC_DBG_G_REGISTER
Register 0x00000103 = 11h (17d 00010001b)
# v4l2-dbg -s 0x103 0x1f
Register 0x00000103 set to 0x1f
# v4l2-dbg -g 0x103
ioctl: VIDIOC_DBG_G_REGISTER
Register 0x00000103 = 1fh (31d 00011111b)
Спуститься к концу Подняться к началу
Персональная информация
Sol
Добавлено 11.10.2018 17:16 Сообщение: 49
Sol
0

Пункты: 578
Регистрация: 01.07.2010
Цитата
Цитата

вопрос - есть ли какой-то более-менее прямой путь организовать из userspace доcтуп к регистрам аналоговой части tw6869


Есть
https://linuxtv.org/downloads/v4l-dvb-apis/uapi/v4l/vidioc-dbg-g-register.html

тут патч для драйвера

https://yadi.sk/d/bw6UYHpjl600Xw



Спасибо за руководство!
Сделал, работает. Правда у меня ядро 4.1.15, в пачте - 4.9.88, пришлось подрихтовать патч. Получается есть что-то свежее чем buildroot-2017.08 доступное к использованию? Не смог найти на форуме объявлений про это.

В общем я прошелся по всем возможным и невозможным регистрам - результата толкового не получил.
Суть того что хочу - убрать искажения цвета а-ля радуга на контрастных участках изображения.
Пример:

https://www.dropbox.com/s/xja8027caxpg5pn/20181011_154056.jpg?dl=0

Снятый участок оконной рамы сам по сути черно-белый, а после оцифровки tw6869 отчетлива видна "радуга" поверх, которая к тому же не статична и постоянно "прыгает".

Проверялось на нескольких разных камерах, везде этот эффект.
Плат тоже проверяли несколько, от SK-iMX6-MB до двух версий своей разработки.
Если подключить тестируемую камеру к обычному ЖК монитору - этого эффекта нет, т.е. это именно результат оцифровки tw6869.

Понимаю что вопрос не совсем по профилю, но может кто знает причину.
Теорию понимаю - проблемы с обработкой chroma из CVBS сигнала, но тсаованием значений регистров tw6869 убрать этот эффект не получается.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 12.10.2018 11:59 Сообщение: 50
sasamy
4.77

Пункты: 60891
Регистрация: 14.08.2009
Цитата
есть что-то свежее чем buildroot-2017.08 доступное к использованию?


готового для использования нет, 4.9.88 использую как тестовое - все новые изменния делаю на нем.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Вспомогательные средства