专栏首页数字积木开源H.264 Video Encoder IP Core V2.0 介绍

开源H.264 Video Encoder IP Core V2.0 介绍

本文介绍 由复旦大学专用集成电路与系统国家重点实验室(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
  • FHD@60fps
  • 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 功能更新内容
  1. h264enc v2.0 a.修复了1.0版本中存在的bug
  2. INTRA – Intra mode decision & partition decision a.调整C model的预测优先级从而匹配硬件代码
  3. IME – Integer motion estimation a.修改生成mv_cost的方式,提高预测准确性
  4. FME– Fractional motion estimation a.修复在fmv计算和亮度预测块生成上的bug b.重新实现了1/2插值的逻辑
  5. TQ - Transformation & Quantization a.增加QPc,使之符合标准 b.增加量化和idct模块的位宽,防止发生溢出
  6. CAVLC - Entropy coding a.修改状态机从而正确编码色度分量 b.修复从TQ模块读取残差时的bug
  7. FETCH a.修复取预测像素时的一些bug b.修改模块内对RAM读逻辑
  • 完成测试项目 我们测试了416x240到1920x1080的多个序列,确认在不同分辨率下以及在不同QP下编码器能够正常工作。测试中发现1.0版本中各个模块的已知bug均已修复。 测试结果如下图所示: Intra test:CAVLC,10 frames
  • Inter 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帧等。

本文分享自微信公众号 - 数字积木(ggreat-top),作者:openasic

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-04-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • FFmpeg介绍及使用

    FFmpeg是音视频领域很有名的一个库, 这里从两方面介绍, 一方面根据FFMPEG的命令行工具介绍, 介绍这些命令行工具的使用方法, 满足一般用户要求. 还有...

    望天
  • 启明云端分享:IDO-SBC5706 智能主板拥有强大的多线程运算能力

    IDO-SBC5706 智能主板,配备全志 T507 四核 Cortex-A53 车规级处理器, 主频高达 1.5GHz,同时支持 OpenGL ES 3.2/...

    启明云端
  • 编译支持MP3与H264编码的ffmpeg

    ffmpeg原有的系统中支持mp3和h264的解码,但是编码并不支持,所以,需要是应用第三方插件进行支持;

    用户3765803
  • VP8视频格式初探

    昨天,Google发布了一个开源项目WebM。 这个项目的目的,是在文件格式方面,为制作和发布互联网视频提供了一个开源的解决方案。 ? WebM采用MKV作为封...

    ruanyf
  • 使用ffmpeg的overlay filter为视频增加跑马灯

    在看视频时,图像上面有流动字幕,或者流动图片,这个效果一般名为跑马灯效果,可以通过overlay的filter实现该效果 overlay是ffmpeg的...

    用户3765803
  • 使用VideoToolbox硬解码H.264

    前言 使用VideoToolbox硬编码H.264 在上一篇的硬编码简单介绍了H.264和VideoToolbox以及如何使用VideoToolbox硬编码从...

    落影
  • 4款知名播放器比较:ijkPlayer、VLC、SmartPlayer、ExoPlayer

    ijkPlayer是BiliBili公司维护的一个开源工程,基于ffmpeg开发的一个播放器软件,支持Android和iOS平台,整个ijkplayer就是以f...

    daniulive
  • 使用VideoToolbox硬编码H.264

    前言 H.264是目前很流行的编码层视频压缩格式,目前项目中的协议层有rtmp与http,但是视频的编码层都是使用的H.264。 在熟悉H.264的过程中,为...

    落影
  • H.264学习笔记

    H.264组成 1、网络提取层 (Network Abstraction Layer,NAL) 2、视讯编码层 (Video Coding Layer,VCL)...

    落影
  • 三款RTMP推流模块比较:OBS VS SmartPublisher VS Flash Media Live Encoder

    功能强大,几乎所有你想要的场景它都有,用起来很顺手。可以将桌面、摄像头、程序窗口通过rtmp推送到流媒体服务器上。

    daniulive
  • 视频的容器与格式

       一般而言,视频文件的扩展名就是视频的容器名。比如“avi文件”或者“mp4文件,avi和mp4只是容器格式。好比zip文件,里面可以包含各种文件,视频容器...

    雪影
  • FPGA视频加速的未来

    大家好,我是赛灵思数据中心产品经理梁晓明,本次分享的主要内容是Xilinx的视频解决方案,Xilinx作为一家平台性的公司,会把硬件、硅片作为基础平台交付给业界...

    LiveVideoStack
  • CVPR 2020|超越H.265,中科大使用多帧数据改进视频压缩新方法

    随着深度学习的兴起,可学习的视频压缩( learned video compression)方法也越来越引起研究学者的重视。

    CV君
  • 流媒体解码及H.264编码推流简介

    这里我们使用了FFmpge的sdk和Opencv的sdk。为了方便测试,我们直接使用在线的rtsp网络流。rtmp://live.hkstv.hk.lxdns....

    用户2929716
  • 音视频平凡之路之FFmpeg全面介绍

    FFmpeg中的FF全称是"Fast Forward",后面的mpeg全称是"Moving Picture Experts Group"(动态图像专家组),FF...

    马上就说
  • 干货 | 手把手教你iOS自定义视频压缩

    孙龙波,携程内容信息研发部 Native 开发 leader。目前主要负责携程攻略,行程,视频直播等项目的前端开发和团队管理。

    携程技术
  • Xilinx FPGA,“加速”视频质量提升

    大家好,我是来自Xilinx的张吉帅,随着视频内容的火爆,其在网络上的传输量越来越大,对视频编解码算力也有了更高的需求;此外,视频压缩的标准也在不断提升,对于H...

    LiveVideoStack
  • FFmpeg封装格式处理

    这几篇文章内容联系紧密,但放在一篇文章里内容太长,遂作拆分。章节号不作调整。基于FFmpeg 4.1版本。

    叶余
  • 使用AudioToolbox编码AAC

    前言 使用VideoToolbox硬编码H.264 使用VideoToolbox硬解码H.264 这次在编码H.264视频流的同时,录制并编码AAC音频流。...

    落影

扫码关注云+社区

领取腾讯云代金券