当前位置:网站首页>开源H.264 Video Encoder IP Core V2.0 介绍
开源H.264 Video Encoder IP Core V2.0 介绍
2022-08-11 11:42:00 【数字积木】
本文介绍 由复旦大学专用集成电路与系统国家重点实验室(State Key Lab of ASIC & System,Fudan University)视频图像处理实验室(VIP Lab)范益波教授研究团队开发完成H.264 视频编码IP RTL 开源工程代码。本文内容来自于该项目的官方网站:openasic.org。了解更多信息,请访问官网。
项目官方网站:
http://www.openasic.org/
该项目介绍网页链接:
http://www.openasic.org/topic/80/%E5%BC%80%E6%BA%90h-264-video-encoder-ip-core-v2-0-%E5%8F%91%E5%B8%83
开源H.264 硬件视频编码器IP核
H.264 Video Encoder IP Core 是开源的H.264硬件视频编码器,实现了H.264(AVC)的大部分功能。它由复旦大学专用集成电路与系统国家重点实验室(State Key Lab of ASIC & System,Fudan University)视频图像处理实验室(VIP Lab)范益波教授研究团队开发完成,并开放源代码。任何组织个人可以无偿使用上述代码用于研究和生产目的,VIP Lab将会持续更新并维护编码器的软硬件开发。
基本FEATURE
AVC/H.264 Baseline Profile
YUV 4:2:0
Bitdepth 8
GOP:I/P
MB: 16x16
1/4 Sub-pixel interpolation
Search range: 16
All Inter Partition mode
All 9 Intra prediction mode
CAVLC
Deblocking Filter
本次更新内容
H265ENC V2.0 功能更新内容
h264enc v2.0
a.修复了1.0版本中存在的bugINTRA – Intra mode decision & partition decision
a.调整C model的预测优先级从而匹配硬件代码IME – Integer motion estimation
a.修改生成mv_cost的方式,提高预测准确性FME– Fractional motion estimation
a.修复在fmv计算和亮度预测块生成上的bug
b.重新实现了1/2插值的逻辑TQ - Transformation & Quantization
a.增加QPc,使之符合标准
b.增加量化和idct模块的位宽,防止发生溢出CAVLC - Entropy coding
a.修改状态机从而正确编码色度分量
b.修复从TQ模块读取残差时的bugFETCH
a.修复取预测像素时的一些bug
b.修改模块内对RAM读逻辑
完成测试项目
我们测试了416x240到1920x1080的多个序列,确认在不同分辨率下以及在不同QP下编码器能够正常工作。测试中发现1.0版本中各个模块的已知bug均已修复。
测试结果如下图所示:
Intra test:CAVLC,10 framesInter test:CAVLC,DB on,10 frames
关于H.265硬件IP
复旦大学VIP实验室专注于从事下一代视频、图像、AI硬件处理器研究,包括超高清视频、图像编解码器(CODEC IP),图像处理器(ISP IP),神经网络处理器(NN IP)等。
实验室网站 http://viplab.fudan.edu.cn
代码下载
http://openasic.org/topic/79/h264-video-encoder-rtl-ip-core-version-2-0
关于H.265硬件IP
很多人搞不清楚本项目和x265等软件开源H.265编码器区别
简单的讲,x265是运行在CPU、DSP平台上,它是个软件,而本次开源项目是用于制作芯片、可运行于FPGA平台上的硬件。本项目采用Verilog HDL语言编写,是可综合的RTL代码,代码表述的是电路,是硬件。
开源的软件H.265编码器很多,最著名的是x265,而开源的硬件H.265编码器没有。据我孤陋寡闻,这个项目是第一个。大概是硬件开发人员太少了的缘故吧,一般人不会接触芯片开发。
关于本次开源
开源就是好玩,让更多的人有个更好玩的玩具而已,并且是免费的。
随着FPGA的普及,越来越多高性能应用需要用FPGA这种硬件平台,而不是CPU/DSP软件平台,对于视频编码这种需要极大计算能力的应用,软件是无法实时的,大家平时使用的手机芯片内部都有专门的硬件视频编解码器。没有硬件编码支持,估计现在手机还停留在只能拍照不能拍视频的阶段吧。
另外,看过代码的同学应该好奇为什么代码内部最后注释更新的都是2015年?
其实,这个项目2015年就已经完成,相关FPGA Demo也于1年多前就已经完成。
为什么迟迟不发,到现在才发?
一方面本人一直觉得代码不够好,架构还不完善,远达不到完美,过不了自己这关,觉得拿不出手,另一方面也欠缺跟其他的商业版本对比(我们也没用过商业版本,买不起),指标太差,岂不自取其辱,最后还有点拖延症因素,拖一天是一天。
那为什么现在发出来了?
直白点是拖不下去了,事情总得有个交代。算是对我本人从学术角度从事视频编码芯片研究这么多年的一个交代吧,搞了这么些年,总得有点东西拿出来反馈社会吧,碰巧今年是我的自然基金结题年,拿了纳税人的钱研究了这么些年,不出点东西怪不好意思,哪怕东西不够好 。况且确实目前的FPGA还不够好玩,大大小小的IP很多都是收费的,不像软件领域开源项目多如牛毛,硬件开源的项目确实很少,并且大多欠缺维护。
代码
开源代码只包含了核心的H.265编码器代码,懂得同学应该很容易集成总线模块和SoC系统。本实验室开发的Demo系统受限于采用了一些第三方IP,不能开源SoC总线集成的代码。相信能玩转FPGA、芯片设计的同学,应该不是问题啦。
为什么不托管到Github
首先,Github是一个软件开发者常用的分享代码网站,本项目是一个硬件IP项目,放到Github上意义不大(放个链接告诉大家有这么个东西就行)。其次,因为本项目开发团队都在一个房间里,没有外援参与,同步代码吼一声就行,如果后期有外援加入,可以考虑用一个更好的方式分享代码。
后记
这个项目本实验室一直有同学在做,东西虽然拿不出手,但本人不敢懈怠,还在努力改进中,将作为一个长期维护项目,逐步更新功能、架构。包括BitDepth扩展、集成MCU进行编码控制、更好的流水线架构、更准确的预测算法、B帧等。
‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧ END ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧
期待与您的添加!
长按识别图中二维码关注
欢迎关注微信公众号【数字积木】,更精彩的内容等着你!
边栏推荐
- TX12 + ExpressLRS RC configuration and control link problem summary 915 MHZ
- leetcode:373. 查找和最小的 K 对数字
- exist和in的区别
- 如何设计一组会出现死锁(Deadlock)的ABAP程序
- error: ‘const char* libc_name_p(const char*, unsigned int)’ redeclared inline with ‘gnu_inline’ attr
- 网络安全——nmap
- SQL Runtime SLX主要包括哪两方面?
- WPF 实现内阴影
- 或命名“狙击手” 长安全新皮卡申报图
- 分布式时间槽elastic timeslot架构设计
猜你喜欢
随机推荐
openEuler小程序会议指南
elemntUI限制时间选择器不能跨月并且不大于未来时间
SH7001单电池恒压线性充电IC
十九、一起学习Lua 垃圾回收
【学生毕业设计】基于web学生信息管理系统网站的设计与实现(13个页面)
LeetCode69:牛顿迭代法和二分法求解x的平方根
【黑马早报】抖音否认与头部主播签对赌协议;阿迪达斯CEO承认在中国犯了错;网易云社交App心遇被指涉黄;联通董事长称5G资费比点外卖还便宜
OpenHarmony如何选择图片在Image组件上显示(eTS)
39页智慧粮库解决方案
98转出0转入,985高校土木工程沦为“天坑”引热议
闪灯IC,可按要求开发各种规格闪灯IC,单片机方案开发
SQL Runtime SLX主要包括哪两方面?
六月成功案例
Uber的20万容器实践:如何避免容器化环境中的 CPU 节流
重要消息丨.NET Core 3.1 将于今年12月13日结束支持
ESI VA One 2021软件安装包和安装教程
简化供采交易路径,B2B电子交易系统实现钢铁行业全链路数字化
B端产品需求分析与优先级判断
参与openEuler社区不到1年,我成为了Maintainer……
Tool_RE_IDA基础字符串修改