当前位置: 首页 > news >正文

Linux_26:获取高低分辨率码流

1.高分辨率

通过camera_venc_thread线程获取高分辨率(1920 * 1080)的编码码流数据,并且把编码码流插入到高分辨率编码码流队列里面。上图就是camera_venc_thread线程获取高分辨率编码码流的大体流程,我们要从VI节点容器和VENC节点容器里面获取到对应的VI节点和VENC节点,然后调用RK_MPI_SYS_Bind这个API绑定VI节点和VENC节点。然后创建camera_venc_thread线程获取高分辨率VENC码流,然后入到HIGH_VIDEO_QUEUE队列。这部分代码的实现在rkmedia_assignment_manage.cpprkmedia_data_process.cpp这两个源文件里面。

2.camera_venc_thread线程的思维导图

上图是获取1920 * 1080视频编码数据的思维导图,整个流程最关键是get_vi_container获取VI节点,get_venc_container获取VENC节点,然后调用RK_SYS_MPI_Bind绑定VI和VENC节点,并启动camera_venc_thread线程获取编码数据赋值到video_data_packet_t结构体,然后入队列。

3.camera_venc_thread代码截图并讲解

上面三个图就是关于camera_venc_thread整个流程,我们首先要通过get_vi_container从VI容器里面获取到VI节点,然后再调用get_venc_container从venc容器里面获取venc节点。利用RK_MPI_SYS_Bind把VI节点和VENC节点绑定起来,绑定起来后创建camera_venc_thread线程,从这个线程里面获取1920 * 1080的编码码流数据。

调用的API是RK_MPI_SYS_GetMediaBuffer,MOD_ID是RK_ID_VENC, CHN_ID是创建的VENC的CHNID来直接获取高分辨率的VENC码流数据,并且把数据拷贝到video_data_packet_t结构体,包括每一帧的视频流数据RK_MPI_GetPtr(mb),还有每一帧的视频长度RK_MPI_GetSize(mb)。然后把整个video_data_packet包入队,high_video_queue->putVideoPacketQueue里面。video_data_packet_t结构体里面有两个成员变量,一个是buffer(视频缓冲区)、video_frame_size是每一帧视频的长度,frame_flag关键帧标识符。下面是RKMEDIA_BUFFER赋值到VIDEO_DATA_PACKET_T的核心代码:

memcpy(video_data_packet->buffer, RK_MPI_MB_GetPtr(mb), RK_MPI_MB_GetSize(mb));

video_data_packet->video_frame_size = RK_MPI_MB_GetSize(mb);

4.低分辨率

本章节主要介绍如何通过get_rga_thread线程和low_camera_venc_thread共同获取低分辨率(1280 * 720)的编码码流并且入队列。从上图我们可以看出。我们经过几个步骤首先要调用get_vi_container获取VI节点,然后把VI节点和RGA节点绑定起来,通过get_rga_thread线程获取1280 * 720的原始数据并把1280 * 720的原始数据发送到1280 * 720的VENC低分辨率编码器。

5.低分辨率码流获取的思维导图

上图是获取低分辨率1280 * 720编码码流的思维导图,从上面的思维导图可以看出来,整个流程最关键是get_vi_container获取VI节点,然后调用RK_SYS_MPI_Bind绑定VI和RGA节点。然后创建get_rga_thread线程获取每一帧rga的1280 * 720的视频原始数据,调用的API是RK_MPI_SYS_GetMediaBuffer,获取每一帧1280 * 720原始数据后再调用RK_MPI_SYS_SendMediaBuffer发送每一帧原始数据到1280 * 720的VENC编码器。

创建low_camera_venc_thread线程获取每一帧1280 * 720的编码码流数据,调用的API是RK_MPI_SYS_GetMediaBuffer获取完每一帧1280 * 720编码视频数据后存放到low_video_queue里面,调用的函数是putVideoPacketQueue。

6.代码架构截图并讲解

上面的截图就是如何通过get_rga_thread和low_camera_thread线程的结合获取低分辨率(1280 * 720)的编码码流。首先要通过RGA的节点和VENC的节点进行RK_SYS_MPI_Bind绑定,然后开启get_rga_thread获取每一帧的RGA处理过后的1280 * 720原始数据,并且调用RK_MPI_SYS_SendMediaBuffer这个API把每一帧1280 * 720的原始数据发送到低分辨率的编码器里面,核心代码,如下:。

while (1)

{

mb =RK_MPI_SYS_GetMediaBuffer(RK_ID_RGA, 0 , -1); //获取每一帧RGA处理过后的数据

if(!mb)

{

break;

}

RK_MPI_SYS_SendMediaBuffer(RK_ID_VENC, 1, mb); //把每一帧RGA数据传输到低分辨率VENC里面

RK_MPI_MB_ReleaseBuffer(mb); //释放资源

}

然后再创建low_camera_thread现成获取每一帧1280 * 720的编码视频数据,然后把每一帧低分辨率的编码数据赋值到video_data_packet_t结构体,包括每一帧的视频流数据RK_MPI_GetPtr(mb),还有每一帧的视频长度RK_MPI_GetSize(mb)。然后把整个video_data_packet包入队,low_video_queue->putVideoPacketQueue里面。video_data_packet_t结构体里面有两个成员变量,一个是buffer(视频缓冲区)、video_frame_size是每一帧视频的长度,frame_flag关键帧标识符。下面是RKMEDIABUFFER赋值到VIDEO_DATA_PACKET_T的核心代码:

memcpy(video_data_packet->buffer, RK_MPI_MB_GetPtr(mb), RK_MPI_MB_GetSize(mb));

video_data_packet->video_frame_size = RK_MPI_MB_GetSize(mb);

http://www.jsqmd.com/news/427599/

相关文章:

  • Kimi、DeepSeek、豆包哪个写论文AI率最低?实测告诉你 - 我要发一区
  • 2026工矿车间防爆空调优质厂家推荐:防爆正压柜价格、防爆正压柜公司、防爆正压柜厂家、防爆正压柜定制、防爆正压柜生产厂家选择指南 - 优质品牌商家
  • 【Matlab】MATLAB教程:mesh三维网格图绘制全解析——语法、案例与三维曲面轮廓可视化实战
  • 杰理之声音不够大的解决办法,通过数字增益提高【篇】
  • Z-Image-Turbo_Sugar脸部Lora镜像轻量化:去除冗余包后体积压缩至4.2GB
  • 2026 最新虾青素胶囊品牌TOP5评测!天然抗衰权威榜单发布 - 十大品牌榜
  • 2026年知名的湖州短视频运营/湖州短视频代运营最新推荐公司 - 品牌宣传支持者
  • ReAct、Plan Execute、Multi-Agent:三种Agent开发设计范式,小白也能学会大模型,速收藏!
  • 无锡木箱包装厂商哪家比较靠谱,好用的品牌大盘点 - 工业设备
  • 杰理之MIC 通道的选择【篇】
  • 嘎嘎降AI使用教程:从注册到出结果,手把手教你操作 - 我要发一区
  • ⚡ SenseVoice-Small ONNX核电安全:控制室语音→操作指令合规性实时审计
  • 推荐8款免费好用的在线指法练习网站
  • 2026年靠谱的涂装风机/玻璃钢风机厂家选购参考建议 - 品牌宣传支持者
  • 2026年靠谱的电加热台车炉/河北高温台车炉优质厂家推荐汇总 - 品牌宣传支持者
  • 一篇帮你看懂!生物医药LIMS采购决策指南 - 博客万
  • 方盾口罩提示您:挑口罩不只看KN100,这6个坑千万别踩
  • 2026年金华靠谱宠物医院体检推荐,看看哪家更适合你!母猫绝育/宠物神经外科/宠物内科/宠物骨科,宠物医生口碑排名 - 品牌推荐师
  • openclaw 部署指南(手动docker详细版)
  • HoRain云--Linux文件夹复制终极指南
  • 2026年知名的离心喷涂玻璃钢管/潍坊缠绕玻璃钢管厂家推荐与选择指南 - 品牌宣传支持者
  • 2026年用ChatGPT写论文后怎么降AI率?完整方案分享 - 我要发一区
  • python基于vue的火车票订票管理系统_xbfej00y
  • Java虚拟线程详解
  • 2026年热门的玻璃钢塔冷却塔/玻璃钢塔吸收塔人气实力厂商推荐 - 品牌宣传支持者
  • 高通份额被蚕食!智能座舱SoC新战事:中国阵营全面“反攻”,多方混战加剧
  • 2026西安实验室排风厂家五大推荐:迅领实验室领衔,实验台、通风柜、实验室装修改造专业实力铸就行业标杆 - 深度智识库
  • HoRain云--Vim多行删除:8种高效技巧全解析
  • 封口胶选型太难?资质硬、性能稳、服务快的5大优质供应商深度解析 - 深度智识库
  • 车载SerDes博弈升级:价格腰斩、协议破局,国产加速抢滩突围