美文网首页
x264-帧内插值汇编

x264-帧内插值汇编

作者: yongbaoqiji | 来源:发表于2023-12-17 16:55 被阅读0次

    Intra帧内预测

    1.16x16水平预测

    function predict_16x16_h_neon
        sub         r1, r0, #1 //寄存器r1=r0-1,即对应宏块最左侧紧挨的宏块的内存的值,
        mov         ip, #FDEC_STRIDE //寄存器ip保存立即数FDEC_STRIDE
    .rept 8 //循环8次,每次赋值2行
        vld1.8      {d0[]}, [r1], ip //取r1的值,赋值到d0寄存器,, r1+=FDEC_STRIDE
        vmov        d1, d0 //复制d0的值到d1,此时完成
        vld1.8      {d2[]}, [r1], ip //同上,给d2寄存器赋值, r1+=FDEC_STRIDE
        vmov        d3, d2 //同上,以上就给d3赋值,
    //这样d0,d1,d2,d3就都保存了两行宏块最左侧紧挨的宏块对应格子的值
        vst1.64     {d0-d1}, [r0,:128], ip //d0-d1线性赋值到r0,r0+=FDEC_STRIDE,第一行完成16x8的赋值
        vst1.64     {d2-d3}, [r0,:128], ip //d2-d3线性赋值到r0,r0+=FDEC_STRIDE ,第二行完成16x8的赋值
    .endr  //循环结束
        bx          lr //return
    
    endfunc
    

    2.16x16垂直预测

    function predict_16x16_v_neon
        sub         r0, r0, #FDEC_STRIDE  //寄存器r1=r0-FDEC_STRIDE ,即宏块上面一行紧挨的宏块的一行的值,
        mov         ip, #FDEC_STRIDE
        vld1.64     {d0-d1}, [r0,:128], ip //d0-d1寄存器初始化宏块上方一行的值
    .rept 16 //循环16次(行)
        vst1.64     {d0-d1}, [r0,:128], ip //d0-d1的值赋值到r0开始区域(16x8)线性赋值
    .endr
        bx          lr //return
    endfunc
    

    相关文章

      网友评论

          本文标题:x264-帧内插值汇编

          本文链接:https://www.haomeiwen.com/subject/fbeogdtx.html