Portál AbcLinuxu, 4. května 2025 17:01
Seriál o programování linuxových ovladačů pro video zařízení využívající API Video4Linux2.
Tento článek původně vyšel jako součást Jaderných novin z 11. 10. 2006. Samostatný je jen kvůli zařazení do seriálu Video4Linux2 API.
Jonathan Corbet: nedávno jsem psal ovladač pro kameru - konkrétně tu, která bude dodávána v systému One Laptop Per Child. Ovladač používá jaderné API, které je pro podobné účely určené: Video4Linux2 API. Při psaní tohoto ovladače jsem zjistil něco vskutku šokujícího - toto API není zrovna dobře dokumentováno. I když uživatelská strana má dokumentaci docela dobrou. Ve snaze o nápravu této situace bude v následujících měsících LWN vydávat sérii článků, které popisují, jak pro rozhraní V4L2 psát ovladače.
V4L2 má dlouhou historii - první jiskřička se v očích Bill Dirkse rozsvítila v srpnu roku 1998. Vývoj pokračoval dlouhé roky, až bylo V4L2 API konečně zařazeno do hlavního jádra v listopadu 2002 při vydání 2.5.46. Dodnes však novější API mnohé ovladače nepodporují; konverze pořád probíhá. Mezitím se V4L2 vyvíjí, přičemž do 2.6.18 šly docela zásadní změny. Aplikací, které by fungovaly s V4L2, moc není.
V4L2 je navrženo pro podporu nejrůznějších zařízení, z nichž jen některé jsou skutečně "video":
Jsou možné i jiné druhy zařízení. V4L2 API má náznaky zařízení "codec" a "effect", která obě provádějí transformace proudů video dat. Tyto oblasti však ještě nebyly kompletně specifikovány - a o to méně implementovány. Ve starším V4L1 API také existují rozhraní "teletext" a "radio data system"; nebyly však přesunuty do V4L2 a nevypadá to, že by se to někdy v dohledné době chystalo.
Video zařízení se od mnohých jiných liší tím, jak hodně je lze konfigurovat. V důsledku toho implementuje většina ovladače V4L2 kód, který aplikacím umožní objevit možnosti daného zařízení a nakonfigurovat jej tak, aby fungovalo podle představ. V4L2 API definuje několik desítek zpětných volání pro konfigurační parametry jako frekvence tuneru, okna a ořezávání, počet snímků, video komprimace, video formáty atd. Značná část tohoto seriálu se bude věnovat právě konfiguračnímu procesu.
Pak je tu ještě ten drobný zádrhel, že je nutno provádět efektivní I/O v dané kvalitě videa. V4L2 API definuje tři různé způsoby přenosu video dat mezi uživatelským rozhraním a zařízením, z nichž některé jsou dosti komplexní. O video I/O a vrstvě video-buf, která je připravena pro provádění běžných úkolů, budou samostatné články.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.