Где я могу найти пример использования драйвера кодека v4l2

в коде Raspberry-Pi есть драйвер кодека s5p-jpeg.

drivers/media/platform/s5p-jpeg/jpeg-core.c

Может кто-нибудь, пожалуйста, скажите мне, где я могу найти пример того, как его использовать? Или любой другой драйвер кодека v4l2?

Я гуглил для этого, но я не могу найти ни одного примера, который использует драйвер кодека v4l2.


person michael    schedule 07.12.2013    source источник
comment
Вопросы, в которых нас просят порекомендовать или найти инструмент, библиотеку или любимый сторонний ресурс, не относятся к теме Stack Overflow, поскольку они, как правило, привлекают самоуверенные ответы и спам. Вместо этого опишите проблему и то, что уже было сделано для ее решения.   -  person Ken White    schedule 07.12.2013
comment
чего ты хочешь добиться? что ты пробовал?   -  person umläute    schedule 17.12.2013
comment
Я пытаюсь научиться использовать драйвер кодека v4l2. Как передать входное изображение и как получить выходное изображение?   -  person michael    schedule 19.12.2013


Ответы (3)


(добавляя еще один ответ, так как он совершенно другой :-))

API «кодека» в спецификациях V4L2 относится к аппаратным кодекам. такой кодек представляет собой устройство, которое имеет следующие особенности:

  • аппаратный кодек отображается как /dev/videoX устройство

  • у него есть видеовход, куда ваше пользовательское приложение может отправлять видеопоток - например. содержащие видеокадры в формате JPEG, поэтому он имеет возможность V4L2_CAP_VIDEO_OUTPUT и

  • у него есть видеовыход, где ваше пользовательское приложение может читать видеопоток - например. содержащий несжатые кадры, поэтому он также имеет возможность V4L2_CAP_VIDEO_CAPTURE.

Существует множество приложений, которые могут записывать видео на устройство OUTPUT v4l2, вот некоторые из них, о которых я знаю:

afaik, у этих приложений нет специального кода для работы с «устройствами кодека v4l2», но они могут записывать/считывать с устройств v4l2, и это все, что вам нужно.

Также проверьте v4l-utils.git: посмотрите в utils/v4l2-ctl/v4l2-ctl-streaming.cpp.

person umläute    schedule 19.12.2013

v4l2 очень либерален, когда дело доходит до форматов: например. устройства захвата могут доставлять кадры практически в любом формате.

Поэтому, если вы пишете пользовательский инструмент (приложение, библиотеку,...; в отличие от драйвера ядра), не возитесь с кодеками (если можете этого избежать). Представьте, что каждое приложение в мире, которое хочет читать v4l2-потоки, должно добавлять код для декодирования кадров в кодеке SQ905C или MJPEG или еще в каком-то кодеке (каждое приложение добавляет свой собственный набор ошибочных реализаций).

Вместо этого умные люди создали библиотеку, которая будет распаковывать кадры, доставленные вашим устройством захвата, и предоставлять эти кадры стандартным способом: libv4l2.

Между прочим, если вы настаиваете на написании собственного кода, libv4l2 является хорошей эталонной реализацией.

О, и если бы вы думали о простой загрузке модуля для кодирования/декодирования в пространстве ядра (например, у вас есть веб-камера "foo", которая доставляет изображения в формате "XYZ", но вы хотите, чтобы она доставляла изображения в формате " ABC" путем добавления модуля ядра), то вам не повезло.

Линус Т. ясно дал понять [отсутствует ссылка], что код преобразования кодека не должен выполняться в пространстве ядра.

person umläute    schedule 17.12.2013
comment
Я пишу инструмент пользовательской земли, и я хочу узнать, как его использовать. Я его гуглил, но пока не могу найти ничего, что использует кодек v4l2. Все примеры, которые я нахожу, предназначены для захвата видео. - person michael; 19.12.2013

Код здесь обращается к драйверу кодека v4l2.

Он действительно проверяет шапку V4L2_CAP_VIDEO_M2M.

Он основан на примере захвата ядра. но с дополнительным кодом

person Vincent Achard    schedule 03.03.2021