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

rk3588 low_delay_net_display注意事项

low_delay_net_display例子默认只支持YUV420和RGB888,如果需要支持YUV422,请添加下面部分:

rk3588_nvr/build/app/low_delay_net_display$ git diff v4l2HdmiRX.cpp
diff --git a/app/low_delay_net_display/v4l2HdmiRX.cpp b/app/low_delay_net_display/v4l2HdmiRX.cpp
old mode 100644
new mode 100755
index 31a98ac..f49e001
--- a/app/low_delay_net_display/v4l2HdmiRX.cpp
+++ b/app/low_delay_net_display/v4l2HdmiRX.cpp
@@ -750,10 +750,33 @@ static  int process_stream(struct rkcam_context *ctx) {///enc/dec/RK_FMT_RGB888if (ctx->enable_encode > 0) {rt_atrace_begin_body("init_venc");
+if (strstr(ctx->pixel_format, "NV12") > 0) {init_venc(ctx->width,ctx->height, ctx->width, ctx->height, 0, ctx->max_bitrate, RK_FMT_YUV420SP, venc_callback);
+               } else if (strstr(ctx->pixel_format, "YUV422SP") > 0) {
+                       init_venc(ctx->width,ctx->height, ctx->width, ctx->height, 0, ctx->max_bitrate, RK_FMT_YUV422SP , venc_callback);
+               } else if (strstr(ctx->pixel_format, "YUV422P") > 0) {
+                       init_venc(ctx->width,ctx->height, ctx->width, ctx->height, 0, ctx->max_bitrate, RK_FMT_YUV422P , venc_callback);
+               } else if (strstr(ctx->pixel_format, "YUV422SP_VU") > 0) {
+                       init_venc(ctx->width,ctx->height, ctx->width, ctx->height, 0, ctx->max_bitrate, RK_FMT_YUV422SP_VU , venc_callback);
+               } else if (strstr(ctx->pixel_format, "YUV422_YUYV") > 0) {
+                       init_venc(ctx->width,ctx->height, ctx->width, ctx->height, 0, ctx->max_bitrate, RK_FMT_YUV422_YUYV , venc_callback);
+               } else if (strstr(ctx->pixel_format, "YUV422_UYVY") > 0) {
+                       init_venc(ctx->width,ctx->height, ctx->width, ctx->height, 0, ctx->max_bitrate, RK_FMT_YUV422_UYVY , venc_callback);
+               } else if (strstr(ctx->pixel_format, "YUV422_YVYU") > 0) {
+                       init_venc(ctx->width,ctx->height, ctx->width, ctx->height, 0, ctx->max_bitrate, RK_FMT_YUV422_YVYU , venc_callback);
+               } else if (strstr(ctx->pixel_format, "YUV422_VYUY") > 0) {
+                       init_venc(ctx->width,ctx->height, ctx->width, ctx->height, 0, ctx->max_bitrate, RK_FMT_YUV422_VYUY , venc_callback);
+               } else if (strstr(ctx->pixel_format, "YUV444") > 0) {
+                       init_venc(ctx->width,ctx->height, ctx->width, ctx->height, 0, ctx->max_bitrate, RK_FMT_YUV444 , venc_callback);
+               } else if (strstr(ctx->pixel_format, "YUV444SP") > 0) {
+                       init_venc(ctx->width,ctx->height, ctx->width, ctx->height, 0, ctx->max_bitrate, RK_FMT_YUV444SP , venc_callback);
+               } else if (strstr(ctx->pixel_format, "YUV444SP_10BIT") > 0) {
+                       init_venc(ctx->width,ctx->height, ctx->width, ctx->height, 0, ctx->max_bitrate, RK_FMT_YUV444SP_10BIT , venc_callback);
+               } else if (strstr(ctx->pixel_format, "YUV444P") > 0) {
+                       init_venc(ctx->width,ctx->height, ctx->width, ctx->height, 0, ctx->max_bitrate, RK_FMT_YUV444P, venc_callback);} else {
-                       init_venc(ctx->width,ctx->height, ctx->width, ctx->height, 0, ctx->max_bitrate, RK_FMT_RGB888, venc_callback);
+                       init_venc(ctx->width,ctx->height, ctx->width, ctx->height, 0, ctx->max_bitrate, RK_FMT_BGR888, venc_callback);}std::thread  t(thread_get_stream, 0);t.detach();

与调试相关的命令:

//获取设备信息
v4l2-ctl -d /dev/video8  -V -D
//获取外部设备输入的分辨率信息
v4l2-ctl  -d /dev/video0 --set-fmt-video=width=3840,height=2160,pixelformat='NV12' --stream-mmap=4  --stream-skip=10  --stream-poll --
//抓取帧率(需要设置好分辨率和像素格式)
v4l2-ctl  -d /dev/video0 --set-fmt-video=width=3840,height=2160,pixelformat='NV12' --stream-mmap=4  --stream-skip=10  --stream-poll --
//把抓取到的帧保存为文件,这里表示抓一帧并保存在 data/4kp60_nv12.yuv
v4l2-ctl  -d /dev/video8 --set-fmt-video=width=3840,height=2160,pixelformat='NV12' --stream-mmap=4  --stream-skip=10  --stream-to=/data/4kp60_nv12.yuv --stream-count=1 --stream-poll//解码端运行
ifconfig eth0 192.168.5.11 netmask 255.255.255.0 up
/usr/bin/testHdmiRxDec -w 3840 -h 2160 -p NV12 --stream-mmap=3 --display-type=0 --display-w=3840 --display-h=2160  --enable-adjust-clk=1 &//编码端运行
ifconfig eth0 192.168.5.12 netmask 255.255.255.0 up
/usr/bin/testHdmiRx -d /dev/video0 -w 3840 -h 2160 -p NV12  --stream-mmap=3 --enable-vo=1 --enable-encode=1 --display-type=0 --display-w=3840 --display-h=2160 &

1、不知道编译步骤,编译不过所做的修改可以编过:

--- a/app/RKMPI_Release/example/mod/CMakeLists.txt
+++ b/app/RKMPI_Release/example/mod/CMakeLists.txt
@@ -3,6 +3,32 @@ add_definitions(-fno-rtti)add_compile_options(-std=c++11)add_definitions(-std=c++11 -Wno-attributes -Wno-deprecated-declarations -DANDROID_STL=c++_shared)
+set(CMAKE_CXX_COMPILER /media/extern_sda/wzh/rk3588_nvr/build/toolchain/bin/aarch64-none-linux-gnu-g++)
+set(CMAKE_C_COMPILER  /media/extern_sda/wzh/rk3588_nvr/build/toolchain/bin/aarch64-none-linux-gnu-gcc)
+include_directories(/media/extern_sda/wzh/rk3588_nvr/build/toolchain/aarch64-none-linux-gnu/libc/usr/include/drm/)
+include_directories(/media/extern_sda/wzh/rk3588_nvr/build/toolchain/aarch64-none-linux-gnu/libc/usr/include/)
+
+include_directories(/media/extern_sda/wzh/rk3588_nvr/build/app/RKMPI_Release/sdk/include/)
+include_directories(/media/extern_sda/wzh/rk3588_nvr/build/app/RKMPI_Release/example/include/)
+
+include_directories(/media/extern_sda/wzh/rk3588_nvr/build/app/RKMPI_Release/sdk/deps/include/)
+include_directories(/media/extern_sda/wzh/rk3588_nvr/build/app/RKMPI_Release/sdk/include/)
+include_directories(/media/extern_sda/wzh/rk3588_nvr/build/app/low_delay_net_display/api/)
+include_directories(/media/extern_sda/wzh/rk3588_nvr/build/app/low_delay_net_display/tools/)
+
+
+set(RK_DEP_COMMON_LIBS
+    /media/extern_sda/wzh/rk3588_nvr/build/app/RKMPI_Release/sdk/deps/lib/libavcodec.so.58
+    /media/extern_sda/wzh/rk3588_nvr/build/app/RKMPI_Release/sdk/deps/lib/libavformat.so.58
+    /media/extern_sda/wzh/rk3588_nvr/build/app/RKMPI_Release/sdk/deps/lib/libavutil.so.56
+    /media/extern_sda/wzh/rk3588_nvr/build/app/RKMPI_Release/sdk/deps/lib/libswresample.so.3
+    /media/extern_sda/wzh/rk3588_nvr/build/app/RKMPI_Release/sdk/deps/lib//librockchip_mpp.so.1
+    /media/extern_sda/wzh/rk3588_nvr/build/app/RKMPI_Release/sdk/deps/lib/libdrm.so.2
+    /media/extern_sda/wzh/rk3588_nvr/build/app/RKMPI_Release/sdk/deps/lib/libasound.so.2
+    /media/extern_sda/wzh/rk3588_nvr/build/app/RKMPI_Release/sdk/lib64/librockit.so
+       /media/extern_sda/wzh/rk3588_nvr/build/app/RKMPI_Release/example/common/librt_test_comm.a
+       -lpthread
+)set(RK_MPI_TEST_AO_SRCtest_mpi_ao.cpp
@@ -34,6 +60,12 @@ set(RK_MPI_TEST_SYS_SRC)set(RK_MPI_TEST_VDEC_SRC
+    ../../../low_delay_net_display/tools/Timers.cpp
+    ../../../low_delay_net_display/tools/rt_trace.cpp
+    ../../../low_delay_net_display/tools/trace.cpp
+    ../../../low_delay_net_display/tools/vbltest.cpp
+    ../../../low_delay_net_display/api/mpi_vo.cpp
+       ../../../low_delay_net_display/api/AdjustClkApi.cpptest_mpi_vdec.cpp)

2、正常的编译步骤

   ./build_emmc.sh envcd build/app/build/app/./build.sh ../low_delay_net_display

相关文章:

rk3588 low_delay_net_display注意事项

low_delay_net_display例子默认只支持YUV420和RGB888,如果需要支持YUV422,请添加下面部分: rk3588_nvr/build/app/low_delay_net_display$ git diff v4l2HdmiRX.cpp diff --git a/app/low_delay_net_display/v4l2HdmiRX.cpp b/app/low_delay_net_displa…...

Spring Boot 快速入门样例【后端 3】

Spring Boot 入门:从零到一构建你的第一个应用 Spring Boot 作为一个流行的Java框架,以其“习惯优于配置”的理念极大地简化了Spring应用的开发和部署过程。本文将带你一步步创建一个简单的Spring Boot应用,从环境准备到项目创建,…...

Linux云计算 |【第二阶段】NETWORK-DAY2

主要内容: VLAN技术、TRUNK模式、链路聚合、路由器 一、VLAN技术应用 广播域指接受同样广播消息的节点的集合,如在该集合中的任何一个节点传输一个广播帧,则所有其它能收到这个帧的节点都被认为是该广播帧的一部分; 交换机的所有…...

Java面试题(基础篇)③

目录 一, 与 equals 的区别? 二,接口和抽象类的区别? 三,请说出几个常见的异常? 四,请问你对Java 反射有了解吗? 五,浅拷贝和深拷贝区别? 一&#xff0c…...

Qt动态调用 - QMetaObject::invokeMethod

QMetaObject::invokeMethod 动态调用是 Qt 的元对象系统的一项强大功能,它允许在运行时通过名称调用槽函数、信号和普通成员函数。 这种能力对于构建灵活和可扩展的应用程序非常有用,比如插件系统或脚本接口。 动态调用方法 Qt 提供了 QMetaObject::i…...

html+css+js网页设计 星享咖啡6个页面(带js) ui还原度90%

htmlcssjs网页设计 星享咖啡6个页面(带js) ui还原度90% 网页作品代码简单,可使用任意HTML编辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等…...

docker上传镜像至阿里云

1、安装wsl2 WSL2安装(详细过程) 2、安装docker Docker在Windows下的安装及使用 3、创建私人阿里云镜像库 如何创建私人阿里云镜像仓库?(保姆级) 4、如何删除容器 (1) 查找正在使用该图像的容器 docker ps -a --filte…...

POS刷卡开发源码之语音播报-CyberWinApp-SAAS 本地化及未来之窗行业应用跨平台架构

一、终端语音提醒的好处 1. 增强信息传递的有效性:在人们忙碌或者注意力分散时,语音提醒能够直接穿透噪音和干扰,确保重要信息被准确接收。 2. 提高操作的便捷性:用户无需停下手中的工作去查看屏幕或阅读文字,直接通过…...

jupyter notebook魔法命令

%xmode 魔法命令来控制异常报告: 输入魔法命令:在 IPython 或 Jupyter Notebook 的一个新单元格中,输入以下命令之一来设置异常报告模式: 切换到 Plain 模式(简洁输出): %xmode Plain切换回 Con…...

Mysql事件

1:查询全局事件开关是否启动 SHOW VARIABLES LIKE %sche%; 关闭状态!!!去开启如果已开启忽略 set global event_scheduler ON; ojbk 2:创建事件 step1: 链接打开自己的数据库 step2: 找…...

Unity Console 窗口输出对齐

起因:做了个工具在console窗口罗列一些信息,基本结构是 [ 文件名 :行号 ],因为文件,行号长度不一,想要做到如下效果。 初步尝试,用以下方法: string format "{0,-10} …...

leetcode198_打家劫舍

思路 动态规划 func rob(nums []int) int {if len(nums) < 2 {return nums[0]}// dp[i] 表示到第i家为止&#xff0c;小偷能够偷窃到的最高金额dp : make([]int, len(nums))dp[0] nums[0]dp[1] max(nums[0], nums[1])for i:2; i<len(nums); i {if nums[i] dp[i-2] &…...

C# 串口通讯怎么防止数据丢失

串口通信&#xff08;Serial Communication&#xff09;是计算机与设备之间进行数据交换的一种方式。在C#中进行串口通信时&#xff0c;防止数据丢失可以采取以下一些措施&#xff1a; 1.校验和&#xff08;Checksum&#xff09;&#xff1a;在发送数据时&#xff0c;计算数据的…...

【机器学习】BP神经网络中的链式法则:解开智能背后的数学奥秘

在浩瀚的机器学习领域中&#xff0c;BP&#xff08;反向传播&#xff09;神经网络如同一座桥梁&#xff0c;连接着复杂的数据世界与智能的彼岸。而这座桥梁的基石之一&#xff0c;便是链式法则&#xff08;Chain Rule&#xff09;——一个看似简单却蕴含无限智慧的数学原理。今…...

MyBatis 基本操作 - 注解版

目录 一&#xff0c;查询 - select 1.1 全列查询 1.2 指定列查询 1.3 赋值问题 方法一&#xff1a;起别名 方法二&#xff1a;结果映射 方法三&#xff1a;添加配置 二&#xff0c;新增 - Insert 2.1 使用对象插入 2.2 获取主键 三&#xff0c;删除 - Delete 四&am…...

专业比例阀放大器配套选型

比例阀放大器作为液压系统中的关键组件&#xff0c;其技术选型对于保障系统的精确控制、稳定性和长期可靠性至关重要。下面将深入探讨比例阀放大器的技术选型要点&#xff0c;确保选型能满足特定的应用需求和系统性能要求&#xff1a; 兼容性与安装方式 阀型匹配&#xff1a;…...

Springboot 多数据源整合的三种方式

上链接&#xff1a;Springboot 多数据源整合的三种方式_springboot整合多数据源-CSDN博客...

【科研笔记】中国知网高级检索与专业检索针对同一检索内容返回的结果对比

中国知网高级检索与专业检索针对同一检索内容返回的结果对比 文献检索文献差集文献检索 预检索“复杂网络”和“事故”相关主题的文献,在高级检索界面中搜寻的结果如下,期刊选择为中文核心及以上,共检索138条文献 然后以专业检索,构建检索式“ (SU=‘事故’) AND (SU=‘复…...

C#-了解IOC控制反转及相关框架的使用

目录 一、了解IOC 1、概念 2、生命周期 二、使用 三、扩展-CommunityToolkit.Mvvm工具包 Messenger信使 方式一&#xff08;收发消息&#xff09; 方式二&#xff08;收发消息&#xff09; 方式三&#xff08;请求消息&#xff09; 一、了解IOC IOC&#xff0c;即控制…...

CSDN机器人与僵shi粉测试(真人看看)

​哈哈哈一起玩个游戏 发现老是莫名其妙有很多关注点赞与收藏&#xff0c;关注的几百个人应该都是机器人 此博文用于检测平台机器人阅读量 —>如果是真人请务必随便留言<— 可以根据阅读量与评论判断机器人数量 不用点赞收藏有机器人就行 机器人统一特征是在2019年左右…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置&#xff0c;使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI&#xff0c;使用客户端或是内部自己搭建集成大模型的终端&#xff0c;加速与大型语言模型&#xff08;LLM&#xff09;的结合&#xff0c;同时使用检索增强生成&#xff08;Retrieval Augmented Generation &#…...

面向无人机海岸带生态系统监测的语义分割基准数据集

描述&#xff1a;海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而&#xff0c;目前该领域仍面临一个挑战&#xff0c;即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...

MFC 抛体运动模拟:常见问题解决与界面美化

在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...

【JVM面试篇】高频八股汇总——类加载和类加载器

目录 1. 讲一下类加载过程&#xff1f; 2. Java创建对象的过程&#xff1f; 3. 对象的生命周期&#xff1f; 4. 类加载器有哪些&#xff1f; 5. 双亲委派模型的作用&#xff08;好处&#xff09;&#xff1f; 6. 讲一下类的加载和双亲委派原则&#xff1f; 7. 双亲委派模…...

(一)单例模式

一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...