zoukankan      html  css  js  c++  java
  • 【AVS1.0】AVS1参考代码RM在Windows下编译以及AVS1编解码器的使用方法

    ###Date: 2018.5.20

    ================================================================

     分类:AVS视频编解码

    1、AVS1标准介绍和参考代码RM下载

         AVS1标准是中国自主研发的音视频编解码标准,主要用于国内卫星电视的压缩传输,其压缩率相较于H.264要低一些,在使用范围和推广上也不如H.264。

        AVS1标准参考代码RM下载地址:https://download.csdn.net/download/soaringlee_fighting/10425909


    2、AVS1参考代码RM在Windows下编译

    编译方法很简单,打开RM.dsw,分别运行lencod.dsw和ldecod.dsw即可。

    编码后的avs码流为test.avs,当然可以在encoder.cfg配置文件中进行设置。编码重建yuv为test_rec.yuv。

    解码yuv为test_dec.yuv。

    编码过程如下图所示:

    (场编码)


    (帧编码)

    解码过程如下图所示:


    解码yuv:


    3、AVS1编解码器的使用方法(命令行参数)

    AVS1编码器生成在bin下面为lencod.exe
    lencod.exe [-f file] [-p parameter=value]
         -f file    
                 If an -f <config> parameter is present in the command line then 
                 the parameters will be taken from the config file
                 See configfile.h for a list of supported ParameterNames.
    
        -p parameter=value 
                 If -p <ParameterName = ParameterValue> parameters are present then 
                 the ParameterValue will overide the config file's settings.
                There must  be whitespace between -f and -p commands and their respecitive 
                parameters.


    AVS1解码器生成在bin下面为ldecod.exe

    ldecod.exe decoder.cfg

     The decoder configuration file name must be provided as the first parameter. All
       decoding parameters are read from this file.

    编码器配置文件encoder.cfg:

      # New Input File Format is as follows
    # <ParameterName> = <ParameterValue> # Comment
    # See configfile.h for a list of supported ParameterNames
    
    ##########################################################################################
    # Files
    ##########################################################################################
    InputFile              = "E:origCfPBasketballPass_416x240_50.yuv"	# Input sequence, YUV 4:2:0
    InputHeaderLength      = 0    # If the inputfile has a header, state it's length in byte here 
    FramesToBeEncoded      = 10    # Number of frames to be coded
    SourceWidth            = 416		 # Image width  in Pels, must be multiple of 16
    SourceHeight           = 240		 # Image height in Pels, must be multiple of 16
    TraceFile              = "trace_enc.txt"
    ReconFile              = "test_rec.yuv"
    OutputFile             = "test.avs"
    
    ##########################################################################################
    # Encoder Control
    ##########################################################################################
    ProfileID             = 32  # Profile ID (32: Jizhun Profile)
    LevelID               = 64  # Level ID   (16: 2.0;  32: 4.0;  34: 4.2;  64: 6.0;  66: 6.2)
    
    IntraPeriod           = 15   # Period of I-Frames (0=only first)
    VECPeriod             = 0   # Period of VEC, distance between two sequence headers   (0=doesn't exist at the bitstream)
    SeqHeaderPeriod       = 0  # Period of Sequence Header, Number of IntraPeriod  (0=only first)
    QPFirstFrame          = 28  # Quant. param for first frame (intra) (0-63)
    QPRemainingFrame      = 28  # Quant. param for remaining frames (0-63)
    QPBPicture            = 28  # Quant. param for B frames (0-63)
    UseHadamard           =  1  # Hadamard transform (0=not used, 1=used)
    SearchRange           = 32  # Max search range
    NumberReferenceFrames =  2  # Number of previous frames used for inter motion search (1-5)
    InterSearch16x16      =  1  # Inter block search 16x16 (0=disable, 1=enable)
    InterSearch16x8       =  1  # Inter block search 16x8  (0=disable, 1=enable)
    InterSearch8x16       =  1  # Inter block search  8x16 (0=disable, 1=enable)
    InterSearch8x8        =  1  # Inter block search  8x8  (0=disable, 1=enable)
    
    ##########################################################################################
    # B Frames
    ##########################################################################################
    NumberBFrames         = 0  # Number of B frames inserted (0=not used)
    FrameSkip             = 2 # Number of frames to be skipped in input (e.g 2 will code every third frame)
    
    ##########################################################################################
    # RD Optimization 
    ##########################################################################################
    RDOptimization       = 1  # rd-optimized mode decision (0:off, 1:on)
    
    ##########################################################################################
    # Additional Stuff
    #########################################################################################
    Progressive_frame     =  1  # (0: Interlace, 1: Progressive) 
    InterlaceCodingOption =  0  # (0: frame coding, 1: Field coding, 2: PAFF)
    repeat_first_field    =  0
    top_field_first       =  1
    
    
    ##########################################################################################
    # Loop filter parameters
    ##########################################################################################
    LoopFilterDisable        = 0  # Disable loop filter in picture header (0=Filter, 1=No Filter)  
    LoopFilterParameter      = 0  # Send loop filter parameter (0= No parameter, 1= Send Parameter)  
    LoopFilterAlphaOffset    = 0  # Aplha offset in loop filter
    LoopFilterBetaOffset     = 0  # Beta offset in loop filter
    
    ##########################################################################################
    # Slice parameters
    ##########################################################################################
    NumberOfRowsInSlice     =  5  # number of MB rows in one Slice  (0: one slice per frame)
    
    ##########################################################################################
    # Weighting Prediction parameters
    ##########################################################################################
    WeightEnable            =  0  # Weighting Prediction ( 0 = disable , 1 = enable)
    ##########################################################################################
    #frame rate
    ###########################################################################################
    FrameRate               =  5  # (1: 24000/1001,2: 24,3: 25,4: 30000/1001,5: 30,6: 50,7: 60000/1001,8: 60)######
    ###########################################################################################
    #chroma format parameter
    ###########################################################################################
    ChromaFormat            =  1  # (1=4:2:0,2=4:2:2)   
    
    ########################################################################################
    #Rate control
    ########################################################################################
    RateControlEnable    =     0    # 0 Disable, 1 Enable
    Bitrate              =     6000000   # Bitrate(bps)
    InitialQP            =     36   # Initial Quantization Parameter for the first I frame
                                    # InitialQp depends on two values: Bits Per Picture,
                                    # and the GOP length
    BasicUnit            =    8160  # Number of MBs in the basic unit
                                    # should be a fractor of the total number 
                                    # of MBs in a frame
    ChannelType          =      0   # type of channel( 1=time varying channel; 0=Constant channel)
    
    

    解码器配置文件decoder.cfg:

    test.avs                 ........AVS coded bitstream
    test_dec.yuv             ........Output file, YUV 4:2:0 format
    test_rec.yuv             ........Ref sequence (for SNR)
    2                        ........Number of reference frame buffers, for memory managemnt only
    0                        ........Loopfilter disable(0: filter, 1: no loopfilter)
      
    This is a file containing input parameters to the Telenor H.26L decoder.
    The text line following each parameter is discarded by the decoder.
    
    ========================================================================

    好了,到这里已经讲清楚了AVS1编解码器的简单使用方法了。

    至于在Linux/Unix下面的编译,也是很简单的,直接make就行了。

        Makefiles are provided in the lencod and ldecod directory.
        'make' comand will creat the obj directory and generate the executable file in 
        the 'bin' directory.
  • 相关阅读:
    docker,构建nginx反向代理tomcat
    centos7 Docker Compose 的安装
    tomcat8以上管理页面提示403问题
    实战docker,编写Dockerfile定制tomcat8镜像,实现web应用在线部署
    pycharm的MySQLdb模块导不进去时解决办法
    使用Docker创建Elasticsearch服务
    使用Docker搭建Tomcat运行环境
    win7查看某个端口被占用的解决方法
    在docker中使用mysql数据库,在局域网访问
    c++11 其他特性(一)
  • 原文地址:https://www.cnblogs.com/SoaringLee/p/10532117.html
Copyright © 2011-2022 走看看