OpenASIC
    • \[\[global:header.categories\]\]
    • \[\[global:header.recent\]\]
    • \[\[global:header.tags\]\]
    • \[\[global:header.popular\]\]
    • \[\[global:header.users\]\]
    • \[\[global:header.groups\]\]
    • \[\[global:header.search\]\]
    • Register
    • Login

    H265 ENCODER RTL V2.0仿真教程

    Scheduled Pinned Locked Moved 新闻文档 | News & Documents
    62 Posts 29 Posters 244.8k Views 1 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • T Offline
      tang
      last edited by

      • Download the H265 Video Encoder RTL IP Core V2.0

      • 解压后得到四个文件夹, 其中“sw”是产生测试向量,“sim”是仿真文件,“rtl”是IP Core的所有代码,“lib”是memory行为级模型
        0_1560827791156_folder.JPG

      • 进入“sw”文件夹中,修改“f265_encode.cfg”中的参数配置
        InputFile :输入待编码的YUV文件
        WidthVideo :视频宽
        HeightVideo :视频高
        GOPLength : GOP 长度
        EncodeFrames :编码帧数
        EncodeQP :QP
        0_1560827963878_cfg.JPG

      • 执行“.\f265.exe -c .\f265_encode.cfg”,Linux下用“f265”
        运行完成以及导出文件如下图所示1_1560828001126_result.JPG 0_1560828001125_files.JPG
        其中,
        “I_SLICE”表示帧内预测编码结果;“P_SLICE”表示P帧编码结果
        “bs.hevc”是编码完成的码流文件;“fp_psnr.csv”输出编码结果PSNR,bitrate等
        “rec.yuv”重建完成的YUV文件;”s_bit_stream”是CABAC输出的熵编码完成的文件,用于硬件测试。

      • 将软件导出的文件放到 “/sim/top_testbench/tv”中,并将原始YUV也放入tv文件夹中,如下图所示,”ime_cfg.dat”是配置IME参数,不用更改0_1560828090871_tv.JPG

      • 修改“tb_enc_top.v”中的参数,确认与软件导出数据时所用参数相同
        'define TEST_I 1 // 测试I帧
        'define TEST_P 0 // 测试P帧
        'define FRAME_WIDTH 416
        'define FRAME_HEIGHT 240
        'define INITIAL_QP 20
        'define GOP_LENGTH 50
        'define FRAME_TOTAL 2
        'define FILE_CUR_YUV "./tv/BlowingBubbles.yuv" // 指定原始YUV文件路径

      • 利用Makefile运行仿真,“make vcs” or “make ncsim” or “make vsim”,可能由于软件版本不同,会出现仿真错误,建议更换仿真软件或者使用新版本的仿真软件
        仿真正确完成结果如图所示
        0_1560828333973_finish.JPG

      • 下面两图是软件和硬件设置的QP不同输出的错误结果,错误后会停止编码,供参考
        1_1560828358491_error2.JPG 0_1560828358490_error1.JPG

      G Y F L 4 Replies Last reply Reply Quote 0
      • W Offline
        wr115946873
        last edited by

        @tang "H265 ENCODER RTL V2.0"仿真过程中,遇到“I+P”仿真问题,请问如何解决?
        仿真设置:windows平台+modelsim 10.1a,tb文件中修改“#define TEST_P 1",分辨率XGA,其他仿真文件为sw/f265生成,tb设置如下图。
        0_1561298502657_1995224431.jpg

        问题:第一帧I帧编码及BS校验正确,第2帧P帧编码无输出,如下图。
        0_1561298660767_1290225134.jpg
        0_1561298683992_301901044.jpg

        另外,仅I帧(GOP设置1)多帧仿真时,BS正常。
        RateControl/ROI设置,是否有相关手册或说明文档?

        T F 2 Replies Last reply Reply Quote 0
        • T Offline
          tang @wr115946873
          last edited by

          @wr115946873 1. 并不是立刻会有输出,mb_x_first表示CTU开始编码,不是CTU编码完成,所以要等几个CTU之后才会有码流输出; 2. 对不起,我这边也没有ratecontrol相关文档

          S 1 Reply Last reply Reply Quote 0
          • W Offline
            wr115946873
            last edited by

            @tang 第一帧I帧正常,第二帧P帧输入2个CTU后停滞(extif_start_o仅产生2个脉冲,之后不再请求数据),仿真时间足够长,没有报错或其它提示。
            0_1561360962194_image.jpg

            T 1 Reply Last reply Reply Quote 0
            • T Offline
              tang @wr115946873
              last edited by

              @wr115946873 我们一直都是在Linux下仿真的(验证正确,如下图),没有在Windows下仿过,建议更换仿真平台或者debug enc_ctrl模块查看某一模块done_i是否未收回,并进一步debug相关模块
              1_1561424630890_截图.JPG
              Linux modelsim 10c
              0_1561424630889_modelsim.JPG

              1 Reply Last reply Reply Quote 0
              • G Offline
                gavinchen @tang
                last edited by

                @tang 是否可以提供以下原始YUV格式的测试数据
                BlowingBubbles: 416x240
                BasketballDrill: 832x480
                ChinaSpeed: 1024x768
                FourPeople: 1280x720
                BasketballDrive: 832x480
                TouchDownPass: 3840x2160

                1 Reply Last reply Reply Quote 0
                • J Offline
                  jie
                  last edited by jie

                  原始YUV格式的测试数据
                  http://140.118.175.164/PCChang/APSIPA2013/HEVCDataHiding/

                  用window版 f265.exe, linux 版可能 segment fault

                  G 1 Reply Last reply Reply Quote 0
                  • G Offline
                    gavinchen @jie
                    last edited by

                    @jie
                    0_1561519972869_936685f7-abfe-4fd7-bdb7-2097c18a7480-image.png

                    1. 缺少 rc_coefficient.txt 和rc_frameqp.txt文件。
                    2. 对于ime_cfg.dat文件,对于不同的分辨率/帧数的视频,ime_cfg.dat文件应该是不同的,有没有相关文件可以提供,或者release相应的软件来生成需要的ime_cfg.dat文件
                    T 龙 2 Replies Last reply Reply Quote 0
                    • T Offline
                      tang @gavinchen
                      last edited by

                      @gavinchen

                      1. 那些测试序列是HEVC官方序列,搜HEVC测试序列即可
                      2. rc相关文件不影响正常仿真
                      3. ime_cfg仅配置运动搜索范围、形状等参数,一般情况下可用同一套参数
                      1 Reply Last reply Reply Quote 0
                      • J Offline
                        jie
                        last edited by

                        测试了一下,ffmpeg libx256 软件默认(GOP 250, 50帧)压缩比大概150,而该IP相同码率 (QP = 34)压缩比大概50。后来一看只支持 I frame 和P frame, 没有B frame。

                        B 1 Reply Last reply Reply Quote 0
                        • B Offline
                          bo @jie
                          last edited by

                          @jie 我们最新的C model 压缩比 相当于 x265 medium 水平,后期准备优化到比medium更好一点。 开源2.0版压缩率没有过多优化

                          X 1 Reply Last reply Reply Quote 0
                          • Y Offline
                            yfor @tang
                            last edited by

                            @tang 在windows上,使用exe测试了416240、19201088分辨率的,都是可以运行的,但是对于480480、12001200的分辨率(这些文件用H264源码测试是没有问题的),没有报任何错误,就直接返回了,生成的文件都为空。

                            参数设置:
                            0_1562031426970_parameters.png

                            测试结果:
                            0_1562031458186_result.png

                            想问下,是那里出了问题,还是有那些参数没有设置了?

                            T B 2 Replies Last reply Reply Quote 0
                            • T Offline
                              tang @yfor
                              last edited by

                              @yfor debug之后发现是熵编码里面的dump_buf设置不够大,一般情况下是足够的,dump_buf是用来导出测试TV的。但是特殊情况下,输出码流比较大,超出dump_buf的大小,无法正常导出文件,所以会出现这个问题。PS:与编码过程无关

                              1 Reply Last reply Reply Quote 0
                              • F Offline
                                Fudh @wr115946873
                                last edited by Fudh

                                @wr115946873 您好,想问下问题解决了吗?

                                J 1 Reply Last reply Reply Quote 1
                                • F Offline
                                  Fudh @tang
                                  last edited by

                                  @tang 您好,不知道我的理解是否正确,如果f265软件生成的rec.yuv被认为是正确的,作为check文件,那么这个软件是怎么得到的,HM?

                                  T 1 Reply Last reply Reply Quote 0
                                  • T Offline
                                    tang @Fudh
                                    last edited by

                                    @Fudh 您好,这个软件是我们实验室自己开发的,谢谢

                                    F 1 Reply Last reply Reply Quote -1
                                    • F Offline
                                      Fudh @tang
                                      last edited by

                                      @tang 那么请问这个软件是开源的吗, 是否可以提供,谢谢

                                      T 1 Reply Last reply Reply Quote 0
                                      • T Offline
                                        tang @Fudh
                                        last edited by

                                        @Fudh 暂不开源,抱歉我不能提供。如果只是确认rec.yuv是否正确,直接和.hevc解码得到的YUV对比即可。谢谢

                                        F 2 Replies Last reply Reply Quote 0
                                        • F Offline
                                          Fudh @tang
                                          last edited by

                                          @tang 好的, 谢谢

                                          1 Reply Last reply Reply Quote 0
                                          • J Offline
                                            jadick
                                            last edited by

                                            Hello.
                                            I always get a "segmentation fault" warning when trying to run the command "./f265 -c f265_encode.cfg" and no data is generated from my .yuv.

                                            Anyone knows what could be the reason to that issue?
                                            I am using sudo and all the files have the necessary permissions.

                                            Thanks.

                                            H 1 Reply Last reply Reply Quote 0
                                            • 1
                                            • 2
                                            • 3
                                            • 4
                                            • 1 / 4
                                            • First post
                                              Last post
                                            Copyright © 2016 OpenASIC.XinKai
                                            VIP Lab @Fudan University | XK Silicon