美文网首页
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

相关文章

  • iOS h264直播遇到的问题

    花屏问题 丢失参考帧导致的 一般 H.264 码流有 I、B、P 三种帧类型,I 帧是关键帧,B 帧是双向预测内插...

  • 汇编学习(5),函数,栈帧

    本篇介绍 本篇介绍下汇编中的函数,栈帧内容。 函数 汇编也支持函数调用,如下是一个例子: 使用call + 标号就...

  • 8086汇编(18)栈帧

    栈帧 1、栈帧(Stack Frame Layout) 就是一个函数执行的环境 包括:参数、局部变量、返回地址等1...

  • 数据库 MySQL 2

    表 向表内插入数据:insert into 表名(字段名) values(具体值),(),()写入多条数据的时候中...

  • Android 动画

    动画类型 视图动画(补间动画、逐帧动画)属性动画 补间动画 逐帧动画 属性动画 对比 插值器:确定属性值从初始值过...

  • AE关键帧

    AE 关键帧的调节协调时间和空间 七种关键帧 1.关键帧采用的是线性插值 2.关键帧采用的是缓动(贝塞尔插值) 3...

  • 8086汇编二——栈帧-JCC

    在bp和sp之间的,叫做一个栈帧。该函数内部做的事。 写一两句C语言代码,脑海中就要有能映射出一张内存图。 FLA...

  • Perl的字符串中数组内插

    11. 字符串中数组内插 数组的内容可以被内插到双引号引起的字符串中,内插时,各个元素之间自动添加空格分隔。 数组...

  • 【AE表达式】如何获取某个关键帧的值

    一瓶红花油提问: 想问问,如何获取某个关键帧的值,比如某个图层在位置上有三个关键帧,如何获取图层第一个关键帧的值 ...

  • VBV学习记录

    首先明确一点,VBV调整只针对I帧和P帧,B帧的q值是根据p帧来决定的 1、初始化 在encode_open--x...

网友评论

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

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