日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Entities、pads、links 实体、垫、链接

發(fā)布時間:2023/12/15 综合教程 34 生活家
生活随笔 收集整理的這篇文章主要介紹了 Entities、pads、links 实体、垫、链接 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Entities、pads、links 實(shí)體、墊、鏈接

Entities:
1.實(shí)體由一個struct media_entity實(shí)例表示。結(jié)構(gòu)通常嵌入到一個較高級別的結(jié)構(gòu),例如v4l2_subdev或video_device實(shí)例,雖然驅(qū)動程序
可以直接分配實(shí)體。
2.驅(qū)動程序初始化實(shí)體
media_entity_init(struct media_entity *entity, u16 num_pads,struct media_pad *pads, u16extra_links);
驅(qū)動向媒體設(shè)備注冊實(shí)體:
media_device_register_entity(structmedia_device *mdev, struct media_entity*entity);
驅(qū)動程序注銷實(shí)體:
media_device_unregister_entity(structmedia_entity *entity);
驅(qū)動程序釋放與實(shí)體相關(guān)聯(lián)的資源:
media_entity_cleanup(structmedia_entity * entity);

①可以在調(diào)用media_entity_init之前或之后初始化media_entity的name,type,flags,revision和group_id字段。嵌入在較高級別標(biāo)準(zhǔn)結(jié)構(gòu)中的
實(shí)體可以具有由較高級別框架設(shè)置其中的某些字段。
②由于pad的數(shù)目是預(yù)先已知的,所以pad陣列不是動態(tài)分配的,而是由實(shí)體驅(qū)動器管理。大多數(shù)驅(qū)動程序會將驅(qū)動程序陣列嵌入到驅(qū)動程序特
定的結(jié)構(gòu)中,從而避免動態(tài)分配。
③驅(qū)動程序必須在調(diào)用media_entity_init之前設(shè)置pad數(shù)組中每個pad的方向。該功能將初始化其他pad字段。
④與pad的數(shù)量不同,鏈接的總數(shù)不總是由實(shí)體驅(qū)動程序預(yù)先知道。作為初始估計,media_entity_init預(yù)分配等于襯墊數(shù)量的鏈路數(shù)量加上可
選數(shù)量的額外鏈路。如果鏈路數(shù)組增長超過初始估計,它將被重新分配。
⑥實(shí)體由唯一的正整數(shù)ID標(biāo)識。 驅(qū)動程序可以在注冊之前填充media_entity id字段來提供ID,或者請求媒體控制器框架自動分配ID。手動提
供ID的驅(qū)動程序必須確保所有ID是唯一的。ID不能保證是連續(xù)的,即使它們都由框架自動分配。
⑦注銷實(shí)體不會更改其他實(shí)體的ID,并且ID將永遠(yuǎn)不會重新用于新注冊的實(shí)體。當(dāng)媒體設(shè)備未注冊時,其所有實(shí)體都將自動取消注冊。不需要手
動實(shí)體注銷。
⑧在注銷實(shí)體后,必須在清除階段調(diào)用media_entity_cleanup函數(shù)。請注意,如果需要,驅(qū)動程序必須顯式釋放media_entity實(shí)例本身。
⑨實(shí)體具有描述實(shí)體能力和狀態(tài)的標(biāo)志,eg.MEDIA_ENT_FL_DEFAULT:表示給定類型的默認(rèn)實(shí)體。這可用于報告默認(rèn)的音頻和視頻設(shè)備或默認(rèn)
相機(jī)傳感器。
邏輯實(shí)體組可以通過將所有成員實(shí)體的組ID設(shè)置為相同的非零值來定義。實(shí)體組在內(nèi)核中不起作用,但在實(shí)體枚舉期間會報告給用戶空間。
group_id字段屬于媒體設(shè)備驅(qū)動程序,且不能由實(shí)體驅(qū)動程序觸摸。
10.如果幾個實(shí)體在邏輯上綁定在一起,媒體設(shè)備驅(qū)動程序應(yīng)該定義組。eg
- 攜帶相同媒體流的ALSA,VBI和視頻節(jié)點(diǎn)
- 與傳感器相關(guān)聯(lián)的透鏡和閃光控制器

Pads:
pad由一個struct media_pad實(shí)例表示,每個實(shí)體將其焊盤存儲在由實(shí)體驅(qū)動器管理的焊盤陣列中。驅(qū)動程序通常將數(shù)組嵌入到驅(qū)動程序特定
的結(jié)構(gòu)中。
pads由其實(shí)體和其在pads陣列中的基于0的索引來標(biāo)識。這兩個信息都存儲在media_pad結(jié)構(gòu)中,使media_pad指針可以存儲和傳遞鏈接引用的
規(guī)范方式。
pads具有描述pad的能力和狀態(tài)的標(biāo)志:
MEDIA_PAD_FL_SINK 表示該pad支持目標(biāo)數(shù)據(jù)。
MEDIA_PAD_FL_SOURCE 表示該pad支持源數(shù)據(jù)。
必須為每個pad設(shè)置MEDIA_PAD_FL_SINK和MEDIA_PAD_FL_SOURCE中的一個且僅有一個。

Links:
鏈接由struct media_link實(shí)例表示。每個實(shí)體存儲源自或針對鏈路陣列中的任何其pads的所有鏈路。因此,給定link被存儲兩次,一次在
源實(shí)體中,一次在目標(biāo)實(shí)體中。數(shù)組是預(yù)分配并根據(jù)需要動態(tài)增長。
驅(qū)動程序創(chuàng)建鏈接:
media_entity_create_link(struct media_entity *source, u16source_pad,struct media_entity*sink, u16 sink_pad,u32 flags);

每個實(shí)體的鏈接陣列中的條目被分配并且存儲指向源和接收pads的指針。

鏈接具有描述鏈接能力和狀態(tài)的標(biāo)志:
MEDIA_LNK_FL_ENABLED 表示鏈接已啟用,可用于傳輸媒體數(shù)據(jù)。當(dāng)兩個或更多鏈路以接收器焊盤為目標(biāo)時,每次只能啟用其中一個。
MEDIA_LNK_FL_IMMUTABLE 指示無法在運(yùn)行時修改鏈接啟用狀態(tài)。如果設(shè)置MEDIA_LNK_FL_IMMUTABLE,則由于始終啟用不可變鏈接,因此也
必須設(shè)置MEDIA_LNK_FL_ENABLED。

總結(jié)

以上是生活随笔為你收集整理的Entities、pads、links 实体、垫、链接的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。