0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【ROC-RK3568-PC开发板试用体验】rockit视频处理接口第二弹

开发板试用精选 来源:开发板试用 作者:电子发烧友论坛 2022-10-18 15:34 次阅读

本文来源电子发烧友社区,作者:羁傲不驯, 帖子地址:https://bbs.elecfans.com/jishu_2306118_1_1.html


两个输出节点规格分别如下上节介绍了RK平台下的rockit视频处理接口的简单介绍,本期就针对rockit的一些简单介绍和理念作以具体的介绍。

需要明确一点的是在ARM中的视频处理链路?什么是链路?ARM中视频是怎么样的?

这些基础我们以后再谈,相信做过驱动适配的朋友都知道,各个厂家都有各个厂家的玩法,接口也不尽相同,还需要不断兼容向上提供接口。

rockit充分分离了这一点,他将我们所有的设备全部抽离出来,将每一个单独的功能都能使用一个类来进行使用。

本章节就介绍下rockit的 vi 与 venc模块,视频输入 与编码

本节程序如下:

demo程序

本节代码基本上参考了官方的程序。

rockit使用的第一步首先是:RK_MPI_SYS_Init 初始化RK MPI系统。

之后进入vi系统,RK平台下vi系统如下:

两个输出节点规格分别如下:


代码大概流程如下:

TEST_VI_CTX_S *ctx;
ctx = reinterpret_cast(malloc(sizeof(TEST_VI_CTX_S)));
memset(ctx, 0, sizeof(TEST_VI_CTX_S));
ctx->width = 1920;
ctx->height = 1080;
ctx->devId = 0;
ctx->pipeId = ctx->devId;
ctx->channelId = 1;
ctx->loopCountSet = 100;
//0. get dev config status
s32Ret = RK_MPI_VI_GetDevAttr(ctx->devId, &ctx->stDevAttr);
if (s32Ret == RK_ERR_VI_NOT_CONFIG) {
//0-1.config dev
s32Ret = RK_MPI_VI_SetDevAttr(ctx->devId, &ctx->stDevAttr);
if (s32Ret != RK_SUCCESS) {
  ctx->stChnAttr.stSize.u32Height = ctx->height;
  s32Ret = RK_MPI_VI_SetChnAttr(ctx->pipeId, ctx->channelId, &ctx->stChnAttr);
  if (s32Ret != RK_SUCCESS) {
  RK_LOGE("RK_MPI_VI_SetChnAttr %x", s32Ret);
  goto __FAILED2;
  } /
  /3.enable channel
  s32Ret = RK_MPI_VI_EnableChn(ctx->pipeId, ctx->channelId);
  if (s32Ret != RK_SUCCESS) {
    RK_LOGE("RK_MPI_VI_EnableChn %x", s32Ret);
    goto __FAILED2;
} /
/4.save debug file
if (ctx->stDebugFile.bCfg) {
  s32Ret = RK_MPI_VI_ChnSaveFile(ctx->pipeId, ctx->channelId, &ctx->stDebugFile);
  RK_LOGE("RK_MPI_VI_ChnSaveFile %x", s32Ret);
} 
while (loopCount < ctx->loopCountSet) {
//5.get the frame
  s32Ret = RK_MPI_VI_GetChnFrame(ctx->pipeId, ctx->channelId, &ctx->stViFrame,waitTime);
if (s32Ret == RK_SUCCESS) {
  void *data = RK_MPI_MB_Handle2VirAddr(ctx->stViFrame.pMbBlk);
  //6.get the channel status
  s32Ret = RK_MPI_VI_QueryChnStatus(ctx->pipeId, ctx->channelId, &ctx->stChnStatus);
  //7.release the frame
  s32Ret = RK_MPI_VI_ReleaseChnFrame(ctx->pipeId, ctx->channelId, &ctx-
>stViFrame);
if (s32Ret != RK_SUCCESS) {
RK_LOGE("RK_MPI_VI_ReleaseChnFrame fail %x", s32Ret);
} l
oopCount ++;
} else {
RK_LOGE("RK_MPI_VI_GetChnFrame timeout %x", s32Ret);
} u
sleep(10*1000);
} /
/8. disable one chn
s32Ret = RK_MPI_VI_DisableChn(ctx->pipeId, ctx->channelId);
RK_LOGE("RK_MPI_VI_DisableChn %x", s32Ret);
//9.disable dev(will diabled all chn)
__FAILED2:
s32Ret = RK_MPI_VI_DisableDev(ctx->devId);
RK_LOGE("RK_MPI_VI_DisableDev %x", s32Ret);

除了单独使用VI设备之外,VI设备还可以与其流程中关联的设备进行绑定,如VO、VENC,这样就不用在代码的流程中进行图像采集到内存,从内存在拷贝到其他设备中。关联的方式如下:

  • RK_MPI_SYS_Bind

我的test程序就将这个接口关联到了VENC模块中,可以直接进行视频的编码。实现如下:

// bind vi to venc
        stSrcChn.enModId    = RK_ID_VI;
        stSrcChn.s32DevId   = ctx->devId;
        stSrcChn.s32ChnId   = ctx->channelId;

        stDestChn[i].enModId   = RK_ID_VENC;
        stDestChn[i].s32DevId  = i;
        stDestChn[i].s32ChnId  = ctx->stVencCfg[i].s32ChnId;

        s32Ret = RK_MPI_SYS_Bind(&stSrcChn, &stDestChn[i]);
        if (s32Ret != RK_SUCCESS) {
            RK_LOGE("create %d ch venc failed", ctx->stVencCfg[i].s32ChnId);
            goto __FAILED2;
        }

最终实现了可以将摄像头直接采集编码到H264文件中,可以使用播放器来打开啦。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • RK3568
    +关注

    关注

    4

    文章

    441

    浏览量

    4192
  • 开发板试用
    +关注

    关注

    3

    文章

    299

    浏览量

    1926
收藏 人收藏

    评论

    相关推荐

    鸿蒙OpenHarmony南向:【RK3568开发板介绍】

    RK3568开发板基于Rockchip RK3568芯片,集成双核心架构GPU以及高效能NPU;搭载四核64位Cortex-A55处理器,采用22nm先进工艺,主频高达2.0GHz;支
    的头像 发表于 05-07 10:13 129次阅读
    鸿蒙OpenHarmony南向:【<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>介绍】

    迅为RK3568开发板驱动开发指南-输入子系统

    迅为RK3568开发板驱动开发指南-输入子系统
    的头像 发表于 02-23 15:11 234次阅读
    迅为<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>驱动<b class='flag-5'>开发</b>指南-输入子系统

    RK3568-ISP图像处理开发案例

    RK3568-ISP图像处理开发案例
    的头像 发表于 01-19 11:46 329次阅读
    <b class='flag-5'>RK3568</b>-ISP图像<b class='flag-5'>处理</b><b class='flag-5'>开发</b>案例

    RK3568-视频开发案例

    RK3568-视频开发案例
    的头像 发表于 01-18 15:51 326次阅读
    <b class='flag-5'>RK3568</b>-<b class='flag-5'>视频</b><b class='flag-5'>开发</b>案例

    toybrick_RK3568X开发板:跑通 android 开发流程

    前段时间买了一块官方的开发板,瑞芯微的 RK3568 芯片的 toybrick TB-RK3568X 开发板,配置是 4G 内存,32G 存储,想用这个
    发表于 11-16 21:30

    标准系统:KHDVK-3568A智慧屏开发套件(RK3568)

    开发板名称(芯片型号) KHDVK-3568A智慧屏开发套件(RK3568) 芯片架构 CPU频率 介绍(字数请控制在200字以内) 深开鸿智慧屏B
    发表于 10-19 10:48

    iTOP-RK3568开发板外设接口配置手册

    新增《iTOP-3568开发板外设接口配置手册》**** 在迅为RK3568开发板上,有着许多的外设接口
    发表于 09-20 09:53

    多屏异显方案-瑞芯微RK3568开发板

    RK3568内置VOP控制器,支持三路视频同时输出,其显示通路连接关系如下:
    的头像 发表于 09-15 10:49 619次阅读
    多屏异显方案-瑞芯微<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>

    瑞芯微RK3568开发板多屏同显方案

    HD-RK3568核心板基于瑞芯微RK3568设计,支持HDMI、MIPI、eDP、LVDS四种显示接口,适配多种显示方案,满足医疗电子、电力电子、工业自动化、车载中控等多种行业应用。
    的头像 发表于 09-14 14:03 772次阅读
    瑞芯微<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>多屏同显方案

    迅为RK3568开发板GPIO之外接模块

    迅为RK3568开发板GPIO之外接模块
    的头像 发表于 08-24 17:41 697次阅读
    迅为<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>GPIO之外接模块

    瑞芯微RK3568主板开发板PET_RK3568_P01简述

    瑞芯微RK3568主板开发板PET_RK3568_P01简述
    的头像 发表于 08-08 11:41 1834次阅读
    瑞芯微<b class='flag-5'>RK3568</b>主板<b class='flag-5'>开发板</b>PET_<b class='flag-5'>RK3568</b>_P01简述

    【风火轮YY3568开发板免费体验】开箱篇 -----最好的RK3568开发板赏析

    风火轮YY3568开发板采用RK3568芯片设计,RK3568明星芯片是一款瑞芯微电子定位中高端的通用型SoC。该芯片采用了先进的22nm工艺,拥有四个Cortex-A55核心和一个
    发表于 08-07 10:00

    迅为RK3568/RK3588开发板视频教程 | RKNPU2 从入门到实践一套搞定!

    迅为RK3568/RK3588开发板视频教程 | RKNPU2 从入门到实践一套搞定!
    的头像 发表于 06-30 15:07 1017次阅读
    迅为<b class='flag-5'>RK3568</b>/<b class='flag-5'>RK</b>3588<b class='flag-5'>开发板</b><b class='flag-5'>视频</b>教程 | RKNPU2 从入门到实践一套搞定!

    迅为RK3568开发板2800页手册+220集视频

    iTOP-3568开发板采用瑞芯微RK3568处理器,内部集成了四核64位Cortex-A55处理器。主频高达2.0Ghz,
    发表于 06-01 10:25

    迅为基于RK3568开发板的嵌入式学习之Linux驱动视频

    迅为基于RK3568开发板的嵌入式学习之Linux驱动视频
    的头像 发表于 05-19 16:30 584次阅读
    迅为基于<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>的嵌入式学习之Linux驱动<b class='flag-5'>视频</b>