开源H.265/HEVC Encoder IP Core V2.0发布



  • H.265 Video Encoder IP Core V2.0

    开源H.265 硬件视频编码器

    H.265 Video Encoder IP Core 是开源的H.265硬件视频编码器,实现了H.265(或叫HEVC)的大部分功能。它由复旦大学专用集成电路与系统国家重点实验室(State Key Lab of ASIC & System,Fudan University)视频图像处理实验室(VIP Lab)范益波教授研究团队开发完成,并开放源代码。任何组织个人可以无偿使用上述代码用于研究和生产目的,VIP Lab将会持续更新并维护H.265硬件视频编码器的开发。

    基本Feature

    • HEVC/H.265 Main Profile
    • YUV 4:2:0
    • Bitdepth:8
    • 4K@30fps, 400MHz
    • GOP: I/P
    • CTU: 64x64
    • CU: 8x8~64x64
    • PU: 4x4~64x64
    • TU: 4x4/8x8/16x16/32x32
    • 1/4 Sub-pixel
    • Search range:64
    • All 35 Intra prediction mode
    • CABAC
    • Deblocking Filter
    • SAO(Sample Adaptive Offset)
    • Rate control: CBR/VBR(Software-based)
    • Rate control: CTU level(Hardware-based)
    • SKIP/MERGE
    • Intra CTU in Inter frame

    本次更新内容

    • H265ENC V2.0 功能更新内容
    1. h265enc v2.0
      a. 更新I/P帧预测算法、硬件流水线,优化编码效率
      b. 修复原有代码中的bug
      c. RTL V2.0经过nLint语法检查,fix error及warning等
      d. 经过DC综合,满足400MHz,fix critical path,warning
      e. IP Core V2.0经过FPGA验证编码正确
    2. PreI – Intra mode decision
      a. 新增CTU-level Rate control,根据CABAC已编码的码流大小,动态调整当前CTU的QP大小
    3. PosI – Intra partition decision
      a. 基于原始像素做预测
      b. 基于SATD的distortion,以及简化的rate计算,提升编码效率
    4. IME – Integer motion estimation
      a. IME 参数可配置,通过ime_cfg.dat,配置搜索范围以及搜索中心搜索形状等
      b. 搜索范围扩大至±64
      c. 通过H-V reference SRAMs,支持45°等倾斜的搜索角度
      d. 通过Bits Truncation,将像素值从8bit截到4bit,PSNR损失不到1dB,面积和功耗能大幅度减小
    5. FME – Fractional motion estimation
      a. 新增SKIP/MERGE判决,基于SATD的cost计算判决当前CU块是否SKIP
      b. fix插值公式bug
    6. REC – Reconstruction loop
      a. 支持Intra CTU in Inter Frame,可通过PosI及FME的cost判断当前CTU是Intra或者Inter编码
      b. 支持SKIP,即预测值直接作为重建值
      c. 整理DCT代码,并修复其中bug
    7. DBSAO – Deblocking filter & sample adaptive offset
      a. 更新DB中滤波顺序,去除原有DB中的转置memory
      b. 新增SAO EO模式计算
    8. CABAC – Entropy coding
      a. 更新代码,修复其中bugs
      b. 支持SKIP、MERGE、Intra CTU in Inter Frame等
      c. 去除ROM
    • H265ENC V2.0 完成测试项目
      相较于第一版的RTL,我们在第二版中做了更为充分的测试,确认在各种情况下都能正确完成编码。测试序列中,我们采用了六个HEVC官方测试序列,从416x240到3840x2160等不同分辨率的视频序列。
      BlowingBubbles: 416x240
      BasketballDrill: 832x480
      ChinaSpeed: 1024x768
      FourPeople: 1280x720
      BasketballDrive: 832x480
      TouchDownPass: 3840x2160
      也在不同QP下完成了上述所有测试序列的测试工作:10, 17, 22, 27, 32, 37, 42, 47, 51。测试过程中发现的各个模块的bug也已修复,并通过了上述所有测试序列以及QP的测试。测试结果如下图所示:

    Intra test
    0_1560991653068_test1.jpg
    Inter test
    0_1560991674932_test2.jpg

    关于VIP Lab

    复旦大学VIP实验室专注于从事下一代视频、图像、AI硬件处理器研究,包括超高清视频、图像编解码器(CODEC IP),图像处理器(ISP IP),神经网络处理器(NN IP)等。
    实验室网站 http://viplab.fudan.edu.cn

    代码下载

    http://openasic.org/topic/71/h265-video-encoder-rtl-ip-core-version-2-0

    关注我们

    微信公众号: OpenASIC
    img



  • This post is deleted!


  • 您好,@bo ,我正在進行關於HEVC的研究,我想問一下您是否使用了什麼職能作為頂層實體?我嘗試使用enc_top.v作為頂層實體,但是我不斷收到錯誤,指出Stratix IV的ALUT不足以進行設計。希望您回复,謝謝!



  • @Giljohn 这个代码不包括编码器外围电路(总线接口,地址管理,Buffer缓存等),enc_top仅仅是编码器核心IP的顶层。如果需要在FPGA上运行,需要自行封装AXI总线接口。



  • 未来我们会推出开源版的FPGA实例,可以包括AXI总线接口、软件驱动程序,简单的Demo等



  • I'm getting some errors while doing the simulaion.
    The parameter 'bs_byte_cnt' isn't matching between f265 and h265
    How can it be corrected
    I've attached the screenshot..Please tell

    模拟时出现一些错误。
    f265和h265之间的参数'bs_byte_cnt'不匹配
    如何纠正
    我已附上屏幕截图。.请告诉
    0_1606129780431_Screenshot from 2020-11-23 16-31-27.png