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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第二季4:HI_S32 SAMPLE_VENC_1080P_CLASSIC(HI_VOID)函数的分析

發布時間:2023/12/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第二季4:HI_S32 SAMPLE_VENC_1080P_CLASSIC(HI_VOID)函数的分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

以下內容源于朱有鵬課程與海思相關SDK文檔的解讀,如有侵權,請告知刪除。

速覽點

1、標題函數(提取碼1111)在SDK/package/mmp/sample/venc/sample_venc.c中,由此文件的main函數引出。之所以研究該函數,是因為該函數符合課程與板子的特征。

2、此函數分步驟如下。

(1)step 1: init sys variable 初始化(填充)mpp系統的變量、參數

(2)step 2: mpp system init. 初始化mmp系統

(3)step 3: start vi dev & chn to capture 進行圖像的采集

(4)step 4: start vpss and vi bind vpss 啟動VPSS并綁定VI,進行圖像處理

(5)step 5: start stream venc進行編碼得到裸流文件

(6)step 6: stream venc process -- get stream, then save it to file. 將裸流存儲

(7)step 7: exit process退出進程

一、mpp系統的初始化

1、step 1: init sys variable 初始化(填充)mpp系統的變量、參數

  • ?輸出型參數

2、step 2: mpp system init. 初始化mmp系統

二、VI部分詳解

1、分析發現

  • 有些函數是sample目錄中的文件寫的,有些函數是調用MPP的API,所用的數據結構在兩者中都有相關定義。
  • 可以從前綴知道一些函數位置等信息。如HI_MPI_VI_SetDevAttr()函數,HI_MPI表示是調用MPP中的API,_VI表示是VI部分的函數。

2、學習方法

  • 該部分函數調用關系很復雜,需要繪制調用關系圖譜。
  • 全局把控熟悉整個過程全景視圖。
  • 掌握細節數據結構元素含義,和遇到的概念。
  • 知道某些關鍵操作在哪里定義,哪里設置,將來需要改的時候能找到地方。

3、函數調用圖譜【制提取碼1111】

4、根據圖譜分析內容

(1)常用Sensor的接口有三種:MIPI、LVDS、DC。

(2)WDR寬動態:讓同一幅圖不同區域曝光程度不一樣,這樣的一種技術讓很亮的和很暗的區域都能看清楚。

(3)isp即image signal process(圖像信號處理)。HI3518e內部集成了ISP處理單元,屬于硬件單元,隸屬于VI模塊。

(4)VI模塊包含3大部分:第一部分是和Sensor對接的部分,第二部分就是ISP,第三部分就是VI的dev(用來采集圖像的硬件單元)和channel(通道,一個設備可能有幾個不同的處理方式)。

三、VPSS部分詳解

1、VPSS的手冊部分解讀

(1)VPSS(Video Process Sub-System,視頻處理子系統)支持對一幅輸入圖像進行統一預處理,如去噪、去隔行等,然后再對各通道分別進行縮放、銳化等處理,最后輸出多種不同分辨率的圖像。(一進多出)

(2)VPSS 單元支持的具體圖像處理功能包括 FRC(Frame Rate Control)、Crop、NR(Noise Reduce)、LDC(Lens Distortion Correction)、Rotate、Cover/Overlay、Scale、Mirror/Flip、FishEye 等。

(3)重要概念

  • GROUP(單GROUP時,GROUP相當于VPSS;多GROUP時,分時復用VPSS硬件)
  • CHANNEL(不同的通道,即不同處理功能)。
  • VPSS相當于總加工廠。GROUP相當于某個車間,當工廠只有一個車間時,這個車間就是工廠!CHANNEL相當于某車間里具備某些功能的生產設備。
  • 一個GROUP有3條CHANNEL(可以設置有多少,這里設置為3)。

(4)VPSS上下文關系

  • 通過調用 SYS 模塊(即MPP模塊)的綁定接口(即HI_MPI_SYS_Bind),可將VPSS與 VI 和 VO/VENC/IVE 等模塊進行綁定,其中前者為 VPSS 的輸入源,后者為 VPSS 的接收者。
  • 用戶可通過提供的 MPI 接口對 GROUP進行管理。每個 GROUP 僅可與一個輸入源綁定。GROUP 的物理通道有兩種工作模式:AUTO 和 USER,兩種模式間可動態切換。默認的工作模式為 AUTO,此模式下各通道僅可與一個接收者綁定。若想使用 USER 模式,則需調用 MPI 接口進行設置,同時指定所需圖像的大小和格式,此模式下各通道可與多個接收者綁定。需要特別注意。特別注意的是,USER 模式主要用于對同一通道圖像進行多路編碼的場景,此模式下播放控制不生效,因此預覽和回放場景下不建議使用模式主要用于對同一通道圖像進行多路編碼的場景,此模式下播放控制不生效,因此預覽和回放場景下不建議使用 USER。
  • Hi3516A/Hi3518EV200/Hi3519V100 僅支持 USER 工作模式。

2、VPSS的函數調用關系圖譜

(1)代碼截圖:三個channel重復上面step4的過程。這里僅列出channel0的。

(2)注意SAMPLE_COMM_VI_BindVpss函數中有一段這樣的代碼。

  • 這表示將源(即VI,根據代碼,指的是設備0的通道0)綁定到目標(即VPSS,根據代碼,指的是0group的通道0)。
  • 然后使用HI_MPI_SYS_Bind函數進行綁定,這是在線形式(VI和VPSS之間不經過DDR)。

(2)注意SAMPLE_COMM_VPSS_EnableChn之前的一段代碼。

  • 這是設置VPSS的通道屬性。圖示的是channel0的屬性。

-----------------------------------------------------------------------------

3、截止目前代碼達到的效果

(1)VI部分調用sensor獲得圖像,并進行一些基本的處理,傳給VPSS的group0。

(2)VPSS的group0通過三個通道輸出三路分辨率不同的、未經過編碼的原始圖像,即720p(channel0,主碼流通道)、VGA(channel1)、svga(channel2)。

(3)接下來,三路原始圖像將進入編碼模塊進行編碼。

四、VENC 模塊

1、基礎知識

  • 模塊圖像編碼壓縮原理,參考:http://blog.csdn.net/newchenxf/article/details/51693753
  • 圖像Qp,參考:https://blog.csdn.net/u013354805/article/details/51988171

2、VENC模塊的描述

(1)VENC,即視頻編碼模塊。本模塊支持多路實時編碼,且每路編碼獨立,編碼協議和編碼 profile可以不同。本模塊支持視頻編碼同時,調度 Region 模塊對編碼圖像內容進行疊加與遮擋。

(2)VENC 模塊的輸入源包括三類:

  • 用戶態讀取圖像文件向編碼模塊發送數據;
  • 視頻輸入(VIU)模塊采集的圖像經視頻處理子系統(VPSS)發送到編碼模塊;
  • 視頻輸入(VIU)模塊采集的圖像直接發送到編碼模塊;
  • 不同型號的芯片支持不同的編碼規格,芯片支持的編碼規格如表所示。B-Basic,M-main,H-high,三種不同的profile。
  • JPEG是圖片,MOTION JPEG即MJPEG。

(3)數據流程圖·

  • 典型的編碼流程包括了輸入圖像的接收、圖像內容的遮擋和覆蓋(可選)、圖像的編碼、以及碼流的輸出等過程。
  • VENC模塊由接收通道模塊(VENC)編碼通道模塊(H.264/H.265/JPEG/MJPEG)組成。

1)接收通道

A、通道支持接收 YUV 格式圖像輸入(支持格式為 Semi-planar YUV 4:2:0 或 Semi-planar
YUV 4:2:2),其中 H.264/H.265 只支持 Semi-planar YUV 4:2:0,JPEG/MJPEG 支持 Semi-planar YUV 4:2:0 或 Semi-planar YUV 4:2:2。另外,Hi3518EV200 能夠支持單分量輸入(只存在 Y 分量)。通道模塊接收外部原始圖像數據,而不關心圖像數據是來自哪個外部模塊。

B、通道接收到圖像之后,比較圖像尺寸和編碼通道尺寸:

  • ?如果輸入圖像比編碼通道尺寸大,VENC 將按照編碼通道尺寸大小,調用 VGS 對源圖像進行縮小,然后對縮小之后的圖像進行編碼。
  • ?如果輸入圖像比編碼通道尺寸小,VENC 丟棄源圖像。VENC 不支持放大輸入圖像編碼。
  • 如果輸入圖像與編碼通道尺寸相當,VENC 直接接受源圖像,進行編碼。

2)編碼通道

  • 編碼通道作為基本容器,保存編碼通道的多種用戶設置和管理編碼通道的多種內部資源。
  • 編碼通道完成圖像轉化為碼流的功能,具體由碼率控制器和編碼器協同完成。這里的編碼器指的是狹義上的編碼器,只完成編碼功能。碼率控制器提供了對編碼參數的控制和調整,從而對輸出碼率進行控制。
  • 碼率控制是針對連續的編碼碼流而言,所以JPEG 協議編碼通道不包括碼率控制功能。Hi3518EV200 不支持 H.265 編碼,所以,也不支持 H.265 類型的碼率控制
  • 碼率控制器分別提供了對 H.264\H.265\MJPEG 協議編碼通道 CBR(碼率不變)、VBR(可變碼率)、FIXQP(固定Qp值) 等三種碼率控制模式,對圖像質量和碼率進行調節。

3、代碼解釋

(1)首先,碼率控制模式的選擇

(2)接著,進行三路編碼

五、編碼后的流文件輸出

1、最后的步驟6與步驟7。

2、函數調用關系圖譜

步驟6值得好好讀一下,里面關于文件的操作很不錯。

SAMPLE_COMM_VENC_GetFilePostfix:獲取文件名后綴。

? ? ? ?

? ? ? ?至此可以得到裸流文件(即沒有頭信息表征內容,里面都是直接的絕對的內容)。VLC播放器可以支持播放這種裸流文件。

總結

以上是生活随笔為你收集整理的第二季4:HI_S32 SAMPLE_VENC_1080P_CLASSIC(HI_VOID)函数的分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 五月婷婷av| 国产男女精品 | 黑料视频在线观看 | 国产免费福利 | 国产一级免费看 | 欧美两根一起进3p做受视频 | 精品成人免费视频 | 91天天射| 精品久久一二三区 | 日韩国产精品一区 | 爱爱视频一区二区 | 美女av免费在线观看 | 国产91在线看 | 日韩在线免费av | 成人短视频在线播放 | 小珊的性放荡羞辱日记 | 日韩一区二区三区三四区视频在线观看 | 亚洲综合伊人久久 | 色综合中文综合网 | 天天干天天做 | 久久精品这里有 | 午夜合集 | 99爱视频在线 | 午夜久久影院 | 午夜亚洲aⅴ无码高潮片苍井空 | 日韩精品在线观看一区 | 五月婷婷六月激情 | 精品国产人妻一区二区三区 | 女的被男的操 | 精品一区二区三区入口 | 六月激情综合 | 国产黄a三级三级三级看三级男男 | 午夜视频久久久 | av中文在线天堂 | 亚洲欧美中文日韩在线 | 国产精品自偷自拍 | 性高跟鞋xxxxhd人妖 | 久9精品| 日日麻批 | 欧美一级在线视频 | 中文字幕一二区 | 国产视频一二三区 | 日韩精品视频三区 | 中文字幕在线观看免费 | 亚洲精品一区二区三区区别 | 成人传媒 | 免费av在线播放 | 狂野欧美性猛交xxxx | 久久国产欧美日韩精品 | 在线观看视频99 | 99视频在线免费 | 看一级片 | 国产一级大片在线观看 | 亚洲熟女乱色一区二区三区久久久 | 中文字幕人成乱码熟女香港 | 91精品国产入口 | 色情毛片 | 国产综合精品在线 | 91麻豆精品国产91久久久更新时间 | 日韩美女视频网站 | 欧美成人精品欧美一级 | 免费黄色三级 | 在线的av| a毛片| 日本欧美一区二区三区 | 免费爱爱视频 | 人妻少妇偷人精品久久久任期 | 永久精品视频 | 欧美日韩国产亚洲一区 | 欧美黄视频在线观看 | 中文字幕欧美一区 | 成人午夜影视 | 亚洲欧美天堂网 | 日本a√在线观看 | 亚洲精品白浆高清久久久久久 | 少妇精品久久久一区二区三区 | 女生和男生一起插插插 | 亚洲国产三区 | 在线观看亚洲区 | 九色tv | 蜜桃av乱码一区二区三区 | h网站在线| 第一宅男av导航入口 | 国产一区二区黄 | 日本v片| 天天干夜夜添 | 亚洲人屁股眼子交1 | 日韩亚洲精品视频 | 182在线视频 | 色屁屁| 一区二区三区日韩在线 | 久久99国产精品一区 | 狠狠干精品 | 一级片视频免费观看 | 黄色免费在线视频 | 免费看黄的网址 | 亚洲国产综合视频 | 中文字幕四区 | 亚欧洲精品视频 |