ArmSoM Rockchip系列产品 通用教程 之 HDMI-IN使用

1. HDMI-IN简介

  • HDMI IN功能可以通过桥接芯⽚的⽅式实现,将HDMI信号转换成MIPI信号接收
  • RK3588芯⽚平台⾃带HDMI RX模块,可以直接接收HDMI信号,无需通过桥接芯⽚实现。
  • 在ArmSoM系列产品中,ArmSoM-W3支持HDMI-IN功能

    HDMI-IN功能框图

    armsom-rockchip-hdmiin
    根据应⽤场景需要,HDMI RX可适配TIF框架或是Camera框架,适配TIF框架图像传输延时更低,适配
    Camera框架可以使⽤标准Camera API,更⽅便录像、对接后端算法等应⽤功能开发。

2. HDMI-IN驱动代码和dts配置

2.1 驱动

kernel/drivers/media/platform/rockchip/hdmirx/*

2.2 kernel Config配置

CONFIG_VIDEO_ROCKCHIP_HDMIRX=y

2.3 DTS配置

2.3.1 HDMI RX控制器配置

/* Should work with at least 128MB cma reserved above. */ 
&hdmirx_ctrler { 
	status = "okay"; 
	
	/* Effective level used to trigger HPD: 0-low, 1-high */ 
	hpd-trigger-level = <1>; 
	hdmirx-det-gpios = <&gpio1 RK_PC6 GPIO_ACTIVE_LOW>; 
	pinctrl-names = "default"; 
	pinctrl-0 = <&hdmim1_rx &hdmirx_det>; 
}; 

&pinctrl {
	hdmirx {
		hdmirx_det: hdmirx-det {
			rockchip,pins = <1 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};
}

2.3.2 预留内存

RK3588 HDMI RX模块只能使用物理连续内存,需要预留至少128MB的CMA内存:
注:按3840x2160分辨率,RGB888图像格式,4个轮转Buffer计算。

/* If hdmirx node is disabled, delete the reserved-memory node here. */ 
reserved-memory { 
	#address-cells = <2>; 
	#size-cells = <2>; 
	ranges; 
	
	/* Reserve 128MB memory for hdmirx-controller@fdee0000 */ 
	cma { 
		compatible = "shared-dma-pool"; 
		reusable; 
		reg = <0x0 (256 * 0x100000) 0x0 (128 * 0x100000)>; 
		linux,cma-default; 
	}; 
};

3. HDMI-IN调试

HDMI-IN 设备在内核中会被注册为 video 设备,生成的节点如:/dev/video20,可以通过 v4l2-ctl 命令来获取设备信息和抓帧。

3.1 查看所有video节点

ls /dev/video* 

3.2 查找rk_hdmirx设备

使⽤v4l2-ctl -d参数指定vidoe节点,-D命令查看节点信息,通过Driver name确认哪个是节点是rk_hdmirx 设备:

v4l2-ctl -d /dev/video* -D      例: v4l2-ctl -d /dev/video20 -D 
armsom@armsom:~$ v4l2-ctl -d /dev/video20 -D
Driver Info:
        Driver name      : rk_hdmirx
        Card type        : rk_hdmirx
        Bus info         : fdee0000.hdmirx-controller
        Driver version   : 5.10.160
        Capabilities     : 0x84201000
                Video Capture Multiplanar
                Streaming
                Extended Pix Format
                Device Capabilities
        Device Caps      : 0x04201000
                Video Capture Multiplanar
                Streaming
                Extended Pix Format

3.3 获取外部设备输入的分辨率信息

armsom@armsom:~$ v4l2-ctl -d /dev/video20  -V
Format Video Capture Multiplanar:
        Width/Height      : 1920/1080
        Pixel Format      : 'NV24' (Y/CbCr 4:4:4)
        Field             : None
        Number of planes  : 1
        Flags             : 0x00000080
        Colorspace        : Rec. 709
        Transfer Function : Default
        YCbCr/HSV Encoding: xvYCC 709
        Quantization      : Default
        Plane 0           :
           Bytes per Line : 1920
           Size Image     : 6220800

可以看出此时输入源的像素格式为 ’ BGR3’ 。分辨率为 1920 * 1080

3.4 HDMI-IN音视频捕获

可以使用如下脚本捕获HDMI-IN输入的音频和视频

#!/bin/bash

trap 'onCtrlC' INT
function onCtrlC () {
	echo 'Ctrl+C is captured'
	killall gst-launch-1.0
	exit 0
}

device_id=$(v4l2-ctl --list-devices | grep -A1 hdmirx | grep -v hdmirx | awk -F ' ' '{print $NF}')
v4l2-ctl -d $device_id --set-dv-bt-timings query 2>&1 > /dev/null
width=$(v4l2-ctl -d $device_id --get-dv-timings | grep "Active width" |awk -F ' ' '{print $NF}')
heigh=$(v4l2-ctl -d $device_id --get-dv-timings | grep "Active heigh" |awk -F ' ' '{print $NF}')

es8388_card=$(aplay -l | grep "es8388" | cut -d ':' -f 1 | cut -d ' ' -f 2)
hdmi0_card=$(aplay -l | grep "hdmi0" | cut -d ':' -f 1 | cut -d ' ' -f 2)
hdmi1_card=$(aplay -l | grep "hdmi1" | cut -d ':' -f 1 | cut -d ' ' -f 2)
hdmiin_card=$(arecord -l | grep "hdmiin" | cut -d ":" -f 1 | cut -d ' ' -f 2)

DISPLAY=:0.0 gst-launch-1.0 v4l2src device=${device_id} io-mode=4 ! videoconvert \
	! video/x-raw,format=NV12,width=${width},height=${heigh} \
	! videoscale ! video/x-raw,width=1280,height=720 \
	! autovideosink sync=false 2>&1 > /dev/null &

gst-launch-1.0 alsasrc device=hw:${hdmiin_card},0 ! audioconvert ! audioresample ! queue \
	! tee name=t ! queue ! alsasink device="hw:${hdmi0_card},0" \
	t. ! queue ! alsasink device="hw:${hdmi1_card},0" &

while true
do
	sleep 10
done

armsom-rk3588-hdmiin

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/433078.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

华大基因护航沙特“2030愿景”实现,将“中国技术”带到中东市场

沙特“2030愿景”提出&#xff0c;要将国民平均寿命从74岁提高到80岁。沙特人民日益增长的医疗健康需求亟待更加全面、高效的医疗卫生体系。2023年&#xff0c;在沙特首都利雅得&#xff0c;由华大基因沙特全资子公司与当地合作方共同成立的综合精准医学检验实验室Genalive开业…

基于单片机的数字温度计设计

目 录 摘 要 I Abstract II 引 言 1 1 整体方案设计 3 1.1 主控芯片类型选择 3 1.2 测温电路选择 3 1.3 系统总体方案 4 2 系统的硬件电路设计 5 2.1 单片机系统设计 5 2.2 显示模块设计 8 2.3 温度读取电路的设计 10 3 系统软件设计 13 3.1 软件开发环境的介绍 13 3.2 系统重…

图像分类技术在城市垃圾分类与处理中的应用与实践

一、引言 在当今世界&#xff0c;城市化进程不断加快&#xff0c;随之而来的是日益增长的垃圾处理压力。城市生活垃圾、工业固体废物和危险废物的处理已经成为环境保护领域的一大挑战。为了应对这一挑战&#xff0c;卫生填埋、垃圾堆肥和垃圾焚烧等技术路线应运而生。其中&…

(文末送书)直击前沿技术:《低代码平台开发实践:基于React》

目录 前言 一、React与低代码平台的结合优势 二、基于React的低代码平台开发挑战 三、基于React的低代码平台开发实践 四、书籍推荐 《低代码平台开发实践&#xff1a;基于React》 1、图书介绍 2、适用人群 3、 作者简介 4、写书原由 5、解决问题 6、书…

2024年冲刺年薪40w,java面试常问知识点

前言 刚刚过去的双十一&#xff0c;让“高性能”“高可用”“亿级”这3个词变成了技术热点词汇&#xff0c;也让很多人再次萌发成为「架构师」的想法。先问大家一个问题&#xff1a;你觉得把代码熟练、完成需求加上点勤奋&#xff0c;就能成为架构师么&#xff1f;如果你这么认…

数据结构详解①——诸论

目录 前言 引入&#xff1a; 基本概念和术语 数据 数据元素 数据项 数据对象 数据结构 逻辑结构 物理结构 数据类型 为什么要设计出来数据类型呢&#xff1f; 数据类型的分类 抽象数据类型 数据结构与算法的关系 算法 定义 特性 设计要求 效率度量方法 事…

nodejs版本管理工具nvm安装和环境变量配置

1、下载nvm.exe https://github.com/coreybutler/nvm-windows/releases2、安装 1.在D盘根目录新建一个dev文件夹&#xff0c;在dev里面再新建一个nodejs。 2.双击下载好的nvm.exe 修改文件路径&#xff0c;且路径中不能有中文 3.安装完成后在D:\dev\nvm打开settings.txt&…

网络信息安全:11个常见漏洞类型汇总

一、SQL注入漏洞 SQL注入攻击&#xff08;SQL Injection&#xff09;&#xff0c;简称注入攻击、SQL注入&#xff0c;被广泛用于非法获取网站控制权&#xff0c;是发生在应用程序的数据库层上的安全漏洞。 在设计程序&#xff0c;忽略了对输入字符串中夹带的SQL指令的检查&…

C语言写学生信息管理系统

说明:本博文来自CSDN-问答板块,题主提问。 需要:用C语言设计一个学生信息管理系统(尽量不使用指针),学生信息包括学号,姓名,数学成绩,C语言成绩,英语成绩和每个学生的总成绩这几项。系统要实现如下几个功能:1.添加学生2.删除学生3.修改学生信息4.查询学生信息5进行学…

阿里云服务器ECS u1实例性能怎么样?有用过的吗?

阿里云服务器u1是通用算力型云服务器&#xff0c;CPU采用2.5 GHz主频的Intel(R) Xeon(R) Platinum处理器&#xff0c;通用算力型u1云服务器不适用于游戏和高频交易等需要极致性能的应用场景及对业务性能一致性有强诉求的应用场景(比如业务HA场景主备机需要性能一致)&#xff0c…

自学高效备考2024年AMC10:2000-2023年1250道AMC10真题解析

我们今天继续来随机看5道AMC10真题&#xff0c;以及详细解析&#xff0c;这些题目来自1250道完整的官方历年AMC10真题库。通过系统研究和吃透AMC10的历年真题&#xff0c;参加AMC10的竞赛就能拿到好名次。即使不参加AMC10竞赛&#xff0c;初中和高中数学一定会学得比较轻松、游…

【深度学习应用】基于Bert模型的中文语义相似度匹配算法[离线模式]

1、准备中文离线模型 配置文件夹 文件获取方法&#xff1a; 访问官网&#xff1a;https://huggingface.co/bert-base-chinese/tree/main 下载以下文件 2、测试代码 # -*- coding: utf-8 -*- #pip install transformers -i https://mirrors.aliyun.com/pypi/simple/ #pip …

在整个价值链构建负责任的 AI

在整个价值链构建负责任的 AI&#xff1a;从数据到部署&#xff0c;以合乎伦理道德的方式构建 AI 构建合乎伦理道德的 AI 是所有人工智能企业的责任&#xff0c;这一点再怎么强调都不为过。负责任或合乎伦理道德的 AI 能够做到公正、公平&#xff0c;并能改善AI服务人群的生活…

2024年主攻外贸爆款产品,聚焦10个重要国家

2024年中企出海趋势明显&#xff0c;中小微企业纷纷布局。提供15个国家重点进口产品供参考&#xff0c;助力选品和行业开发。 以下是15个重点国家的爆款产品&#xff1a; 一、美国进口频次前10位 二、俄罗斯进口频次前10位 三、英国进口频次前10位 四、越南进口频次前10位 五…

Claude 3超越GPT-4?Anthropic发布新一代AI模型,Opus在多领域展现行业新水准,你不得不看的全面解析!

Anthropic发布了新一代AI模型——Claude 3。 这个系列包括Haiku、Sonnet和Opus三个模型。 特别是Opus&#xff0c;在多个基准测试中&#xff0c;它的表现都超过了我们熟知的GPT-4和Gemini 1.0 Ultra。 在数学、编程、多语言理解和视觉处理等多个方面&#xff0c;Opus都展现了…

期货开户交易切勿满仓操作

平时我们交易主要是仓位管理风险&#xff0c;切勿不要满仓操作&#xff0c;满仓相当于一锤子买卖&#xff0c;我们做交易要有交易计划&#xff0c;计划中除了开仓点.止损点.止盈点外&#xff0c;还有加仓点&#xff0c;所以我们要留下充足的加仓仓位&#xff0c;有很多投资者是…

如何处理Docker容器占用空间不断变大

在使用Docker容器时&#xff0c;一个常见的问题是容器占用的空间会不断增大&#xff0c;导致磁盘空间的快速耗尽。这种情况可能会给系统带来不必要的负担&#xff0c;因此需要及时处理。本文将介绍一些解决Docker容器占用空间不断增大问题的方法。 首先&#xff0c;我们需要了…

基于vgg16进行迁移学习服装分类

pytorch深度学习项目实战100例 的学习记录 我的环境&#xff1a; 白票大王&#xff1a; google colab 用其他的话&#xff0c;其实实现也行&#xff0c;但是让小白来重环境来开始安装的话&#xff0c;浪费时间 数据集 Clothing dataset 20 个不同类别的 5000 多张图片。 该…

基于springboot+vue实现电子商务平台管理系统项目【项目源码+论文说明】

基于springboot实现电子商务平台管理系统演示 研究的目的和意义 据我国IT行业发布的报告表明&#xff0c;近年来&#xff0c;我国互联网发展呈快速增长趋势&#xff0c;网民的数量已达8700万&#xff0c;逼近世界第一&#xff0c;并且随着宽带的实施及降价&#xff0c;每天约有…

【机器学习】包裹式特征选择之递归特征消除法

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;机器学习 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进…