v4l2 очень либерален, когда дело доходит до форматов: например. устройства захвата могут доставлять кадры практически в любом формате.
Поэтому, если вы пишете пользовательский инструмент (приложение, библиотеку,...; в отличие от драйвера ядра), не возитесь с кодеками (если можете этого избежать). Представьте, что каждое приложение в мире, которое хочет читать v4l2-потоки, должно добавлять код для декодирования кадров в кодеке SQ905C
или MJPEG
или еще в каком-то кодеке (каждое приложение добавляет свой собственный набор ошибочных реализаций).
Вместо этого умные люди создали библиотеку, которая будет распаковывать кадры, доставленные вашим устройством захвата, и предоставлять эти кадры стандартным способом: libv4l2.
Между прочим, если вы настаиваете на написании собственного кода, libv4l2
является хорошей эталонной реализацией.
О, и если бы вы думали о простой загрузке модуля для кодирования/декодирования в пространстве ядра (например, у вас есть веб-камера "foo", которая доставляет изображения в формате "XYZ", но вы хотите, чтобы она доставляла изображения в формате " ABC" путем добавления модуля ядра), то вам не повезло.
Линус Т. ясно дал понять [отсутствует ссылка], что код преобразования кодека не должен выполняться в пространстве ядра.
person
umläute
schedule
17.12.2013