1.27.4. 與舊裁剪API的比較¶
引入選擇API是為了彌補舊版裁剪API的不足,舊API旨在控制簡單的捕獲裝置。後來,裁剪API被影片輸出驅動程式採用。ioctl 用於選擇顯示屏上插入影片訊號的部分。這應該被視為一種API濫用,因為所描述的操作實際上是合成(composing)。選擇API透過設定適當的目標,明確區分了合成和裁剪操作。
裁剪API缺乏對記憶體緩衝區內影像的合成和裁剪的任何支援。應用程式可以透過濫用 V4L2 API 來配置捕獲裝置,使其僅填充影像的一部分。透過設定結構體 v4l2_pix_format 中的 bytesperline 欄位,可以從較大影像中裁剪出較小影像。引入影像偏移量可以透過在呼叫 VIDIOC_QBUF 之前修改結構體 v4l2_buffer 中的 m_userptr 欄位來完成。應避免這些操作,因為它們不可移植(位元組序問題),並且不適用於宏塊和拜耳格式以及mmap緩衝區。
選擇API以清晰、直觀和可移植的方式處理緩衝區裁剪/合成的配置。接下來,選擇API引入了填充目標(padded target)和約束標誌(constraints flags)的概念。最後,結構體 v4l2_crop 和結構體 v4l2_cropcap 沒有保留欄位。因此,無法擴充套件它們的功能。新的結構體 v4l2_selection 為未來的擴充套件提供了大量空間。
鼓勵驅動程式開發人員僅實現選擇API。舊的裁剪API將使用新的API進行模擬。