自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 h264/h265编解码专题讲解

使用帧内预测的I帧可以进行独立编解码,不受其他帧的影响,I帧可以作为P帧和B帧的参考帧。而P帧和B帧采用帧间预测,具有很大的压缩比,能够很大提高压缩率。同时,P帧可以作为其后P帧的参考帧,或者作为其前后B帧的参考帧,所以P帧可能会造成误差的扩散,往往通过周期插入I帧来阻止误差积累。一般来说,对于像h264、h265编解码器,一般会采用块级编码,也就是预先将一幅图像切割为多个像素块,一次对块内的部分或者所有的像素进行预测和编码;‘是对同一帧数据使用帧内编码和帧间编码多个编码策略。

2024-07-26 15:06:37 707

原创 通过JNI调用librkaiq库

由于rkaiq会依赖系统的libutils.so、libcutils.so库,查看/system/etc/public.libraries.txt和/vendor/etc/public.libraries.txt文件中列举的so库,根据链接器命名空间的限制规则APP进程默认只允许打开这些系统so库(通过java调用System.loadLibrary和native调用dlopen)。

2024-07-24 15:58:09 223

原创 RkAiq(Rk Auto Image Quality)模块讲解

ISP30 包含了一系列的图像处理算法模块,主要包括:暗电流矫正、坏点矫正、3A、HDR、镜头阴影矫正、镜头畸变矫正、3DLUT、去噪(包括RAW域去噪,多帧降噪,颜色去噪等)、锐化等。ISP30包括硬件算法实现及软件逻辑控制部分,RkAiq即为软件逻辑控制部分的实现。RkAiq软件模块主要实现的功能为:从ISP驱动获取图像统计,结合IQ Tuning参数,使用一系列算法计算出新的ISP、Sensor等硬件参数,不断迭代该过程,最终达到最优的图像效果。

2024-07-24 15:43:00 647

原创 一种Android系统双屏异显的两路音频实现方法

在 h a r d w a r e / l i b h a r d w a r e / 下 打 上 补 丁 D u a l _ a u d i o _ h a r d w a r e _式,这就是audio_hw_device、audio_stream_in及audio_stream_out等等存在的目的,这些。时,mHeadState的状态设置成BIT_HDMI_AUDIO;状态设置包括BIT_HDMI_AUDIO和BIT_USB_HEADSET_DGTL,目的是同时打开hdmi和speaker。

2024-07-20 10:57:50 969

原创 RK3588 tinyalsa_hal添加一个自定义声卡输入和输出

输出流程图:在声卡列表snd_out_sound_cards里添加一个自己的声卡,比如添加一个dev_proc_info参考一下rk的speaker:将声卡添加到输出流中:根据上面的输出流程图,首先会调用adev_open_output_stream这个函数来打开要配置输出声卡,write配置为out_write最终是调用了start_output_stream函数在 read_out_sound_card函数里面获取声卡id添加到dev_out中。

2024-07-20 10:53:46 451

原创 RK3588 Android12 移植opencv库,并在camera hal通过opencv处理图像

找到对应的编译Android.mk并加上链接opencv库,这里在rk3588里面对应的camera hal编译文件是。移植完成后,我们需要把opencv应用到camera hal中进行图像处理。最后在对应图像帧处理的地方加入我们的方法就可以了。在官网下载opencv安卓版本。

2024-07-15 20:36:34 292

原创 RK3588 Android12 红外遥控预览镜头缩放(数码变焦)

原Rect的宽是 rect.width(),放大到最大时 zoomRect 的宽是 rect.width() / maxZoom,因为有左右两边,所以它们的差值需要除以2,然后划分成 MAX_ZOOM 份,需要再除以 MAX_ZOOM。再简单说明一下上面的代码,因为本身maxZoom的值并不会很大,如果直接使用 1~maxZoom 的 int 值去放大缩小,画面变化就很剧烈,所以设置了一个 MAX_ZOOM = 100 去把这个过程划分成了100份,这个值可以自己设定。初始化缩放宽度和高度的最小值。

2024-07-12 11:28:19 505

原创 AS编译系统应用

一、生成系统签名二、导入源码,用配置三、配置依赖jar包。

2024-07-05 16:50:20 924

原创 rk3588 Android HDMI IN热插拔解决

1、公司在使用 别的厂商的板卡遇到一个问题,开机我们的app自启就会闪退,后来定位发现是camera 的open出错了,这个问题的出现是因为没有插HDMI IN输入的问题导致的,所以需要对HDMI IN的热插拔进行检测,后面我把这个问题也顺利解决了。下面是我的尝试和使用的解决办法。3、话不多说,我用的是读取系统文件实现的,但是这个方法,需要有status文件的系统读权限,可以修改设备下的/vendor/etc/init/hw/init.rk3588.rc文件修改的权限,这个问题交给自己或者厂家协商解决。

2024-07-05 16:47:05 522

原创 RK3588 Android12实现UVC输出功能详解

上述进入device模式之后,会在/dev下生成一个video节点,通过ls /sys/class/video4linux来确认节点。然后通过 javac -h命令把这个类生成一个头文件,实现头文件里声明的函数,将以上的流程添加到这个函数里,最后在对应地方调用即可。由于涉及到UVC协议和V4L2标准接口,所以通过调用JNI接口来实现UVC的功能。3、初始化节点,也就是对UVC流控制端口的配置,配置传输速率、包大小、端点序号等。在这个函数里面我们就可以通过采集摄像头的数据,来写入到UVC节点里面。

2024-07-05 16:43:24 389

原创 RK3588 Android12将普通apk设置为launcher

添加以下内容后,就会把对应apk添加上launher属性,与在AndroidMainifest.xml中添加launcher属性是一样的效果。添加步骤一的内容,开机还是会启动一个桌面启动器来选择launcher,以下代码就是用来选择默认launcher的,更换对应的包名和类名即可。1、设置apk的launcher属性。

2024-05-06 17:25:30 368

原创 RK3588 Android 12 异显功能

两个副屏需要分别设置 persist.sys.rotation.einit-1 ,persist.sys.rotation.einit-2(属性值为0,1,2,3)这两个属性来控制对应屏幕的方向。旋转功能:双屏场景下,副屏可通过persist.sys.rotation.einit-1 (属性值为 0,1,2,3)属性设置不同的方向,例如 setprop persist.sys.rotation.einit-1 1,设置副屏旋转 90 度,设置该属性后需重启机器验证。,它的目的是显示内容到第二屏幕。

2024-04-30 17:47:31 811 4

原创 FLV格式讲解

FLV流媒体协议是美国Adobe公司推出来的一种流媒体协议。FLV流媒体格式的特点是封装过后的音视频数据非常小、并且封装的规范相对更加简单,所以FLV流媒体格式非常适合网络传输。但是FLV格式是Adobe公司的私有协议,所以它支持的网络传输协议比较有限:如RTMP、HTTP-FLV。

2024-03-29 11:36:01 759 1

原创 RV1126 H264/HEVC编码流程

采集的时候用到的结构体·MPP_CHN_S,其中MPP_CHN_S的enModId是模块的ID、 s32ChnId是通道id。这里分别创建两个MPP_CHN_S结构体,一个是VI的MPP_CHN_S,它的enModId选择的是。)、u32Width(分辨率宽度)、u32Height(分辨率高度)、 enPixFmt(VI格式)、enBufType(映射类型默认是:MMAP)、enWorkMode(VI通道模式)等成员变量。另外一个则是VENC的MPP_CHN_S,它的enModId选择的是。

2024-02-02 21:47:43 1777

原创 logcat命令详解

⽇志消息包含⼀个元数据字段,除了标签和优先级,您可以修改输出显示⼀个特定的元数据字段格式的消息。三个参数连⽤,这样当⼀个⽂件⽇志输出满了之后可以⻢上在另⼀个中进⾏输出。缓冲区主要给系统组件使⽤,⼀般的应⽤不需要关⼼,应⽤的。选项来指定⼀个⽀持的输出格式。清除缓冲区中的全部⽇志并退出(清除完后可以使。为了减少不想要⽇志的输出,可以建⽴⼀个过滤器。中的⼀个命令⾏⼯具,可以⽤于得到程序的。加载⼀个可使⽤的⽇志缓冲区供查看,⽐如。显示原始的⽇志消息,没有其他元数据字段。类是⼀个⽇志类,可以在代码中使⽤。

2024-01-25 14:23:15 3724

原创 h264的编码结构

它的最大特点是自带一个完整的图像信息,在解码的过程中只需要解码本帧就可以完整地提取出一个完整的画面。中文的意思是叫做片,为什么需要这个片,主要是为了并行编码设计,所谓的并行编码指的是,把一帧图像分成几个片,并片之间是相互独立进行编码的!帧指的是这一帧和前一帧的差别,并通过将图 像序列中已经编码后的冗余信息充分去除来压缩传输数据量的编码图像。帧又称之为前向参考帧,此帧的特点是需要参考前一帧的图像信息才可以正确把图像解码出来。帧指的是前向参考帧,它需要参考前一帧的图片才能够正确把数据解码出来。

2024-01-19 16:19:16 303 1

原创 音视频编解码基础

从解码队列拿数据,并进行音视频同步处理 把第二步解码队列的音视频拿出来,分别进行音视频同步的算法处理。:把队列的裸流数据取出来,进行每一帧的解码操作 把视频裸流队列和音频裸流队列的数据取出来,并一帧一帧送到解码器进行视频解码和音频解码。音视频编码技术在音视频领域有着举足轻重的地位,这是由于音视频原始数据量较大,在传输的过程中如果不进行编码的话,则无法进行传输。编码的第一步基本上都是采集视频、音频的数据,并把采集到的数据送到对应的音视频编码器。从视频编码队列和音频编码队列拿出数据,并进行音视频的封装,

2024-01-19 16:11:02 428 1

原创 RK3399 打开红外摄像头时默认打开红外补光灯

增加一个设备树节点属性用于绑定红外补光灯的控电管脚,在针对性的摄像头推流时,控制对应管脚进行拉高拉低操作。关闭GC2053 红外摄像头,不获取摄像头数据流时,针对红外补光灯的控电管脚进行拉低操作。打开GC2053 红外摄像头,获取摄像头数据流时,针对红外补光灯的控电管脚进行拉高操作。新增mc_infrared-gpios按钮用于绑定红外补光灯的管脚。

2023-12-29 15:34:30 459 3

原创 Linux I2C驱动挂载知识

I2C工作原理:I2C总线标准的两根传输线,SDA是数据线,Scl是时钟线,当SCL为高,SDA由高到低时,发送启动信息,发送9个脉冲,1-7是地址,8是读写控制位,9是ACK应答位,所以挂在I2C上的被控设备都接受所发送的信息,并把接收到的7位地址与自己的地址进行比较,如果相同ACK就会反馈应答。当SCL为低,SDA由低到高,则发送停止信号。二、I2C驱动架构。

2023-12-29 11:06:45 966 1

原创 RK3288 7.1 MIPI屏适配

(1) 在自己不能保证屏幕排线是否接好的情况下,切记寻找硬件工程师确认屏幕排线没有接错,否则容易造成烧坏屏幕的后果(2)对于新屏幕,一开始尽可能不要下发到了其他屏幕的初始化指令,这样容易“污染”屏幕IC的指令区,导致即使下发对应屏幕的初始化指令也不能去除其它已刷入的屏幕初始化指令,最后会使得无论怎样调试都解决不了的屏幕显示问题。(3)要尽可能确保固件已经配好了对应的屏幕,在烧写完毕之后,断电接好屏幕,重新上电查看屏幕显示效果(4)遇到疑问及时与硬件工程师和屏幕供应商反馈情况,以获得最有效的帮助。

2023-12-28 17:07:23 1808 1

原创 shell指令调控背光GPIO

shell指令调控背光GPIO

2023-12-28 16:08:07 399 1

原创 Linux中的input子系统浅析

系统框架主要分为三部分:Input driver:该部分是对应实际的输入设备驱动,用于处理硬件设备,将数据转化成统一的数据,方便和handler层交互。input core:字面意思就是input系统的核心层,提供各种处理函数input_register_device、input_register_handler、input_allocate_device、input_event等。Event handler:对应某个输入事件的处理,将数据发送到上层。

2023-12-25 17:19:08 919

原创 排序算法之堆排序

堆一般指的是二叉堆,顾名思义,二叉堆是完全二叉树或者近似完全二叉树。

2022-08-17 18:54:21 175 1

原创 排序算法之希尔排序

希尔排序是D.L.Shell于1959年提出来的一种排序算法,在这之前排序的算法时间复杂度基本都是O(n)的,希尔排序算法是突破这个时间复杂度的第一批算法之一。希尔排序算法的发明,使得我们突破了慢速排序的时代,之后。......

2022-08-15 19:25:06 476 1

原创 fork和vfork的区别

vfork 保证子进程先运行,在调用exec 或exit 之前与父进程数据是共享的,在它调用exec。3. vfork ()保证子进程先运行,在她调用exec 或exit 之后父进程才可能被调度运行。调用这两个函数之前子进程依赖于父进程的进一步动作,则会导致死锁。1. fork ():子进程拷贝父进程的数据段,代码段。vfork ( ):子进程与父进程共享数据段。或exit 之后父进程才可能被调度运行。2. fork ()父子进程的执行次序不确定。......

2022-08-15 18:08:28 111

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除