- 博客(147)
- 资源 (2)
- 收藏
- 关注
翻译 av1编码--非方向帧内预测
摘要:AV1视频编码标准定义了5种非方向帧内预测模式用于处理图像平滑区域:1) DC_PRED模式通过计算相邻参考像素平均值生成预测值;2) SMOOTH_V/H_PRED模式分别采用垂直/水平方向的二次插值;3) SMOOTH_PRED模式综合两种方向插值结果;4) PAETH_PRED模式基于三个参考像素选择最优预测方向。这些模式通过不同加权算法和参考像素组合,有效提升了平滑区域的编码效率。预测模式通过intra_frame_y_mode和uv_mode语法元素进行标识。
2026-05-24 08:42:00
38
翻译 av1编码--方向帧内预测
本文详细介绍了AV1视频编码标准中的方向帧内预测技术。主要内容包括:1)预测方向定义,AV1在VP9的8种基准预测方向基础上,通过角度偏移量扩展至56种预测方向;2)参考像素处理流程,包含滤波过程(根据块尺寸和预测角度选择不同滤波器)和上采样操作(使用4抽头插值滤波器提升小尺寸块的预测精度);3)预测像素生成算法,根据预测角度分为四种情况(小于90°、90°-180°、大于180°以及垂直/水平模式),通过参考像素投影和线性插值计算预测值。这些技术通过精细化的方向预测和参考像素处理,显著提升了帧内预测的准确
2026-05-23 09:48:39
29
翻译 av1编码--参考像素的获取和填充
本文介绍了AV1视频编码标准中帧内预测参考像素的获取与填充方法。主要内容包括:1)参考像素的获取原理,通过重构相邻块的像素值作为预测参考;2)参考像素可用性判断,分析不同位置图像块(如边界块、未编码块)的参考像素可用状态;3)参考像素填充策略,详细说明了当参考像素不可用时,如何根据可用像素进行替代填充的具体规则,包括上方参考像素、左侧参考像素和左上角参考像素三种情况的处理流程。这些方法确保了在各种情况下都能使用完整的帧内预测模式集合。
2026-05-23 09:21:18
26
翻译 av1编码--帧内预测概述
AV1视频编码中的帧内预测技术通过消除空间冗余实现高效压缩,主要包括三类预测模式:方向性预测(56种方向模式)、非方向性预测(5种平滑模式)和递归预测(5种相关性模式)。该技术支持4×4到64×64像素的亮度块预测,以及4×4到32×32像素的色度块预测,并允许正方形和矩形(1:2/2:1、1:4/4:1)预测块划分。通过使用相邻重构像素作为参考,结合参考像素滤波和变换块细分机制,AV1显著提升了预测精度。值得注意的是,128×128编码块会被强制拆分为64×64块进行处理,所有子块共享相同预测模式。
2026-05-23 08:45:58
53
翻译 av1编码--编码块的预测约束条件
摘要:AV1视频编码标准针对硬件解码器优化设计了预测约束条件。核心计算单元采用64×64超级块设计,超过该尺寸需分割为64×64变换块进行帧内预测,以提高预测准确性。对于4:2:0格式视频,当编码块尺寸为4×4时,采用色度块合并策略:将4个2×2色度块合并为4×4块并与特定亮度块绑定编码,根据绑定亮度块的预测模式决定色度块的预测方式(帧内/帧间)。这种设计有效平衡了编码效率与硬件实现复杂度。
2026-05-22 10:33:55
24
翻译 av1编码--位于图像边界的超级块划分
本文讨论了视频编码中图像边界超级块的划分处理机制。当超级块超出图像边界时,AV1标准采用强制划分策略,通过PARTITION_SPLIT、PARTITION_HORZ或PARTITION_VERT模式将超级块划分为完全包含在图像内部的编码块。文章详细分析了不同边界情况(仅底部超出、仅右侧超出、同时超出)的处理逻辑,并阐述了split_or_horz和split_or_vert语法元素的使用条件。通过832×480分辨率下的具体示例,说明了如何根据图像内部区域尺寸选择合适的划分模式,确保所有编码块最终都位于有
2026-05-22 10:17:56
34
翻译 av1编码--编码顺序与输出顺序
描述了高层语法包括的内容,以及av1编码顺序与现实顺序,这对于编解码工程师来说要有最基本的认知,便于后续章节参考帧的管理,利于编解码问题排查。
2026-05-21 11:20:49
33
转载 probe函数调用
最近看到linux的设备驱动模型,关于Kobject、Kset等还不是很清淅。看到了struct device_driver这个结构时,想到一个问题:它的初始化函数到底在哪里调用呢?以前搞PCI驱动时用pci驱动注册函数就可以调用它,搞s3c2410驱动时只要在mach-smdk2410.c中的struct platform_device *smdk2410_devices {}中加入设备也会调用
2016-06-08 16:28:48
728
原创 tiny4412 lcd驱动问题记录
fbmem.c文件提供了framebuffer驱动程序的通用文件操作接口,自定义的framebuffer驱动程序可以使用fbmem.c中提供默认的接口。用EXPORT_SYMBOL导出到其他文件中应用s3c-fb.c是针对的三星开发板的lcd驱动文件接口(s3c_fb_probe等)。一下都是在友善tiny4412的linux3.5内核中移植lcd平台资源1.需要添加lcd的平台设
2016-06-08 16:27:54
1347
转载 ubuntu系統下配置nfs服務
#sudo apt-get install nfs-kernel-serverubuntu12.04中的已经是最新版本了,无需安装打开/etc/exports文件,在末尾加入:/home/kevin *(rw,sync,no_root_squash)注:nfs允许挂载的目录及权限,在文件/etc/exports中进行定义,各字段含义如下:/home/kevin:要共享的目录
2016-06-03 10:59:16
500
原创 spi为例的时序讲解
时序理解:SSn:这种电平表示一般为片选信号;从它的电平变低之后数据传输的时序看出。MISO:意思为主入从出,每一个类似的矩形方框,其实代表的是数据的电平高低(因为不知道电平的高低,所以把高电平、低电平都画出来了,中间的交表代表数据电平发生变化.方框中间的分界线前半部分方框代表数据准备阶段,等到电平变化,采集数据,为了避免干扰,所以电平变化之后,还需要保持一段时间,之所以有前后的电平保持阶段,
2016-04-28 18:23:53
1765
转载 spi时序的极性和相位
【背景】最近在看关于Silicon Labs的C8051F347的某个驱动中,关于SPI部分初始化的代码,看到其对于SPI的设置为CPOL=1,CPHA=0,对于CPOL及CPHA的含义不了解,想要搞懂,这两个参数到底是什么意思,以及为何要这么设置。所以才去找了SPI的极性和相位的相关资料,整理如下。【SPI基础知识简介】设备与设备之间通过某种硬件接口通讯,目前存在很多
2016-04-28 17:13:27
1806
原创 网络通讯经常出现的问题
1:粘包:由于网络情况,出现前后两个包粘到一块。解决办法:制定好协议(包头,包尾,数据长度,校验);2:丢包:有时会出现丢包问题。解决办法:同步方式,发送完之后,给select设定监听超时时间,如果超时未收到回复,重新发送,尝试两三次,如果一直收不到,放弃发送。 异步方式,开启三个进程:一个线程专门发送,
2016-04-28 10:15:48
1111
原创 多线程的理解
多线程可以并行执行,并且资源是共享的,所有线程的资源都在同一块内存区,对应的全局变量所有线程都是可见的。每个线程都操作同一块内存,都可以读写申请的全局变量多进程的话,不同的进程资源在不同的内存区,资源是独立的。每个进行都操作自己的内存块 可以说定义变量和之前没什么区别,不过可能会多个线程异步对他进行操作,那也就存在一些同步机制而已。 在没有多线程之前,如果想做并行计
2016-04-22 17:39:33
287
转载 s5pv210 jpeg硬件编码
做qt摄像头程序的时候发现yuv转rgb然后显示 效果很不好 所以考虑转jpg后显示 但是使用libjpeg发现格式怎么设置都不对 之前在Android上使用的函数拿过来都不能直接使用 所以还是研究硬编吧 这里使用的是广州斯道ICOOL210开发板 内核版本linux2.6.35前面的一些流程我就不上代码了标准的v4l2流程 格式设置为V4L2_PIX_FMT_YUYV即yuv422格
2016-04-21 17:17:52
716
原创 ubuntu下搭建qtcreator嵌入式qt編譯環境
一:sudo apt-get install libqt4-dev libqt4-dbg libqt4-gui libqt4-sql qt4-dev-tools qt4-doc qt4-designer qt4-qtconfig如果設置的libqt4-sql改爲libqt4-sql-mysql將會安裝mysql數據庫,否則安裝sqllite數據庫。如果在安裝的過程中出現失敗,看其提示,
2016-03-17 23:25:36
882
原创 qt多线程编程出现QPixmap: It is not safe to use pixmaps outside the GUI thread问题
不要在主线程以外使用QPixmap这种情况下, 可以在非GUI线程中发送信号, 由它来通知GUI发生变化即可, 让GUI线程调用QPixmap的方法~`
2016-03-16 09:58:52
2756
原创 ubuntu开启nfs服务,并搭建gdbserver
安装nfs软件#sudo apt-get install nfs-kernel-server-------------------------------------------打开/etc/exports文件,在末尾加入:/home/xgc *(rw,sync,no_root_squash)注:nfs允许挂载的目录及权限,在文件/etc/exports中进行定
2016-02-23 20:06:37
494
原创 需要学习的内容
1:live555的嵌入式linux移植,以及rtsp服务器搭建2:ffmpeg库的裁剪,以及音视频编解码,及转换,还有rtsp服务器搭建,及arm——linux系统下的移植。
2016-02-19 10:57:08
324
原创 usb mode waiting
nand启动运行superboot时,superboot会判断key1是否被按下,如果key1被按下则进入usb-mode
2016-01-19 16:43:26
709
转载 Qt USB通信--hidapi的使用
前面提到过Qt USB通信四种方案,这里详细介绍我使用的hidapi第三方库。 [html] view plaincopy从官网上下载到最新的压缩包hidapi-0.7.0.zip,解压后查看README.txt,里面介绍了三种Windows、Linux、MacOS三种平台下的编译方式: [html] view plaincopy--
2016-01-13 08:34:02
3194
原创 友善之臂开发板启动脚本配置以及fa-network-service后台服务对网络的配置
涉及的文件/etc/init.d/rcS :开机后会启动的脚本文件,里面会设置全局变量,挂载文件,创建目录和启动一些脚本和进程等/etc/init.d/ifconfig-eth0 :通过文件名就可以知道这个文件是设置网口eth0相关的mac地址,ip (eth0-setting中设置的)等/etc/eth0-setting ;这文件真正是设备网口相关信息的配置源文件,它会
2016-01-07 11:32:51
1868
原创 qt下信号发送机制
qt下信号发送机制:同一个信号,只有在上一次信号发送所执行的操作都执行完之后,第二次触发的信号才会被再次发送。例如我硬件连续发送两个数据,我触发两次信号,但是第一次信号发送出去之后,第二次信号是不会立马发送出去的,只有等第一次信号发送所要操作的任务完成之后。第二次的信号才会发送出去。
2015-12-21 10:34:44
2291
原创 arm+linux系统开机自动启动带串口qt应用程序遇到open_port error: Inappropriate ioctl for device
本人开发带串口的qt程序,但是到最后,挂到rsc启动脚本,(./应用程序 &)后台启动运行的时候运行到串口配置出现open_port error: Inappropriate ioctl for device; 但是我在命令行运行都是正常的,之后我改成前台启动(./应用程序),也可以正常运行。看到的朋友指点一下,为什么出现这种情况,正常情况应该后台自启动最好了???
2015-12-15 17:53:44
4349
原创 qt程序中hid问题记录
1:嵌入式下打开一个设备最好想好是那种方式打开(只读方式,读写方式,阻塞\非阻塞方式)。有一个项目,用到一个串口,两个hid方式的usb口,大体代码如下 FD_ZERO(&rd); FD_SET(cd_fd, &rd); printf("set cd fd\n"); FD_SET(rf_fd, &rd); printf("set rf
2015-12-12 17:39:52
1379
转载 自己修改linux系统启动画面
制作开机Logo方法一:Drivers/video/logo/logo_linux_clut224.ppm是默认的启动Logo图片,把自己的Logo图片(png格式)转换成ppm格式,替换这个文件,同时删除logo_linux_clut224.c logo_linux_clut224.o文件,重新编译具体方法:#pngtopnm logo_linux_clut224.png > l
2015-12-01 11:03:12
1912
原创 嵌入式Linux下使用crond服务(定期删除过期文件)
crond是一个服务,一个守护进程。crond 是linux用来定期执行程序的命令,crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。按照网上查找的资料执行时经常会碰到这种错误:crontab: chdir(/var/spool/cr
2015-11-28 16:24:20
613
转载 mfc下关于f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\occcont.cpp(926) 的奇怪问题
最近在配布一个程序到客户机上的时候,发现一个奇怪的问题。打开程序,无报错,但屏幕上没有任何显示,在任务服务器里,可以看到程序已经运行。在开发机上,却一点问题也没有。很郁闷的错误。开发环境是WindowsXP+VS2005,是使用MFC的基于Dialog的程序。客户机为HP的服务器,运行环境为Windows2003。原版系统,自动更新系统后,只安装了VC2005的运行环境Redistributa
2015-11-11 09:56:44
4223
2
转载 linux设备驱动之输入(input)子系统——核心层实现
/*************************************************************************************************************************************//* input.h */#ifndef _INPUT_H#define _INPUT_H/* *
2015-11-06 15:41:32
5133
转载 linux设备驱动之输入(input)子系统——数据结构与接口介绍
/****************************************************输入子系统****************************************************************//* * 输入设备(如按键、键盘、触摸屏、鼠标等)是典型的字符设备,其一般的工作机理是底层在按键、触摸屏等动作发生时产生一个中断(或驱动通过t
2015-11-06 15:36:48
322
转载 输入子系统--event层分析
#####################################################################################################早前曾研究了一下输入子系统的原理,给人的感觉是输入子系统很复杂.但其实内核开发者在这方面已经做得很完善了,输入子系统虽然错综复杂,但是只要我们领会了输入子系统的一些设计思想后,我们要使用它并
2015-11-06 15:25:20
236
转载 Linux输入子系统:输入设备编程指南 -- input-programming.txt
基本事件类型(types)~~~~~~~~~~~~~~~~~~~~~最简单的事件类型是EV_KEY,它用于键盘和按钮,它通过以下函数上报给input子系统:[cpp] view plaincopyinput_report_key(struct input_dev *dev, int code, int valu
2015-11-06 15:20:19
382
转载 Linux输入子系统:事件的编码 -- event-codes.txt
输入系统协议用类型types和编码codecs来表示输入设备的值并用此来通知用户空间的应用程序。这篇文档对这些类型和编码进行了说明并且指出什么时候和如何使用这些类型和编码。 一个单一的硬件事件可以产生多个输入事件,每个输入事件包含一个单一数据项的新的数据值。EV_SYN是一个特别的事件类型,它用来把同一时刻产生的多个输入数据分割为多个数据包。在下面的描述中,术语事件(event)是指一个涵
2015-11-06 14:41:36
350
ubuntu12.04及以上配置vim成c/c++,qtIDE开发环境
2015-01-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅