V4L2文件翻譯(三)

2021-06-21 16:20:05 字數 2196 閱讀 3840

裝置通常有一些使用者可設定的控制器,如亮度和飽和度等等一些會展示在圖形使用者介面的東西。但不同裝置會有不同的可用設定,而且此外其可設定值範圍、預設值在不同裝置上也不盡相同。控制ioctl提供創造乙個良好使用者介面的資訊和機制,這會讓這些控制器在任何裝置上都能正確的工作。

所有控制器都需通過id值進行訪問。v4l2定義了一些用於特殊目的的id。驅動也可以使用v4l2cid_private_base和更大的值宣告其自定義控制器。預定義的id帶有字首v4l2_cid,在table 1.1. control ids中列出

這些id用來查詢乙個控制器的屬性、用來獲取或設定當前的設定值。

通常應用程式應當明確提出關於他們的目標的一些控制器。每個控制器的名字應該便於理解,如果目標不便理解,驅動開發者應該提供使用者文件,使用者可用以涉入驅動或開發盤控制程式。預定義id應介紹一點控制程式設計,如在通道切換期間使裝置靜音。

附帶:色溫表(來自 溫度

光源1700k

火柴1850k

燭光、日出、日落

2700-3300k

白熾燈3000k

柔(暖)光燈、日光燈

3200k

畫室燈光

3350k

製作室燈光

4100-4150k

月光5000k

水平的日光、管燈、冷光燈

5500-6000k

豎向日光,電子閃光

6200k

氙氣閃光燈

6500k

陰天6500-10500k

lcd crt螢幕

15000-27000

清純的藍色極光

應用程式可以通過vidioc_queryctrl和vidioc_querymenu ioctl來列舉有效的控制,通過vidioc_g_ctrl和vidioc_s_ctrl來獲取和設定控制值。當裝置擁有乙個或以上的設定時,驅動必須宣告vidioc_queryctrl、vidioc_g_ctrl、vidioc_s_ctrl。當有乙個或以上的選單型別控制時還必須其對應驅動還必須宣告vidioc_querymenu。

例1.8 列舉所有控制

struct v4l2_queryctrl queryctrl;

struct v4l2_querymenu querymenu;

static void

enumerate_menu (void)

}}memset (&queryctrl, 0, sizeof (queryctrl));

for (queryctrl.id = v4l2_cid_base;

queryctrl.id < v4l2_cid_lastp1;

queryctrl.id++) else

}for (queryctrl.id = v4l2_cid_private_base;;

queryctrl.id++) else

}

例1.9 更改控制

struct v4l2_queryctrl queryctrl;

struct v4l2_control control;

memset (&queryctrl, 0, sizeof (queryctrl));

queryctrl.id = v4l2_cid_brightness;

if (-1 == ioctl (fd, vidioc_queryctrl, &queryctrl)) else

} else if (queryctrl.flags & v4l2_ctrl_flag_disabled) else

}memset (&control, 0, sizeof (control));

control.id = v4l2_cid_contrast;

if (0 == ioctl (fd, vidioc_g_ctrl, &control))

/* ignore if v4l2_cid_contrast is unsupported */

} else if (errno != einval)

control.id = v4l2_cid_audio_mute;

control.value = true; /* silence */

/* errors ignored */

ioctl (fd, vidioc_s_ctrl, &control);

V4L2文件翻譯(一)

相關資料 裝置命名 每乙個驅動註冊乙個或多個裝置節點後他們的主裝置號都是81,而子裝置號在0 255之間。除非通過config video fixed minor ranges編譯選項編譯核心,否則子裝置號是動態分配的。而且,子裝置號分配範圍與裝置節點型別有關 video radio等 很多驅動支援...

V4L2文件翻譯(八)

struct v4l2 pix format型別 成員名描述 u32 width 寬度 畫素 u32 height 高度 畫素 若field是v4l2 field top v4l2 field bottom v4l2 field alternate之一那麼高度指的是此區域的行數,否則的話指的是此幀的...

V4L2文件翻譯(一)

裝置命名 每乙個驅動註冊乙個或多個裝置節點後他們的主裝置號都是81,而子裝置號在0 255之間。除非通過config video fixed minor ranges編譯選項編譯核心,否則子裝置號是動態分配的。而且,子裝置號分配範圍與裝置節點型別有關 video radio等 很多驅動支援通過vid...