?? fullinser1.s
字號(hào):
/**********************************************
該函數(shù)的功能主要是進(jìn)行整幀的圖象內(nèi)插
在該函數(shù)內(nèi)一次完成,水平,垂直和交叉
內(nèi)插。
完成r8*8的基礎(chǔ)塊內(nèi)插耗時(shí)為:374cycles
此函數(shù)比原函數(shù)增加四句,在后面有標(biāo)注
**********************************************/
#include "config_bfin.h"
DEFUN(fullinterpolate,mL1,
(const unsigned char *s, unsigned char *dest_h, unsigned char *dest_v, unsigned char *dest_hv, int Wide, int Hight, int stride)):
[--SP] = (R7:4,P5:3);
P0 = R0; //輸入數(shù)據(jù)的地址
P1 = R1; //水平內(nèi)插的輸出地址
P2 = R2; //垂直內(nèi)插的輸出地址
P3 = [SP+40]; //交叉內(nèi)插的輸出地址
P4 = [SP+44]; //Whide
R3 = [SP+48]; //Hight
R4 = [SP+52]; //stride
M0 = R3; //高
M1 = R4; //跨距
R5 = P4; //寬
P4 = P4>>2;
I2 = P4;
M3 = 1;
I2 -=M3;
P4 = I2;
I2 = P0; //輸入數(shù)據(jù)
I3 = M0; //高
P5 = I3; //高
// M3 = 1;
R3 = R4-R5(S)||I2 += M1; //stride-Whide;I2指向下一行
M2 = R3; //stride-Whide
I3 = P0; //輸入數(shù)據(jù)
I1 = M2; //比原函數(shù)添加句1
I1+=4; //添加句2
P0 = I1; //添加句3
I0 = 0;
LSETUP(INSERTO_ST,INSERTO_END) LC1 = P5; //核心算法開始
INSERTO_ST:
/* P5 = P4;
P5 = P5>>2;
R6=B[P5--](x); //添加句4 //調(diào)整循環(huán)的次數(shù),相當(dāng)于P5=P5-1,將內(nèi)循環(huán)的最后一次循環(huán)放在循環(huán)外執(zhí)行;*/
LSETUP(INSERTI_ST,INSERTI_END) LC0 = P4;
INSERTI_ST:
R0 = [I3++]||R2 = [I2++]; //P0指向輸入數(shù)據(jù)的第n行
//I2指向輸入數(shù)據(jù)的第n+1行
I1 = 0;
R4 = BYTEOP1P(R1:0,R3:2)||R1 = [I3--]||R3 = [I2]; //垂直內(nèi)插的計(jì)算
R4 = BYTEOP2P(R1:0,R3:2)(RNDL)||[P2++] = R4; //交叉內(nèi)插的計(jì)算
I0 = 1;
I1 = 1;
R5 = BYTEOP2P(R1:0,R3:2)(RNDH); //4四個(gè)8位數(shù)取平均結(jié)果放在高位字節(jié)
R4 = R4+|+R5||I0 -= M3||R2 =[I3++]; //I0=0
R3 = R1;
R4 = BYTEOP1P(R1:0,R3:2)||[P3++] = R4; //水平內(nèi)插的計(jì)算
INSERTI_END: [P1++] =R4;
R0 = [I3++]||R2 = [I2++]; //P0指向輸入數(shù)據(jù)的第n行
//I2指向輸入數(shù)據(jù)的第n+1行
I1 = 0;
R4 = BYTEOP1P(R1:0,R3:2)||R1 = [I3--]||R3 = [I2]; //垂直內(nèi)插的計(jì)算
R6 = BYTEOP2P(R1:0,R3:2)(RNDL); //交叉內(nèi)插的計(jì)算
[P2++P0] = R4;
I0 = 1;
I1 = 1;
R7 = BYTEOP2P(R1:0,R3:2)(RNDH); //4四個(gè)8位數(shù)取平均結(jié)果放在高位字節(jié)
R6 = R6+|+R7||I0 -= M3||R2 =[I3++]; //I0=0
R3 = R1;
R4 = BYTEOP1P(R1:0,R3:2); //水平內(nèi)插的計(jì)算
[P3++P0] = R6;
[P1++P0] =R4; //輸出數(shù)據(jù)換行,原函數(shù)編程只是輸入數(shù)據(jù)換行,沒(méi)有實(shí)現(xiàn)輸出數(shù)據(jù)換行
INSERTO_END: R7 = [I2++M2]||R6 = [I3++M2]; //輸入的數(shù)據(jù)換行
(R7:4,P5:3) = [SP++];
RTS;
DEFUN_END(fullinterpolate)
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -