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
    +关注

    关注

    5

    文章

    628

    浏览量

    7580
  • 开发板试用
    +关注

    关注

    3

    文章

    303

    浏览量

    2643
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【迅为工业RK3568稳定可靠】itop-3568开发板Linux驱动开发实战:RK3568内核模块符号导出详解

    【迅为工业RK3568稳定可靠】itop-3568开发板Linux驱动开发实战:RK3568内核模块符号导出详解
    的头像 发表于 11-21 13:25 653次阅读
    【迅为工业<b class='flag-5'>RK3568</b>稳定可靠】itop-<b class='flag-5'>3568</b><b class='flag-5'>开发板</b>Linux驱动<b class='flag-5'>开发</b>实战:<b class='flag-5'>RK3568</b>内核模块符号导出详解

    【作品合集】合众HZ-RK3568开发板测评

    体验】外设接口测试 【HZ-RK3568开发板免费体验】基于SDK固件编译 第一期合集: 微五科技CF5010RBT60开发板测评作品合集 第二
    发表于 09-10 10:22

    迅为RK3568开发板模型推理测试实战LPRNet 车牌识别

    迅为RK3568开发板模型推理测试实战LPRNet 车牌识别
    的头像 发表于 08-25 14:55 1069次阅读
    迅为<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>模型推理测试实战LPRNet 车牌识别

    【HZ-RK3568开发板免费体验】合众HZ-RK3568开发板初次使用

    等音视频多媒体接口,支持多屏异显板载WIFI模块、支持4G模块、NVMe 固态硬盘。 、开箱 这是笔者第一次接触合众恒跃的开发板,产家用的包装纸盒大气。
    发表于 07-27 23:52

    RK3568 EVB开发板 深度休眠与快速醒的工作流程

    RK3568 EVB开发板关于深度休眠和唤醒流程的分析
    的头像 发表于 07-22 09:49 608次阅读
    <b class='flag-5'>RK3568</b> EVB<b class='flag-5'>开发板</b> 深度休眠与快速醒的工作流程

    【HZ-RK3568开发板免费体验】1、开发板资源、SDK使用和镜像烧写

    试用开发板是合众恒跃的HZ_EVM_3568开发板RK3568 是一颗高性能、低功耗的四核应用处理
    发表于 07-21 20:52

    RK3568开发板暗藏32位兼容开关?飞凌嵌入式带你一键解锁!

    RK3568是一款64位处理器,飞凌嵌入式为其提供的交叉编译器也是64位的,然而部分用户可能需要在RK3568开发板上运行32位应用。本文将详细阐述如何使用32位交叉编译器,编译出32
    的头像 发表于 07-19 08:49 4180次阅读
    <b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>暗藏32位兼容开关?飞凌嵌入式带你一键解锁!

    【HZ-RK3568开发板免费体验】HZ-RK3568开发板初步接触

    J处理器设计,支持图像H.264编解码处理,内置3D GPU可图像处理,2D硬件加速引擎,内置0.8TOPS NPU算力,具备一定AI能力。 RK3568介绍如下: HZ-
    发表于 07-10 23:19

    一文掌握RK3568开发板Android13挂载Windows共享目录

    在物联网和边缘计算场景中,开发板PC端的高效文件交互尤为重要。现以iTOP-RK3568开发板为例,详细演示Android13系统如何通过CIFS协议挂载Windows共享目录,实现
    的头像 发表于 04-17 13:54 858次阅读
    一文掌握<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>Android13挂载Windows共享目录

    RK3568开发板教程:以iTOP-RK3568开发板为例 Android13通过CIFS协议挂载Windows共享目录

    开发板PC端的高效文件交互尤为重要。现以iTOP-RK3568开发板为例,详细演示Android13系统如何通过CIFS协议挂载Windows共享目录,实现
    的头像 发表于 04-16 14:08 1571次阅读
    <b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>教程:以iTOP-<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>为例 Android13通过CIFS协议挂载Windows共享目录

    正式发布 | 启扬RK3568开发板已成功适配OpenHarmony4.0版本

    智能IAC-RK3568-Kit开发板基于瑞芯微RK3568处理器设计,主频最高可达2.0GHz,集成支持多格式视频编解码的VPU,GPU、
    的头像 发表于 03-27 17:24 1156次阅读
    正式发布 | 启扬<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>已成功适配OpenHarmony4.0版本

    爆款推荐 | 迅为RK3568开发板4核处理器+1T算力NPU+好用到爆的配套资料和视频

    爆款推荐 | 迅为RK3568开发板4核处理器+1T算力NPU+好用到爆的配套资料和视频
    的头像 发表于 03-19 13:41 1190次阅读
    爆款推荐 | 迅为<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>4核<b class='flag-5'>处理</b>器+1T算力NPU+好用到爆的配套资料和<b class='flag-5'>视频</b>!

    北京迅为RK3568开发板OpenHarmony系统南向驱动开发内核HDF驱动框架架构

    北京迅为RK3568开发板OpenHarmony系统南向驱动开发内核HDF驱动框架架构
    的头像 发表于 03-11 14:13 1558次阅读
    北京迅为<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>OpenHarmony系统南向驱动<b class='flag-5'>开发</b>内核HDF驱动框架架构

    【技术分享】迅为RK3568开发板使用TFTP加载内核设备树

    【技术分享】迅为RK3568开发板使用TFTP加载内核设备树
    的头像 发表于 02-21 14:04 1122次阅读
    【技术分享】迅为<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>使用TFTP加载内核设备树

    迅为RK3568开发板驱动指南Linux中通用SPI设备驱动

    迅为RK3568开发板驱动指南Linux中通用SPI设备驱动
    的头像 发表于 01-23 11:02 3425次阅读
    迅为<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>驱动指南Linux中通用SPI设备驱动