Къде мога да намеря пример за използване на драйвер за кодек v4l2

в кода на Raspberry-Pi има драйвер за кодек s5p-jpeg.

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

Може ли някой да ми каже къде мога да намеря пример как да го използвам? Или друг драйвер за кодек v4l2?

Търсих го в Google, но не мога да намеря нито един пример, който използва драйвер за кодек 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.

Има много приложения, които могат да записват видео на v4l2 OUTPUT устройство, ето няколко, за които знам:

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
Пиша потребителски инструмент за земя и искам да се науча как да го използвам. Търсих го в Google, но досега не мога да намеря нищо, което използва v4l2 кодек. Всички примери, които намирам, са за заснемане на видео. - person michael; 19.12.2013

Кодът тук осъществява достъп до драйвер за кодек v4l2

Той наистина проверява капачката V4L2_CAP_VIDEO_M2M

Базиран е на пример за улавяне на ядрото, но с допълнителен код

person Vincent Achard    schedule 03.03.2021