最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

RK3588 MPP 硬編碼之mpi_enc_test .c解析

2023-11-14 11:26 作者:磊子啊_  | 我要投稿


一. 簡(jiǎn)介

  • mpi_enc_test 是rockchip官方編碼 demo

  • 本篇文章進(jìn)行mpi_enc_test 的代碼解析,編碼流程解析

二. 環(huán)境介紹

  • 硬件環(huán)境: ArmSoM-W3 RK3588開(kāi)發(fā)板

  • 軟件版本: OS:ArmSoM-W3 Debian11

三. mpp編解碼流程解析

在這里插入圖片描述
圖3.1 RKMPP編碼器接口為用戶提供了輸入圖像數(shù)據(jù),輸出碼流的功能


  • mpp_create :獲取 MppCtx 實(shí)例以及 MppApi 結(jié)構(gòu)體

  • mpp_init: 初始化MppCtx 的編解碼類型與格式

  • mpi->control:通過(guò)相應(yīng)的命令來(lái)配置編解碼參數(shù)

  • encode_put_frame:輸入圖像數(shù)據(jù)MppFrame,例如YUV、RGB數(shù)據(jù)

  • encode_get_packet: 獲取編碼后的碼流數(shù)據(jù)存放到MppPacket,例如H.264、H.265數(shù)據(jù)

  • mpi->reset:使解碼器恢復(fù)為正常初始化后的狀態(tài)。

  • mpp_destroy:釋放申請(qǐng)的內(nèi)存空間,做銷毀善后工作

四. 重要函數(shù)解析

4.1 mpp_init函數(shù):初始化MppCtx 的編解碼類型與格式

mpp_init函數(shù)原型:

mpp_init函數(shù)調(diào)用實(shí)例:

mpp_init函數(shù)參數(shù)解析:

  • MppCtxType 參數(shù):初始化編碼還是解碼


  • MppCodingType 參數(shù):編解碼的格式

等等,詳細(xì)參看rk_type.h定義

4.2 設(shè)置編碼器參數(shù):test_mpp_enc_cfg_setup

函數(shù)原型:

函數(shù)解析: 主要是設(shè)置編碼器參數(shù),并將編碼器參數(shù)保存到 MpiEncMultiCtxInfo 結(jié)構(gòu)體中

4.3 編碼函數(shù):test_mpp_run

函數(shù)原型:

函數(shù)解析: 輸入圖像數(shù)據(jù)MppFrame,獲取編碼后的碼流數(shù)據(jù)存放到MppPacket

五. mpi_enc_test 流程解析

mpi_enc_test 編碼命令舉例:

mpi_enc_test 流程解析:

主要流程:init 初始化 ---> test_mpp_enc_cfg_setup設(shè)置編碼器相關(guān)參數(shù) ?----> ?test_mpp_run(info):輸入圖像數(shù)據(jù),輸出碼流

  • main函數(shù)根據(jù)傳進(jìn)來(lái)的參數(shù)參數(shù)char **argv 對(duì)應(yīng)命令中的 -i /oem/decode.yuv -t 7 -n 200 -o /oem/encode.h264 -w 1920 -h 1080 -fps 60)對(duì)參數(shù)進(jìn)行解析保存到 ?MpiEncTestArgs *cmd?結(jié)構(gòu)體中

  • enc_test_multi(cmd, argv[0]);?函數(shù)是封裝好的編碼函數(shù),傳入?MpiDecTestCmd * cmd 結(jié)構(gòu)體即可實(shí)現(xiàn) H.265/H.264 視頻編碼的多路并發(fā)處理

  • enc_test_multi(cmd, argv[0]);?函數(shù)使用for循環(huán)創(chuàng)建新線程并調(diào)用 enc_test 來(lái)執(zhí)行編碼任務(wù)

  • enc_test? 函數(shù)是整個(gè)的編碼流程函數(shù)。首先執(zhí)行了一些MPP的初始化操作:mpp_create() mpp_init() ?,mpp_enc_cfg_init() , mpi->control。初始化之后執(zhí)行?test_mpp_enc_cfg_setup函數(shù)來(lái)設(shè)置編碼器相關(guān)參數(shù)。隨后再進(jìn)行最重要的編碼操作:test_mpp_run(info):輸入圖像數(shù)據(jù),輸出碼流

  • 編碼完成之后執(zhí)行reset復(fù)位操作:p->mpi->reset(p->ctx)把編碼器恢復(fù)為正常初始化后的狀態(tài)。

  • 編碼器復(fù)位之后通過(guò)mpp_destroy()釋放申請(qǐng)的內(nèi)存空間,進(jìn)行一些銷毀操作防止內(nèi)存泄漏。

  • pthread_join 函數(shù)等待編碼線程結(jié)束,隨后調(diào)用MPP_FREE(ctxs)函數(shù)做線程釋放工作

  • 編碼線程結(jié)束,回到主線程的main()函數(shù),執(zhí)行mpi_enc_test_cmd_put(cmd), 釋放 cmd 對(duì)象所占內(nèi)存

六. mpi_enc_test 使用實(shí)例

  • 終端執(zhí)行編碼命令:


  • 將decode.yuv轉(zhuǎn)成h264,分辨率1920x1080,fps60,總幀數(shù)200。

  • 其中,-i 表示輸入文件,-t 7 表示輸出 H.264 碼流,-n 200 表示編碼 200 幀 -w 圖像寬度 -h 圖像高度,fps 60

  • 查看編解碼輸出的信息:

  • 編碼輸出如下:



RK3588 MPP 硬編碼之mpi_enc_test .c解析的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
商都县| 荔浦县| 日喀则市| 合肥市| 乌鲁木齐市| 公主岭市| 巴东县| 江都市| 阿勒泰市| 祥云县| 偏关县| 福鼎市| 贵港市| 大城县| 搜索| 双柏县| 镇雄县| 大渡口区| 花垣县| 应城市| 广德县| 奈曼旗| 益阳市| 华池县| 和田市| 钟山县| 任丘市| 措美县| 商丘市| 赤城县| 邹平县| 同仁县| 濉溪县| 平顺县| 谷城县| 称多县| 双辽市| 个旧市| 海安县| 白城市| 安平县|