二:RV1126視頻編碼流程

  1. 項目介紹:

本章節(jié)講的是RV1126視頻編碼的流程,在整個項目之中視頻編碼功能是核心之一。視頻編碼流程主要分三步:VI的初始化VENC的初始化、綁定VI和VENC節(jié)點、開啟VENC線程進行視頻編碼的采集

  1. 項目框圖:
image.png

2.1. VI設(shè)備的初始化

image.png
容器的使用增加代碼的解耦性。
其中else部分的set_vi_container將*vi_container放進all_containers.vi_containers[index]中,然后2.3中的get_vi_container將*vi_container提取出來
image.png

VI設(shè)備的初始化,需要用到以下參數(shù):pcVideoNode(設(shè)備節(jié)點)、u32Width(寬度)、u32Height(高度)、enPixFmt(圖片格式)、u32BufCnt(buf的數(shù)量)、enWorkMode(工作模式)。設(shè)置完成之后,則調(diào)用RK_MPI_VI_SetChnAttr設(shè)置VI的屬性,并使能VI設(shè)備(RK_MPI_VI_EnableChn)

RV1126視頻設(shè)備節(jié)點:

image.png

2.2. VENC模塊的初始化

image.png
容器的使用增加代碼的解耦性。
其中else部分的set_venc_container將*venc_container放進all_containers.venc_containers[index]中,然后2.3中的get_venc_container將*vi_container提取出來
image.png

VENC模塊的初始化,下面有幾個重要參數(shù):enType(編碼類型)、imageType(圖片格式)、u32VirWidth(圖片虛寬)、u32VirHeight(圖片虛高)、u32Profile(編碼等級)、bByFrame(預(yù)留參數(shù)默認(rèn)0)****、u32PicWidth(圖片寬度)、u32PicHeight(圖片高度)、enRotation(是否旋轉(zhuǎn))。設(shè)置完成之后,使用RK_MPI_VENC_CreateChn創(chuàng)建VENC編碼器。

2.3. 綁定VI和VENC節(jié)點

image.png

使用RK_MPI_SYS_Bind把VI節(jié)點和VENC進行綁定,其中enModId是模塊ID號、s32ChnId是通道號。

2.4. 開啟VENC線程采集每一幀視頻編碼數(shù)據(jù)并存儲到視頻隊列

image.png

在這個video_venc_thread線程里面,利用RK_MPI_SYS_GetMediaBuffer的API采集VENC的數(shù)據(jù),并把數(shù)據(jù)賦值到video_data_packet_t結(jié)構(gòu)體里面(這個結(jié)構(gòu)體里面主要存儲編碼后視頻的緩沖區(qū)數(shù)據(jù)和長度)。并且把這個結(jié)構(gòu)體的數(shù)據(jù)入到video_packet_queue隊列里面(具體操作:putVideoPacketQueue)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容