Firma Murena představila /e/OS verze 2.0. Jde o alternativní sestavení Androidu bez aplikací Google. Mezi novinkami je podrobnější nastavení ochrany soukromí před sledováním aplikacemi. Murena prodává několik smartphonů s předinstalovaným /e/OS (Fairphone, repasovaný Google Pixel 5).
Do 30. května lze v rámci akce Warhammer Skulls 2024 získat na Steamu zdarma hru Warhammer 40,000: Gladius - Relics of War.
HelenOS (Wikipedie), tj. svobodný operační systém českého původu založený na architektuře mikrojádra, byl vydán ve verzi 0.14.1. Přehled novinek v poznámkách k vydání. Vypíchnou lze nabídku Start. Videopředstavení na YouTube.
BreadboardOS je firmware pro Raspberry Pi Pico (RP2040) umožňující s tímto MCU komunikovat pomocí řádkového rozhraní (CLI). Využívá FreeRTOS a Microshell.
Vývojáři KDE oznámili vydání balíku aplikací KDE Gear 24.05. Přehled novinek i s náhledy a videi v oficiálním oznámení. Do balíku se dostalo 5 nových aplikací: Audex, Accessibility Inspector, Francis, Kalm a Skladnik.
Byla vydána (𝕏) nová verze 18.0.0 open source webového aplikačního frameworku Angular (Wikipedie). Přehled novinek v příspěvku na blogu.
V neděli 26. května lze navštívit Maker Faire Rychnov nad Kněžnou, festival plný workshopů, interaktivních činností a především nadšených a zvídavých lidí.
Byla vydána nová stabilní verze 3.20.0, tj. první z nové řady 3.20, minimalistické linuxové distribuce zaměřené na bezpečnost Alpine Linux (Wikipedie) postavené na standardní knihovně jazyka C musl libc a BusyBoxu. Z novinek lze vypíchnou počáteční podporu 64bitové architektury RISC-V.
Společnost Jolla na akci s názvem Jolla Love Day 2 - The Jolla comeback představila telefon se Sailfish OS 5.0 Jolla Community Phone (ve spolupráci se společností Reeder) a počítač Jolla Mind2 Community Edition AI Computer.
Po dokončení šesté části seriálu už víme, jak video zařízení nastavit a jak tam a zpět přenášet snímky. Je však známo, že uživatelé nejsou nikdy spokojení; nestačí jim, že mohou z kamery vidět video, hned by si chtěli hrát s parametry jako jas, kontrast atd. Takové úpravy mohou být prováděny ve video aplikaci, ale pokud to hardware podporuje, tak má své výhody je provádět rovnou v hardwaru. Například úprava jasu může znamenat ztrátu dynamického rozsahu, pokud se provádí až po přenosu. Naproti tomu hardwarová úprava umožňuje zachování plného rozsahu, kterého je senzor schopen. Hardwarové úpravy samozřejmě také ulehčí procesoru hostitelského systému.
Současný hardware mívá možnost nastavovat za běhu velkou spoustu parametrů. Konkrétní funkce těchto parametrů se však zařízení od zařízení výrazně liší. I tak jednoduchá úprava jako "jas" může zahrnovat přímočaré nastavení registru nebo také o dost komplexnější změnu nějaké obskurní transformační matice. Bylo by fajn co nejvíce těchto detailů před aplikací skrýt, ale má to své meze. Příliš abstraktní rozhraní by mohlo znemožnit plné využití možností hardwaru.
Ovládací rozhraní V4L2 se snaží věci co nejvíce zjednodušit a zároveň umožnit plné využití hardwaru. Začíná definicí standardních názvů ovládacích funkcí; patří mezi ně V4L2_CID_BRIGHTNESS, V4L2_CID_CONTRAST, V4L2_CID_SATURATION a mnoho dalších. Máme také booleovské ovládací prvky funkcí jako vyvážení bílé, horizontálního a vertikálního zrcadlení atd. Kompletní seznam předdefinovaných ID hodnot ovládacích prvků najdete ve specifikaci V4L2 API. K dispozici je také možnost ovládacího prvku specifického pro ovladač, ale ty budou zjevně používány jen specializovanými aplikacemi. Soukromé ovládací prvky začínají u V4L2_CID_PRIVATE_BASE.
Jako obvykle poskytuje API V4L2 mechanismus, pomocí kterého může aplikace ovládací prvky snadno očíslovat. Pokud to chce provést, provede ioctl() volání, která se dostanou do V4L2 ovladače prostřednictvím zpětného volání vidioc_queryctrl():
int (*vidioc_queryctrl)(struct file *file, void *private_data, struct v4l2_queryctrl *qc);
Za normálních okolností ovladač zaplní strukturu qc informacemi o požadovaném ovládacím prvku nebo, pokud není ovládací prvek podporovaný, vrátí EINVAL. Tato struktura má několik polí:
struct v4l2_queryctrl { __u32 id; enum v4l2_ctrl_type type; __u8 name[32]; __s32 minimum; __s32 maximum; __s32 step; __s32 default_value; __u32 flags; __u32 reserved[2]; };
Ovládací prvek, o který se jedná, bude předán prostřednictvím id. Aplikace může poskytnout ID ovládacího prvku s nastaveným bitem V4L2_CTRL_FLAG_NEXT_CTRL; v takovém případě by měl ovladač vrátit ID ovládacího prvku následujícího po tom, který předala aplikace. id by však každopádně mělo být nastaveno na ID ovládacího prvku, který je skutečně popisován.
Všechna ostatní pole nastaví ovladač, aby popsal zvolený ovládací prvek. Datový typ ovládacího prvku je uveden v type; může to být V4L2_CTRL_TYPE_INTEGER, V4L2_CTRL_TYPE_BOOLEAN, V4L2_CTRL_TYPE_MENU (pro neměnnou sadu voleb) nebo V4L2_CTRL_TYPE_BUTTON (pro ovládací prvek, který při nastavení provede nějakou akci a ignoruje jakoukoliv předanou hodnotu). name popisuje ovládací prvek; může být použito v rozhraní, které aplikace prezentuje uživateli. U celočíselných ovládacích prvků popisují minimum a maximum rozsah hodnot, které prvek implementuje, a step udává velikost kroků daného rozsahu. default_value je výchozí hodnota, ale aplikovat lze pouze na ovládací prvky typu celé číslo, boolean a menu. Ovladače by měly hodnoty ovládacích prvků nastavovat na výchozí jen při inicializaci; stejně jako ostatní parametry zařízení, i tyto by měly přežít volání open() a close(). Z toho vyplývá, že default_value vůbec nemusí odpovídat aktuální hodnotě ovládacího prvku.
Kromě toho máme ještě sadu příznaků, které ovládací prvek dále popisují.
Aplikace si mohou přát dotázat jen na několik ovládacích prvků, které mají naprogramovány, nebo mohou chtít očíslovat celou sadu. Ve druhém případě začnou u V4L2_CID_BASE a budou pokračovat až k V4L2_CID_LASTP1, např. pomocí V4L2_CTRL_FLAG_NEXT_CTRL. U ovládacích prvků typu menu (typ V4L2_CTRL_TYPE_MENU) budou aplikace pravděpodobně chtít očíslovat i možné hodnoty. Příslušné zpětné volání:
int (*vidioc_querymenu)(struct file *file, void *private_data, struct v4l2_querymenu *qm);
Struktura v4l2_querymenu vypadá takto:
struct v4l2_querymenu { __u32 id; __u32 index; __u8 name[32]; __u32 reserved; };
Při vstupu je id hodnota ID daného ovládacího prvku typu menu a index je hodnota indexu konkrétní položky menu. Indexové hodnoty začínají nulou a pokračují až k hodnotě maximum, kterou vrátila vidioc_queryctrl(). Ovladač vyplní name položky menu; pole reserved by mělo být nastaveno na nulu.
Jakmile aplikace ví o dostupných ovládacích prvcích, pustí se pravděpodobně do zjišťování a měnění jejich hodnot. Struktura používaná pro tento účel je relativně jednoduchá:
struct v4l2_control { __u32 id; __s32 value; };
Aby se mohla aplikace dotázat na konkrétní ovládací prvek, nastaví id na ID prvku a provede volání, které se do ovladače dostane jako:
int (*vidioc_g_ctrl)(struct file *file, void *private_data, struct v4l2_control *ctrl);
Ovladač by měl nastavit value na aktuální nastavení ovládacího prvku. Měl by se také samozřejmě ujistit, že o tom konkrétním prvku ví, a případně vrátit EINVAL, pokud by se aplikace pokoušela dotazovat na neexistující prvek. Pokusy o dotazování na tlačítkové ovládací prvky by také měly vracet EINVAL.
Požadavek na změnu ovládacího prvku dopadne takto:
int (*vidioc_s_ctrl)(struct file *file, void *private_data, struct v4l2_control *ctrl);
Ovladač by měl ověřit id a ujistit se, že value je v mezích povoleného rozsahu. Pokud je vše v pořádku, měla by být nová hodnota nastavena v hardwaru.
Nakonec stojí za zmínku, že v rámci V4L2 je podporováno samostatné rozhraní s rozšířenými ovládacími prvky. Je určeno pro poměrně komplexní ovládací prvky; v praxi se využije především pro parametry k enkódování a dekódování MPEG. Rozšířené ovládací prvky mohou být seskupovány do tříd a jsou podporovány i 64bitové celočíselné hodnoty. Rozhraní je podobné tomu obyčejnému; podrobnosti najdete ve specifikaci.
Nástroje: Tisk bez diskuse
Tiskni Sdílej: