- 博客(15)
- 收藏
- 关注
原创 RV1126 NO.15:H265码流结构的分析
H265码流分析 1.分层更细:从CTU到TU的四级拆解,精准压缩每个区域。预测更智能:B帧和双向预测减少冗余。并行友好:Tiles和WPP让多核设备解码更快。就像用更小的收纳盒、智能分类标签和并行整理术,H.265在同样画质下把视频体积压缩到H.264的一半,但代价是编码复杂度翻倍(需要更强的处理器)。
2025-05-06 01:26:28
2002
原创 RV1126 NO.14:通过多线程获取VENC的H264码流数据
RV1126多线程采集VI模块编码VENC并保存到文件,一般分为四个步骤:分别是初始化VI模块、初始化VENC模块、绑定VI和VENC模块、多线程获取每一帧H264码流数据。VENC模块的初始化实际上就是对VENC_CHN_ATTR_S的参数进行设置、然后调用。VI模块的初始化实际上就是对VI_CHN_ATTR_S的参数进行设置、然后调用。绑定VI节点和VENC节点,使其两个模块能够关联起来,使用的API是。模块ID是RK_ID_VENC,通道号ID是VENC创建的ID号。
2025-05-06 00:48:54
430
原创 RV1126 NO.13:RV1126的视频编码模块的讲解
这个结构体主要设置码率控制属性,这其中包括:enRcMode、stH264Cbr(H264的CBR码率控制模式)、stH264Vbr(H264的VBR码率控制模式)、stH264Avbr(H264的AVBR码率控制模式)、stMJpegCbr(MJPEG的CBR模式)、stMJpegVbr(MJPEG的VBR模式)、stH265Cbr(H265的CBR码率控制模式)、VENC_CHN_ATTRS是管理整个VENC模块的管理结构体,这里面它包含三个VENC子类结构体:分别是VENC_ATTR_S结构体(
2025-04-30 12:42:58
942
原创 RV1126 NO.12:视频编码原理讲解三:视频码率和视频码率控制模式
假设在编码到简单图像的时候它会节省码率,而如果编码到一些相对复杂的图像它的码率将会提升,VBR模式一般使用在DVD、蓝光、HD录播上面。所以,它会根据画面的复杂程度去决定视频文件的大小,另外还有的是使用VBR进行编码的时候它的编码算法复杂度会变高,这就会导致解码端的复杂度升高。假设画面里面出现大量的运动画面(如踢球、打篮球这些场景),则AVBR将会把8Mbps码率提高到MAX(MAX是一个动态调节的东西,它是由后面QP参数进行调节的),若此时画面有一些静止画面,则会把码率降低到MIN水平。
2025-04-29 01:55:46
841
原创 RV1126 NO.11:视频编码原理讲解二:H264重点帧和GOP的讲解
MaxFrameNum是frame_num的最大上限值,frame_num是图像序号的一种表示方法,在帧间预测中常用作一种参考帧标记手段,要注意的是frame_num是循环计数,当它达到MaxFrameNum后则从0重新计数。表示解码picture order count(POC)的方法,它用来表示解码帧的显示顺序,当码流中存在B帧的时候,解码顺序和显示顺序不一样,视频帧显示需要根据POC重新排序,否则将会出现跳帧和不连续情况,比方说编码序列IPBPB,序号分别是0,4,2,8,6。
2025-04-27 23:55:01
2243
原创 RV1126 NO.10:视频编码原理讲解一:VCL层和NAL层的讲解
用这种方法可以先编码出一个完整的图像1帧,紧接着2帧的数据就不编码出一张完整的图像,而是只写入和1帧的不同的数据,这样2帧数据的大小则会大大降低。以此类推,3帧的数据参考2帧数据,并且也只写入2帧不同的数据,帧间压缩表现出来的数据同样也是最大16 x 16的宏块(它也包括:4x4,8x8)。按照这样的方法,不停地循环下去。所以为了让其编码质量得到更好的效果,在H264的高清(HD)档次,它支持8x8的DCT变换,并且不需要对DC系数进行Hadmard变换,DCT变换后则对DC和AC系数进行统一处理。
2025-04-27 23:11:39
720
原创 RV1126 NO.9:获取RGA的数据并保存
模块号,指的是目前使用的模块ID。比方说:正在使用的是VI模块,那模块ID就是RK_ID_VI。又比方说正在使用的是RGA模块,那模块ID就是RK_ID_RGA。如图所示,这个程序的步骤分为四步,分别是:VI模块初始化、RGA模块的初始化、绑定VI节点和RGA节点、开启线程采集RGA数据并保存。,它的enModId是RK_ID_RGA,s32ChnId是创建的ID。,它的enModId是RK_ID_VI,s32ChnId是创建的ID。模块ID是RK_ID_RGA,通道号ID是RGA创建的ID号。
2025-04-27 22:46:26
501
原创 RV1126 NO.8 : RGA模块
输出图像信息,一般填写的是原分辨率参数。比方说把一个视频用RGA进行镜像处理(镜像就是指物体相对于该物体反射出来的虚像,就像一个人照镜子,反射出来的图像),要把一个原分辨率1920 * 1080的视频压缩成1280 * 720的视频,此时就要用到RGA模块了。RGA模块是RV1126用于2D图像的裁剪、缩放、旋转、镜像、图片叠加等格式转换的模块。第一个参数:RGA通道号,取值范围是[0, RGA_MAX_CHN_NUM],也就是16。RGA结构体分为:rga区域属性结构体,rga属性结构体。
2025-04-25 20:58:05
311
原创 RV1126 NO.7 :多线程获取VI模块的YUV数据
RV1126多线程采集VI模块的数据,一般分为三个步骤:分别是初始化VI模块、启动VI模块开启采集、开启多线程采集VI数据并保存到本地。所谓的分割操作,就是要获取整体数据里面的。获取的数据是一个整体的数据,换言之这个数据包含了缓冲区指针和缓冲区大小。enModID:模块号ID,模块号指的是目前使用的是哪个模块如:VI模块(设置完上面的VI模块后,就要开启VI模块的工作,使用的API是。好的,这就是简单的多线程VI数据采集,看不懂的可以私信我。那具体的我们来看看下面的API是怎么获取到它的具体数据。
2025-04-25 00:45:24
463
原创 RV1126 NO.6 :VI模块
RV1126的VI模块指的是视频输入模块,它的作用是读取sensor的数据。VI模块底层就是对V4L2驱动架构接口的一系列的封装,它本质上还是依赖Linux底层的V4L2驱动架构并向应用层提供对应的设备文件节点,比方说(/dev/video*)。换言之设备sensor和pipe之间有可能是一对一或者一对多的关系,而在RV1126中VI管道号对应sensor的数量,VI管道默认从0开始。从图片可以看到,每个Camera的Vipipe最多对应8个通道数(ViChn),MAX_CHN的值是8。
2025-04-24 00:46:11
1776
原创 RV1126 NO.3:UBuntu整体编译RV1126的SDK环境&固件烧录
RV1126 NO.3:UBuntu整体编译RV1126的SDK环境&固件烧录
2025-04-23 22:47:00
396
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人