2.19. V4L2 媒體控制器函式和資料結構¶
-
int v4l2_mc_create_media_graph(struct media_device *mdev)¶
在圖形中建立媒體控制器連結。
引數
struct media_device *mdev指向
media_device結構的指標。
描述
在 V4L2 側,在 PC 客戶的硬體上常見的實體之間新增連結:攝像頭感測器、音訊和影片 PLL-IF 解碼器、調諧器、模擬電視解碼器和 I/O 實體(影片、VBI 和軟體定義無線電)。
注意
網路攝像頭以一種非常簡單的方式建模:感測器直接連線到 I/O 實體。所有骯髒的細節,如縮放器和裁剪 HW 都被隱藏了。雖然這種對映對於以 v4l2 介面為中心的 PC 消費者硬體來說已經足夠了,但以 V4L2 子裝置為中心的攝像頭硬體不應該使用這個例程,因為它不會構建正確的圖形。
-
int v4l_enable_media_source(struct video_device *vdev)¶
如果空閒,則保持媒體源以供獨佔使用
引數
struct video_device *vdev指向
struct video_device的指標
描述
此介面呼叫 enable_source 處理程式來確定媒體源是否可以免費使用。 enable_source 處理程式負責檢查媒體源是否空閒,並啟動媒體源和與影片裝置關聯的媒體實體之間的管道。應該從更改源配置的 v4l2-core 和 dvb-core 介面呼叫此介面。
返回
成功時返回零,否則返回負錯誤程式碼。
-
void v4l_disable_media_source(struct video_device *vdev)¶
釋放媒體源
引數
struct video_device *vdev指向
struct video_device的指標
描述
此介面呼叫 disable_source 處理程式來釋放媒體源。 disable_source 處理程式停止媒體源和與影片裝置關聯的媒體實體之間的活動媒體管道。
返回
成功時返回零,否則返回負錯誤程式碼。
-
int v4l2_create_fwnode_links_to_pad(struct v4l2_subdev *src_sd, struct media_pad *sink, u32 flags)¶
從源子裝置到接收器襯墊建立基於 fwnode 的連結。
引數
struct v4l2_subdev *src_sd指向源子裝置的指標
struct media_pad *sink指向接收器襯墊的指標
u32 flags連結標誌
描述
此函式搜尋從源子裝置到單個接收器襯墊的基於 fwnode 端點的連線,如果找到合適的連線,則將它們轉換為到該襯墊的媒體連結。接收器可以在其 v4l2-async 通知器繫結回撥中呼叫該函式,以建立來自繫結源子裝置的連結。
flags 引數指定連結標誌。呼叫者應確保標誌有效,而不管可能建立的連結數量如何。例如,設定 MEDIA_LNK_FL_ENABLED 標誌將導致所有建立的連結都被啟用,如果建立了多個連結,則這無效。
注意
任何呼叫此函式的接收器子裝置都必須實現 .get_fwnode_pad 媒體操作,以便驗證傳遞給接收器的端點是否歸接收器所有。
成功時返回 0,失敗時返回負錯誤程式碼。
-
int v4l2_create_fwnode_links(struct v4l2_subdev *src_sd, struct v4l2_subdev *sink_sd)¶
從源子裝置到接收器子裝置建立基於 fwnode 的連結。
引數
struct v4l2_subdev *src_sd指向源子裝置的指標
struct v4l2_subdev *sink_sd指向接收器子裝置的指標
描述
此函式搜尋源子裝置和接收器子裝置之間的任何和所有 fwnode 端點連線,並將它們轉換為媒體連結。接收器子裝置可以在其 v4l2-async 通知器子裝置繫結回撥中呼叫該函式,以建立來自繫結源子裝置的所有連結。
注意
任何呼叫此函式的接收器子裝置都必須實現 .get_fwnode_pad 媒體操作,以便驗證傳遞給接收器的端點是否歸接收器所有。
成功時返回 0,失敗時返回負錯誤程式碼。
-
int v4l2_pipeline_pm_get(struct media_entity *entity)¶
增加管道的使用計數
引數
struct media_entity *entity管道的根實體
描述
此函式已被棄用。請勿在新驅動程式中使用。改為在子裝置驅動程式上使用執行時 PM。
更新管道中所有實體的使用計數並開啟電源實體。
此函式旨在在影片節點開啟時呼叫。它使用 struct media_entity.use_count 來跟蹤電源狀態。此函式的使用應與 v4l2_pipeline_link_notify() 配對。
成功時返回 0,失敗時返回負錯誤程式碼。
-
void v4l2_pipeline_pm_put(struct media_entity *entity)¶
減少管道的使用計數
引數
struct media_entity *entity管道的根實體
描述
此函式已被棄用。請勿在新驅動程式中使用。改為在子裝置驅動程式上使用執行時 PM。
更新管道中所有實體的使用計數並關閉電源實體。
此函式旨在在影片節點釋放時呼叫。它使用 struct media_entity.use_count 來跟蹤電源狀態。此函式的使用應與 v4l2_pipeline_link_notify() 配對。
-
int v4l2_pipeline_link_notify(struct media_link *link, u32 flags, unsigned int notification)¶
連結管理通知回撥
引數
struct media_link *link連結
u32 flags將要應用的新連結標誌
unsigned int notification連結的狀態更改通知型別 (MEDIA_DEV_NOTIFY_*)
描述
此函式已被棄用。請勿在新驅動程式中使用。改為在子裝置驅動程式上使用執行時 PM。
透過更新連結源端和接收端中所有實體的使用計數來對供電管道上的連結管理做出反應。相應地開啟或關閉實體的電源。此函式的使用應與 v4l2_pipeline_pm_{get,put}() 配對。
成功時返回 0,失敗時返回負錯誤程式碼。假定關閉實體電源永遠不會失敗。此函式不會因斷開連線事件而失敗。