亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? hpel_core2.asm

?? mpeg2中的全搜索算法
?? ASM
字號:
/*******************************************************************************
Copyright(c) 2000 - 2002 Analog Devices. All Rights Reserved.
Developed by Joint Development Software Application Team, IPDC, Bangalore, India
for Blackfin DSPs  ( Micro Signal Architecture 1.0 specification).

By using this module you agree to the terms of the Analog Devices License
Agreement for DSP Software. 
********************************************************************************
Module Name     : hpel_core2.asm
Label Name      : __hpel_core2
Version         :   1.0
Change History  :

                Version     Date          Author            Comments
                1.0         07/02/2001    Vijay             Original 

Description     : The assembly function is used by the half pixelation routine 
                  to compute the average of four CORNER macroblocks which need 
                  not be word aligned. The starting addresses of the macroblocks
                  are passed in I0 and I1 and the averaged result is stored  in 
                  a buffer pointed to by I3. The MAD between the averaged 
                  (interpolated) block and the target block is then computed. If
                  the interpolated block has a lower value of MAD than the 
                  previously observed minimum an offset of +1 or -1 is added to 
                  the integer motion vector in the corresponding direction. This
                  is called the half-pixel correction.

Prototype       : void _hpel_core2(struct *input_parameters, int *temp_array1, 
                                   int *temp_array2);

                  Input : The input to this routine is a pointer to a structure 
                  containing the following elements and two temporary arrays of 
                  size 260. The content of the first temporary array is obtained
                  from the hpel_core1 routine (i.e., _hpel_core1 should be
                  called before invoking this routine).

                  Structure :
                        struct {
                                    int least_mad;
                            -> The value of the least MAD after searching the 
                               search window fully 
                                    unsigned char *add_least_mad;
                            -> Address of the block having the least MAD 
                                    int vert_mv;
                            -> Vertical integer motion vector 
                                    int hor_mv;
                            -> Horizontal integer motion vector 
                                    int curr_ver_mv_off;
                            -> Current hpel offset for the vertical motion 
                               vector 
                                    int curr_hor_mv_off;
                            -> Current hpel offset for the horizontal motion 
                               vector 
                                    int prev_ver_mv_off;
                            -> Previous hpel offset for the vertical motion 
                               vector 
                                    int prev_hor_mv_off;
                            -> Previous hpel offset for the horizontal motion 
                               vector 
                                    int hor_size;
                            -> Horizontal size of the video frame 
                                    unsigned char *tgt_blk_add;
                            -> Start address of the target block 
                                }input_parameters;

Registers used  : A0, A1, R0-R3, R7, I0-I3, M0, M1, M3, L0, L1, L3, P1, P2, LC0.

Performance     :
                Code size   : 332 Bytes.
*******************************************************************************/
.section L1_code;
.align 8;
.global __hpel_core2;

__hpel_core2:

    [--SP] = R7;
    L0 = 0;
    L1 = 0;
    L3 = 0;
    P1 = R0;
    M0 = R1;
    I3 = R2;
    I2 = R2;
    R1 = [P1 + 16]; // Current hpel offset for the vertical motion 
                            // vector
    R3 = [P1 + 32]; // Horizontal size of the video frame
    R2 = R1.L * R3.L (IS) || R0 = [P1 + 4];
                            // Address of the block having least MAD 
    R2 = R0 + R2 (NS) || R7 = [P1 + 20];
                            // Current hpel offset for the horizontal motion 
                            // vector 
    R2 = R2 + R7 (S);
    I1 = R2;
    R1 = R1 + R7 (S);           // If (VMV + HMV) == 0
    R2 = 1;                 //     address_offset = curr_hor_mv_off
    CC = R1 == 0;           // else
    IF !CC R2 = R3;         //     address_offset = curr_hor_mv_off*hor_size
    P2 = 16;                // Loop ctr(for 16 rows) is initialized
    R1 = R2.L * R7.L (IS);
    R0 = R0 + R1;
    I0 = R0;
    R3 += -16;
    M1 = R3;
    R3 += 4;
    M3 = R3;
    
/***************** AVERAGE ADJACENT BLOCKS ************************************/
    LSETUP(LOOP_ST,LP_END) LC0=P2;
    DISALGNEXCPT || R0 = [I0++] || R2  =[I1++];
                            // Fetch 1st words of the two blocks(if disligned, 
                            //contains partial data
LOOP_ST:
        DISALGNEXCPT || R1 = [I0++] || R3  =[I1++];
                            // Fetch 2nd words(will contain remaining part of 
                            // 1st word) 
        R7 = BYTEOP1P(R1:0,R3:2) || R0 = [I0++] || R2  =[I1++];
                            // Average(R0,R2) and fetch 3rd word 
        R7 = BYTEOP1P(R1:0,R3:2)(R) || R1 = [I0++] || [I3++] = R7 ;
                            // Average(R1,R3), fetch 4th data and store previous
                            // result 
        DISALGNEXCPT  || R3  =[I1++] || [I3++] = R7;
                            // Fetch 4th data and store previous result 
        R7 = BYTEOP1P(R1:0,R3:2) || R0 = [I0++M1] || R2  =[I1++M1];
                            // Average (R0,R2), fetch 5th word and modify 
                            // pointers 
        R7 = BYTEOP1P(R1:0,R3:2)(R) || R0 = [I0++] || [I3++] = R7 ;
                            // Average (R1,R3), fetch 1st word of next row and 
                            // store 
LP_END: DISALGNEXCPT || R2  =[I1++] || [I3++] = R7;
                            // Fetch 1st word of next row and store previous 
                            // result 
/*********************** AVERAGE CORNER BLOCKS & COMPUTE MAD *****************/
    
    I0 = I2;
    I1 = M0;
    R0 = [P1 + 36];
    I3 = R0;                // Fetch the start address of the target block
    A1=A0=0 || R0 = [I0++] || R2 = [I1++];
                            // Initialize accumulators for MAC and fetch first 
                            // data
    MNOP;
    
    LSETUP(CAVG_ST,CAVG_END) LC0 = P2;
CAVG_ST:
        R1 = BYTEOP1P(R1:0,R3:2) || R3 = [I3++] || R2 = [I1++];
                            // Average and fetch data from tgt blk 
        SAA (R1:0,R3:2) (R) || R0 = [I0++];
                            // MAD and fetch data to be averaged from buffers 
        R1 = BYTEOP1P(R1:0,R3:2) || R3 = [I3++] || R2 = [I1++];
                            // Average and fetch data from tgt blk 
        SAA (R1:0,R3:2) (R) || R0 = [I0++];
                            // MAD and fetch data to be averaged from buffers 
        R1 = BYTEOP1P(R1:0,R3:2) || R3 = [I3++] || R2 = [I1++];
                            // Average and fetch data from tgt blk 
        SAA (R1:0,R3:2) (R) || R0 = [I0++];
                            // MAD and fetch data to be averaged from buffers 
        R1 = BYTEOP1P(R1:0,R3:2) || R3 = [I3++M3] || R2 = [I1++];
                            // Average and fetch data from tgt blk and modify 
                            // pointer 
CAVG_END:
        SAA (R1:0,R3:2) (R) || R0 = [I0++];
                            // MAD and fetch data from next row to be averaged 
                            // from buffers 
    R3=A1.L+A1.H,R2=A0.L+A0.H;    
    R0 = R2 + R3 (NS) || R3 = [P1];
                            // Add the accumulated values in both MACs 
    
/******************** MINIMUM MAD COMPUTATION ******************************/
    
    CC = R0 <= R3;          // Check if the latest MAD or MSE is less than the 
                            // previous ones
    IF CC JUMP LESS_OR_EQUAL;
                            // If latest MAD is not lesser, then return 
    R7 = [SP++];
    RTS;
LESS_OR_EQUAL:
    CC = R0 < R3;                 
    IF !CC JUMP EQUAL;      // If MAD is lesser jump to 'LESS'
    [P1] = R0;              // If latest MAD is less, then store it as the 
                            // minimum MAD
    R0 = [P1 + 16];
    [P1 + 24] = R0;
    R0 = [P1 + 20];
    [P1 + 28] = R0;
    R7 = [SP++];
    RTS;
EQUAL:
    R2 = [P1 + 12];         // Horizontal-vector before half pixel estimation
    R1 = [P1 + 28];
    R1 = R2 + R1 (NS) || R3 = [P1 + 8];
                            // Half pixel estimation for Horizontal-vector added
                            // to X-vector 
    R0 = [P1 + 24];
    R0 = R3 + R0;           // Half pixel estimation for Vertical-vector added 
                            // to Y-vector
    A1 = R1.L*R1.L (IS) || R1 = [P1 + 20];
    A1 += R0.L*R0.L (IS) || R0 = [P1 + 16];
                            // Distance to previous best match from reference 
                            // block 
    R0 = R0 + R3;
    R1 = R1 + R2;
    A0 = R0.L*R0.L (IS);    // Distance to current best match from reference 
                            // block
    A0 += R1.L*R1.L (IS);
    CC = A0 < A1;
    IF !CC JUMP FINISH;
    R0 = [P1 + 16];
    [P1 + 24] = R0;
    R0 = [P1 + 20];
    [P1 + 28] = R0;
FINISH:
    R7 = [SP++];
    RTS;       
    
__hpel_core2.end:     

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品麻豆日日躁夜夜躁| 粉嫩av一区二区三区在线播放| 污片在线观看一区二区| 久久国产乱子精品免费女| 91丨porny丨中文| 久久激情综合网| 色88888久久久久久影院野外| 日韩一级完整毛片| 亚洲理论在线观看| 国产成人在线免费| 91精品国产黑色紧身裤美女| 国产精品成人免费在线| 国产在线视视频有精品| 欧美欧美欧美欧美| 一区二区三区在线观看动漫| 丰满岳乱妇一区二区三区| 日韩欧美电影一二三| 天堂蜜桃一区二区三区| 欧美综合久久久| 国产精品欧美久久久久一区二区 | 久久久久久久精| 首页综合国产亚洲丝袜| www.激情成人| 激情综合色综合久久综合| 欧美日韩高清影院| 亚洲一区二区三区三| 色婷婷综合久久久| 亚洲美女视频在线| 91亚洲午夜精品久久久久久| 国产精品视频麻豆| 国产91在线观看丝袜| 国产日韩欧美综合在线| 国产福利电影一区二区三区| 日韩精品在线一区二区| 久久激五月天综合精品| 久久综合久久综合亚洲| 国产一区二区三区精品视频| 日韩一级免费一区| 韩国av一区二区三区| 国产亚洲欧美日韩俺去了| 国产美女娇喘av呻吟久久| 国产欧美日韩激情| 99久久亚洲一区二区三区青草| 中文字幕制服丝袜成人av| 91一区二区在线| 亚洲综合一区二区| 在线不卡欧美精品一区二区三区| 日韩精品亚洲一区| 26uuu亚洲综合色| 从欧美一区二区三区| 亚洲免费观看高清完整| 欧美日韩1234| 国产剧情在线观看一区二区| 综合网在线视频| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 午夜视频一区在线观看| 日韩欧美成人一区| 成人国产精品免费网站| 亚洲成人精品在线观看| 精品国产成人在线影院| 成人国产精品免费| 偷窥少妇高潮呻吟av久久免费| 精品嫩草影院久久| 99re6这里只有精品视频在线观看| 亚洲va在线va天堂| 日本一区二区视频在线观看| 欧美色精品在线视频| 国产在线不卡一卡二卡三卡四卡| 亚洲视频一二区| 日韩欧美不卡一区| 色综合激情五月| 精品一区二区三区的国产在线播放| 国产精品美女久久久久高潮| 91精品国产综合久久久久久| 北岛玲一区二区三区四区 | 国产午夜久久久久| 欧美综合在线视频| 成人黄色av网站在线| 热久久一区二区| 亚洲精品国产视频| 国产亚洲欧美色| 日韩欧美专区在线| 日本高清不卡视频| 成人小视频免费观看| 久久精品国产精品亚洲综合| 亚洲免费观看高清完整版在线| 精品国产sm最大网站| 欧美男人的天堂一二区| 91视频在线看| 国产成人欧美日韩在线电影| 免费三级欧美电影| 亚洲va韩国va欧美va| 亚洲美女在线一区| 国产精品网站在线观看| 欧美成人三级在线| 欧美日韩精品欧美日韩精品| 一本色道久久综合亚洲aⅴ蜜桃| 国产超碰在线一区| 国产高清一区日本| 国内一区二区在线| 九九国产精品视频| 久久国产尿小便嘘嘘尿| 美女在线一区二区| 美女视频免费一区| 美女尤物国产一区| 激情图片小说一区| 老色鬼精品视频在线观看播放| 午夜日韩在线电影| 日本午夜一区二区| 免费成人在线视频观看| 日本成人在线视频网站| 青青草91视频| 青青青伊人色综合久久| 日本欧美加勒比视频| 麻豆国产欧美日韩综合精品二区| 蜜桃视频第一区免费观看| 蜜臀va亚洲va欧美va天堂| 开心九九激情九九欧美日韩精美视频电影 | 国产一区二区三区久久久| 九九久久精品视频| 国产福利91精品| 成人国产亚洲欧美成人综合网| 成人av资源在线| 在线观看一区二区视频| 欧美又粗又大又爽| 欧美日韩激情一区二区| 精品久久久久久久人人人人传媒| 精品成人一区二区| 中文天堂在线一区| 亚洲一区二区av电影| 轻轻草成人在线| 国产91高潮流白浆在线麻豆| 97久久精品人人做人人爽 | 国产 日韩 欧美大片| av电影在线观看完整版一区二区| 91在线免费播放| 欧美日韩日日摸| 久久久精品国产免费观看同学| 国产精品久久久久久户外露出| 一区二区三区在线观看国产| 日韩vs国产vs欧美| 国产成人8x视频一区二区 | 99国产一区二区三精品乱码| 欧美性感一类影片在线播放| 91精品国产全国免费观看| 久久久五月婷婷| 一个色妞综合视频在线观看| 美女在线视频一区| 91视频免费观看| 欧美变态口味重另类| 亚洲美女精品一区| 国内精品不卡在线| 在线精品亚洲一区二区不卡| 欧美精品一区二区三区在线| 亚洲三级在线免费观看| 久久精工是国产品牌吗| 日本国产一区二区| 久久久精品国产免费观看同学| 亚洲影院在线观看| 国产91精品入口| 日韩欧美一二区| 亚洲在线中文字幕| 成人av电影免费在线播放| 日韩视频在线观看一区二区| 亚洲精选免费视频| 国产成人亚洲精品青草天美| 91精品国产色综合久久不卡电影 | 欧美一区二区三区免费在线看| 欧美不卡视频一区| 亚洲午夜久久久| 99麻豆久久久国产精品免费| 精品剧情在线观看| 肉肉av福利一精品导航| 91欧美激情一区二区三区成人| 日韩精品一区二区三区四区视频| 一区二区三区精品视频在线| 懂色中文一区二区在线播放| 欧美精品一区二区三区一线天视频| 亚洲免费色视频| 99这里都是精品| 欧美国产日韩亚洲一区| 国产在线精品免费av| 日韩欧美在线不卡| 日韩高清一级片| 欧美日韩夫妻久久| 一区二区三区加勒比av| 91免费版pro下载短视频| 国产网红主播福利一区二区| 国产一区视频网站| 久久久久久久久久久久电影| 激情深爱一区二区| 久久蜜桃一区二区| 国内精品久久久久影院薰衣草| 精品乱码亚洲一区二区不卡| 极品少妇一区二区| 久久综合久久综合久久综合| 久久99精品视频| 777欧美精品| 亚洲欧美一区二区三区极速播放| 美女www一区二区|