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

    文章

    514

    浏览量

    5031
  • 开发板试用
    +关注

    关注

    3

    文章

    301

    浏览量

    2092
收藏 人收藏

    评论

    相关推荐

    [迅为RK3568开发板]非科班也能玩转Android应用,体验QT跨平台能力

    [迅为RK3568开发板]非科班也能玩转Android应用,体验QT跨平台能力
    的头像 发表于 12-18 16:41 200次阅读
    [迅为<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>]非科班也能玩转Android应用,体验QT跨平台能力

    RK3568内置MCU开发介绍之一

    A55(下文简称AP)和1个RISCV(下文简称MCU)。 硬件准备 首先介绍一下硬件。主板为风火轮科技的YY3568开发板,主控RK3568。此开发板的相关介绍可以参考 https
    的头像 发表于 12-01 16:09 366次阅读
    <b class='flag-5'>RK3568</b>内置MCU<b class='flag-5'>开发</b>介绍之一

    【迅为电子】叮!您的RK3568开发板系统镜像备份方法请查收

    【迅为电子】叮!您的RK3568开发板系统镜像备份方法请查收
    的头像 发表于 11-27 14:02 288次阅读
    【迅为电子】叮!您的<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>系统镜像备份方法请查收

    基于迅为RK3568开发板全国产平台,快速实现APP开机自启动技术分享

    基于迅为RK3568开发板全国产平台,快速实现APP开机自启动技术分享
    的头像 发表于 11-21 13:58 353次阅读
    基于迅为<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>全国产平台,快速实现APP开机自启动技术分享

    【迅为】瑞芯微RK3588开发板RK3568开发板区别及优势

    RK3568开发板
    的头像 发表于 11-18 14:19 341次阅读
    【迅为】瑞芯微<b class='flag-5'>RK</b>3588<b class='flag-5'>开发板</b><b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>区别及优势

    能力再次提升! 迅为RK3588/RK3568开发板&amp;amp;核心新增定制分区镜像

    能力再次提升! 迅为RK3588/RK3568开发板&核心新增定制分区镜像
    的头像 发表于 11-06 15:11 425次阅读
    能力再次提升! 迅为<b class='flag-5'>RK</b>3588/<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>&amp;amp;核心<b class='flag-5'>板</b>新增定制分区镜像

    瑞芯微RK3568开发板Linux编译报错404怎么办?触觉智能教你轻松解决

    本文介绍瑞芯微RK3568主板/开发板SDK编译流程和编译报错404的解决方法,使用触觉智能EVB3568鸿蒙开发板演示,具有丰富的视频输入
    的头像 发表于 11-05 11:02 342次阅读
    瑞芯微<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>Linux编译报错404怎么办?触觉智能教你轻松解决

    迅为iTOP-RK3568/RK3588开发板获麒麟软件适配认证

    迅为iTOP-RK3568/RK3588开发板获麒麟软件适配认证
    的头像 发表于 10-18 14:56 513次阅读
    迅为iTOP-<b class='flag-5'>RK3568</b>/<b class='flag-5'>RK</b>3588<b class='flag-5'>开发板</b>获麒麟软件适配认证

    北京迅为RK3568开发板嵌入式学习之Linux驱动全新更新-CAN+

    北京迅为RK3568开发板嵌入式学习之Linux驱动全新更新-CAN+
    的头像 发表于 09-04 15:29 489次阅读
    北京迅为<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>嵌入式学习之Linux驱动全新更新-CAN+

    RK3568开发板支持AMP双系统

    RK3568开发板支持AMP双系统
    的头像 发表于 06-04 15:33 705次阅读
    <b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>支持AMP双系统

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

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

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

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

    迅为RK3568开发板助力智能车载产业快速发展

    迅为RK3568开发板助力智能车载产业快速发展
    的头像 发表于 01-23 13:59 563次阅读
    迅为<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>助力智能车载产业快速发展

    RK3568-ISP图像处理开发案例

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

    RK3568-视频开发案例

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