自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LINUX学习之OSD模块和SDL_TTF模块及实战

SDL_TTF库是一个TrueType的字体渲染库,SDL_TTF库基本上和SDL库一起进行使用,它依赖于freeType2来处理字体数据。并允许程序员使用多种TrueType字体、这些字体不需要程序员自己来编写例程,SDL_TTF库可以使用轮廓字体这种强大功能,让开发者轻松地获得高质量的文本输出。下面是用SDL_TTF库输出的文本。

2025-11-21 11:50:56 800

原创 LINUX学习之视频编码增强模块:QP原理及实战

作用:控制视频编码中的量化精度,直接影响压缩率和图像质量范围:H.264/H.265 中 QP 值范围通常是 0-51关系:QP值 ⇌ 量化步长 ⇌ 图像质量 ⇌ 码率。

2025-11-18 18:05:17 842

原创 LINUX学习之通过多线程分别获取两个不同分辨率的码流数据

使用VENC对视频进行码流处理,支持不同分辨率的编码,但是VI输出原始分辨率为1920*1080,不能直接通过设置VENC的分辨率进行降分辨率。需要通过RGA进行处理,将分辨率降低,在用过VENC编码输出。模块ID拼写错误:应该为RK_ID_VENC才是视频的数据,而我使用了RK_ID_AENC为音频模块数据。的数据格式(如图像宽度、高度、像素格式)必须与目标通道所期望的输入格式兼容,否则发送会失败。需要注意的是:低分辨率的数据是通过RGA获取,然后再传递给VENC进行编码处理,需要用到。

2025-11-18 15:47:21 832

原创 Linux学习之视频编码模块---VENC模块讲解及实战

本文详细介绍了RV1126芯片中的VENC视频编码模块。VENC模块支持H.264/H.265/MJPEG/JPEG等多种编码格式,具有硬件加速和多路编码能力。文章重点解析了VENC模块的关键结构体定义,包括基础属性(VENC_ATTR_S)、码率控制(VENC_RC_ATTR_S)和GOP属性(VENC_GOP_ATTR_S),并提供了H.264编码的配置实例。同时介绍了VENC模块的创建、绑定和解绑API接口,以及通过多线程获取编码数据的实战流程。最后记录了调试过程中遇到的分辨率不匹配、换行符缺失、存储

2025-11-04 14:37:48 1142

原创 Linux学习之视频码率和视频码率控制模式

码率控制指的是利用编码中的一些特殊手段控制图像的压缩比例,使其画面质量在不同的场景中保持一个最优的状态。RV1126的码率控制方式,CBR固定码率控制模式、VBR可变码率控制模式、AVBR码率控制模式。

2025-11-01 15:37:05 360

原创 Linux学习之视频编码原理学习

目录一。VCL层和NAL层讲解1.视频编码的作用:对于 YUV420:2.H264(HEVC)编码架构: VCL层和NAL层2.1VCL层:Video Coding Layer 视频编码层2.1.1:帧内预测压缩---空间压缩2.1.2:帧间预测压缩- 去除时间冗余2.1.3:变换量化---集中并简化信息2.1.4:熵编码 - 去除统计冗余2.1.5 总结2.2 NAL 层:Network Abstraction Layer 网络抽象层2.2.1:Start Code(起始码)防竞争机制:为了防止 NAL

2025-10-31 21:55:19 609

原创 Linux学习之RGA理论与实战

RGA模块用于2D图像的裁剪、格式转换、缩放、旋转、图片叠加等。2.rkmedia中RGA通道仅支持格式转换、缩放、裁剪、旋转功能,图片叠加则需要单独调用librga.so库,参见3.RGA数据类型3.1.RGA通道的最大个数3.2.RGA_CHNRGA通道号。

2025-10-31 17:33:22 951

原创 Linux学习之RV1126视频输入模块VI及实战读取摄像头数据

RV1126的ISPP(硬件图形后处理单元):接收到Sensor传来原始图形,然后在硬件上并行生成多个不同规格的输出流。它提供了一套统一的API,允许应用程序与各种视频设备进行交互,无论是USB摄像头、内置摄像头还是复杂的视频采集卡。4.开始读取数据:ret = RK_MPI_VI_StartStream(PIPE_ID, CHN_ID);作用:读取sensor(摄像头)的数据,本质是对V4L2驱动架构的接口做了封装,VI模块初始化------启动VI模块工作------开启多线程采集VI数据并保存。

2025-10-29 22:58:57 1008

原创 Linux中Vmware共享文件夹重启挂载失败解决方法

问题:第一次配置Vmware共享文件夹成功,可以从linux系统中共享文件到window中,但是重启linux系统后,就没有办法共享出去,好像是每次重新都要手动挂载才行1.# 挂载到新目录显示不是空文件夹---需要将该挂载点删除,建立新的挂载点2.检查当前挂载信息可以看到存在一个共享文件夹目录---UbuntuShared3.检查是否有挂载 -说明文件夹并没有挂载成功4.清空挂载目录的文件 --- sudo rm -rf /mnt/hgfs/*

2025-10-29 22:20:17 429

原创 YUV原理学习总结

YUV是一种常见的视频像素格式,经常用在视频编解码上面,YUV分别由Y分量和U、V分量(红色投影Cr)组成。Y(亮度):代表图像的明暗程度(灰阶值),是视觉感知中最重要的部分。UV(色度):代表图像的色彩信息,包括色调和饱和度。分离的优势:Y和UV分量可以分离,这使得只有Y分量的图像就是黑白图像,完美兼容黑白电视系统。应用场景:主要用于视频处理和编解码。

2025-10-28 16:54:27 989

原创 Linux学习之数据库SQlite3快速入门

零配置:无需按照和管理配置零配置:无需安装和管理配置,开箱即用。单一文件存储:整个数据库存储在单个磁盘文件中,便于携带和管理。跨平台兼容:数据库文件可在不同字节顺序的机器之间自由共享。大容量支持:支持数据库大小最大至2TB。轻量级:全部源码约3万行C代码,占用约250KB。高性能:相比大多数常见数据库,对数据的操作速度更快。

2025-10-24 19:54:29 618

原创 整理下近期遇到的笔试

对于这个输入的输出结果,任何种类的物体的可能性都是一样的,对吗?全白输入对所有神经元都是相同的常数激活,经过各层权重后,网络输出的 logits/scores 并不相等,因此 softmax 后的类别概率。:在一些简单的嵌入式系统中,可能使用特定的动态内存分配算法(如首次适应、最佳适应等)来管理内存的分配与释放。思路:双指针的方法----慢指针i,用来保存最后需要输出的数,及不重复个数和存放在数组中的地址。:在复杂的嵌入式系统中,MMU 可以提供虚拟内存支持,实现内存的动态分配、保护和映射。

2025-10-24 11:42:46 852

原创 90分钟C++面向对象编程速成---总结

进入总结阶段:可以自己尝试回答一下。私有的作用----体现封装性。

2025-10-21 22:58:43 330

原创 Linux学习之进程

8.exec函数族:让父子进程来执行不想干的操作,即替换进程地址空间的代码.text段,执行另外的程序,不需要创建额外的地址空间,相当在程序中调用另外一个应用程序(个人感觉有点像函数指针+回调函数的效果,都是在一个函数中执行另外一个函数)进程调用_exit();1.进程标志信息:包括进程id(PID),父进程id(PPID),用户id和组id。9.孤儿进程:父进程退出,但是相对应的子进程还在运行,子进程会被init进程(进程号1)收养。2.进程状态:进程状态:初始态,就绪态,运行态,挂起态和终止态。

2025-10-21 22:58:20 632

原创 STM32的OTA学习---基于正点原子的教学视频

-----------------------------插入如何看Bootloader程序大小------------------------------------------ISP 在系统编程:执行厂商的Bootloader程序进入ISP模式后,选择官方提供的烧录通信接口配置ISP编程工具对闪存进行烧录---需要进入启动模式中的模式二-系统寄存器。3.将接收后的数据写入FLASH,起始地址需要正确---APP的偏移地址。前面大小改进了,后面的位置也要更新变小,前面偏移64K,后面也要减小64K?

2025-10-16 18:59:17 492

原创 FreeRTOS移植步骤1--文件的添加

MenMang文件下的heap_1.c,heap_2.c,heap_3.c,heap_4.c,heap_5.c。在源码文件中收不到的---直接网上搜索--FreeRTOSConfig.h ---找打官方介绍(支持中文)重新编译:内存管理的文件我们都加进来的,里面存在重复定义问题---选择heap4.C,其余的删掉。2.智能天气时钟项目的工程文件------基于梅花七月香的智能天气时钟项目。重新编译:静态内存分配没有关---在FreeRTOSConfig.h中搜索--static。

2025-10-09 20:18:20 1003

原创 90分钟C++面向对象编程速成---纯虚函数与抽象类

现实中:只要是学生就一定处于三个子类(研究生,本科生,中小学生),不会存在是学生,但不属于三种具体的子类。抽象类:学生是一个类(父类),研究生,本科生,中小学都是学生类的子类(少了中职类哈)-父类没有自己的对象-----这种没有自己对象的父类被叫做抽象类。前面我们都是定义了父类的对象,那是因为没有使用纯虚函数。抽象类依赖纯虚函数实现。

2025-10-06 21:34:21 115

原创 90分钟C++面向对象编程速成---多态与虚函数

C++多态的核心:在程序开始定义一个父类指针,该指针可以动态的指向不同的来,还可以动态调用不同类的方法(student,postgraduate和undergraguate 中的study函数),从而实现不同函数类使用相同的方法。在类的指针中,我们讲明父类的指针没有办法调用子类中的属性和方法,但是定义成virtual则可以调用,产生覆盖的作用。举例:买车票的事情,学生是学生票,社会人士是全价票,都是买票的这件事,但是结果--给的钱不一样。允许功能类似的同名函数,但是函数的形式参数必须不同。

2025-10-06 21:17:06 146

原创 90分钟C++面向对象编程速成---类的指针

但是只能使用调用从父类继承来的方法,子类独有的方法不可以调用。不考虑继承,C++中的类指针与C中的结构体指针类似。主要是包含的关系:研究生属于学生,但是学生不一定属于研究生。父类的指针可以指向子类成员。

2025-10-06 19:28:53 209

原创 90分钟C++面向对象编程速成---类的派生继承--引入protect

在没有派生继承情况下,protect和private功能是一样的,都不允许外部直接访问,但是pretect允许子类继承。子类会自动继承父类的publice成员,继承来的东西不要重新在子类定义中写入 ---但是父类的private子类没办法继承,为了决绝这个问题---引入protect类。同时子类还有会自己的特性,根据需求写入自己的成员----属于私有特性。属于派生继承中公有的特性(是我方便理解才这样子说的,非官法说法)本科生和研究生也是学生,都是学生的子类。所谓的继承:相对子类而言的。

2025-09-30 13:24:48 119

原创 90分钟C++面向对象编程速成---正确的区分成员该写入public还是private?

一般是把 “ 方法”全部放在publice中。只有保证一定的条件才运行你修改属性。目的:防止类的外部随便修改 属性。属性放在private中。

2025-09-30 11:42:48 92

原创 90分钟C++面向对象编程速成---public和private的意义

对类的外部隐藏某部分数据或者工作机制----“封装性”(做题时会遇到封装性的这个概念,一直没有很系统的去了解),将部分数据保护起来,不被随意改变。private和public的区别主要是在类以外是否可以被访问到。public成员是可以被外部访问,而private无法被直接访问。但是类里面的成员访问是被允许的(调用私用成员方式的核心)

2025-09-30 11:39:00 218

原创 90分钟C++面向对象编程速成---常见类的成员函数

static在面试中也是比较容易被问的,需要了解局部变量,全局变量,静态局部变量的生命周期。可以扩展了解一下:常数指针和指针常数,在面试过程中会经常考到。优点:对多个成员实现自动化赋值,不需要手动一个一个赋值。static 标识符:静态标识符 描述全局又与某个对象属性无关。后面补充---不同类内存管理和存放空间的内容。静态成员函数,依赖于类,但不依赖于某个对象。2.构造函数---自动初始化-----3.带参数的构造函数,动态初始化对象。4.析构函数---销毁对象,释放内容。5.常成员函数 --只读不写。

2025-09-30 10:59:00 209

原创 90分钟C++面向对象编程速成---类的定义

在C语言中,存在系统自带的类,例如,int表示整数类,float表示浮点类。成员函数的重载---与C语言的普通函数一样,成员函数也可以重载。类可以对应多个对象,但第一个对象只能对应一个类。类student内有两个内容(年龄和名字)叫做成员数据/属性。其中int 是类,a是int的一个对象。例如:创建一个学生类student,对象则是张三李四。不同函数可以有相同的函数名,通过输入不同的参数来识别。不仅是函数还是成员,说明是类的成员。面向对象编程的核心----1.1为什么是类,什么是对象?

2025-09-30 10:20:12 191

原创 fork() 父子进程的数据共享

上文说过:fork之后的父子进程的地址空间数据完全相同的。但是在写时分别会在物理地址上拷贝独立的变量进行单独的写入。但是后续会根据传入的进行不同的的操作。各进程的地址空间中的数据是完全独立的。最后物理地址: i,f_i,z_i。对于同一个变量,读取时是共享的。存在变量 的物理地址是 i。

2025-09-29 22:20:02 174

原创 随手记录---

/a.out # 运行 自动生成文件名为 a.out 有可能被覆盖。1.gcc hello.c 和 gcc hello.c -o hello 的区别。./hello # 运行 会生成知道的文件名。通过man 1 gcc 可以知道 格式。-o 是可执行文件。

2025-09-29 20:14:36 101

原创 进程-fork函数

过程:调用fork()函数后,系统先给新的进程分配资源(存储数据和代码空间),把原来的所有值都幅值到新的进程中,等同于克隆一个自己。通过系统创建一个原来进程完全相同的进程,可以独立运行,是否做相同的事情,取决于传入的变量值。创建后用户数据一致,进程id不一致,返回值不一致,先运行父进程,再运行子进程。>0:当前进程为父进程。结果:先运行父进程,后运行子进程,而且二者输出的值一样。返回值: =0 :当前进程为子进程。可使用 getpid:得到当前进程的id。getppid得到当前进程的父进程的ID。

2025-09-29 19:50:36 195

原创 进程学习记录

并行:当系统有多个CPU时,不同CPU各自运行各自的进程,不会抢占资源。只是CPU在来回切换,呈现出一种同时运行的假象。并行是真正意义上的同时发送,并发并不是,只是假象上的同时,本质还是单通道运行。并发:同个处理机上,一段时间内有多个程序在运行ing。每个进程的内核中都拥有,存储进程相关的信息。需要占用系统资源----CPU,物理内存。4.进程状态:初始态,就绪态,运行态,挂起态,终止态。进程的状态,有就绪,运行,挂起,停止等状态。所有数据的都在内存中。系统中每个进程有唯一的。进程可以适用的资源上线(

2025-09-29 18:03:47 130

空空如也

空空如也

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

TA关注的人

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