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

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

?? full_search_mpeg2.asm

?? mpeg2中的全搜索算法
?? ASM
?? 第 1 頁 / 共 2 頁
字號:
/*******************************************************************************
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     : full_search_mpeg2.asm
Label Name      : __full_search_mpeg2
Version         :   1.2
Change History  :

                Version     Date          Author        Comments
                1.2         11/18/2002    Swarnalatha   Tested with VDSP++ 3.0
                                                        compiler 6.2.2 on 
                                                        ADSP-21535 Rev.0.2
                1.1         11/13/2002    Swarnalatha   Tested with VDSP++3.0 
                                                        on ADSP-21535 Rev.0.2
                1.0         07/02/2001    Vijay         Original 

Description     : The assembly function does the full search block matching to
                  compute the motion vectors given a target frame and a 
                  reference frame. By suitably selecting the target frame and 
                  the reference frame, this routine can be used to obtain the 
                  motion vectors of a P or a B frame. The target and reference 
                  frames have to be of the same size and should be an integer 
                  multiple of 16. The input arguments to the function are the 
                  target frame address, the reference frame address, the frame 
                  size, the search area factor and the start addresses of the 
                  motion vectors. The macro block size is fixed to be 16x16. The
                  search area is computed based on the search area factor. It 
                  specifies an integer value between 1 and 3. The search range 
                  is specified as follows:
                        
                        =============================================
                        |   Search_area_factor  |   Search range    |
                        |           1           |     -4 to 3.5     |
                        |           2           |     -8 to 7.5     |       
                        |           3           |    -16 to 15.5    |   
                        =============================================

                  The motion vector gives an integer offset for every macro 
                  block in the target frame with respect to the macro blocks in 
                  the reference frame in both vertical and horizontal 
                  directions. Once the integer offset is computed a half pixel
                 correction is given in either directions (vertical and 
                 horizontal) by interpolating adjacent macro blocks. The 
                 resultant vectors are called half-pel motion vectors. The 
                 motion vectors for all the macro blocks in the target frame 
                 have been computed by grouping the macro blocks into NINE 
                 categories based on the range within which the matching has to 
                 be done, without crossing the frame boundary. Hence there will 
                 be nine code-segments which compute the motion vectors for the
                 macro blocks in that category. These categories are pictorially
                 represented and the ranges allowed for them are explained in a 
                 table :

                       -----------------------------------------
                       |       |       |       |       |       |
                       |  NW   |       | NORTH |       |   NE  |
                       -----------------------------------------
                       |       |       |       |       |       |
                       |       |       |       |       |       |
                       ----W-------------------------------E----
                       |   E   |     C E N T R A L     |   A   |
                       |   S   |       |       |       |   S   |
                       ----T-------------------------------T----
                       |       |       |       |       |       |
                       |       |       |       |       |       |
                       -----------------------------------------
                       |       |       |       |       |       |
                       |  SW   |       | SOUTH |       |   SE  |
                       -----------------------------------------

================================================================================
                         search_area_factor (S)                            
================================================================================
  Category       S = 1                 S = 2                   S = 3               
          (vertical, horizontal) (vertical, horizontal) (vertical, horizontal)  
================================================================================
                                                                                                
NORTH-WEST (0 to 3.5, 0 to 3.5)  (0 to 7.5, 0 to 7.5)  (0 to 15.5, 0 to 15.5)    
NORTH-EAST (0 to 3.5, -4 to 0)   (0 to 7.5, -8 to 0)   (0 to 15.5, -16 to 0)     
SOUTH-WEST (-4 to 0, 0 to 3.5)   (-8 to 0, 0 to 7.5)   (-16 to 0, 0 to 15.5)     
SOUTH-EAST (-4 to 0, -4 to 0)    (-8 to 0, -8 to 0)    (-16 to 0, -16 to 0)      
NORTH      (0 to 3.5, -4 to 3.5) (0 to 7.5, -8 to 7.5) (0 to 15.5, -16 to 15.5)  
SOUTH      (-4 to 0, -4 to 3.5)  (-8 to 0, -8 to 7.5)  (-16 to 0, -16 to 15.5)   
WEST       (-4 to 3.5, 0 to 3.5) (-8 to 7.5, 0 to 7.5) (-16 to 15.5, 0 to 15.5)  
EAST       (-4 to 3.5, -4 to 0)  (-8 to 7.5, -16 to 0) (-16 to 15.5, -16 to 0)   
CENTRAL    (-4 to 3.5, -4 to 3.5)(-8 to 7.5, -8 to 7.5)(-16 to 15.5,-16 to 15.5)
================================================================================

                  As expected by the MPEG-2 standard the routine multiplies the 
                  actual offset between the target macro block and a best 
                  matching reference macro block within the search range by two.
                  It should also be noted that the macro blocks in the boundary 
                  of the frame are not given the half pixel correction, but 
                  still they are scaled by a factor of two. Thus, all target 
                  macro blocks which underwent an integer transition will have 
                  even motion vectors while those blocks that are offset by a 
                  non-integer factor will have odd motion vectors.

Registers Used  : R0-R7, B0-B3, P0, P1, P3-P5.

Prototype       : void __full_search_mpeg2(&Target_frame, &Reference_Frame,
                  &mv_vertical, &mv_horizontal, rows, columns, search_factor);

                  Input arguments : 
                    Target_frame    - Starting address of the Target frame
                    Reference_Frame - Starting address of the reference frame
                    mv_vertical     - Starting address of the motion vector 
                                      matrix (Vertical direction)
                    mv_horizontal   - Starting address of the motion vector 
                                      matrix (Horizontal direction)
                    rows            - No. of rows in the frame
                    columns         - No. of columns in the frame
                    search_factor   - Search_area_factor

Performance     :
                Code size : 1122 bytes (only full_search_mpeg2.asm)

    ======================================================================
    Cycle count for the Half-pixel Motion estimation using Mean Absolute 
    Difference (MAD) criterion
    ======================================================================
    S.No. Frame size  Search_factor  Search Range(pixels)  No. of cycles  
    1      80 x 96        1           -4 to 3.5              1,57353    
    2      80 x 96        2           -8 to 7.5              5,27212   
    3      80 x 96        3          -16 to 15.5            19,74577   
    ======================================================================

    Cycle count mentioned above is for the test case given in test_full_search.c
    file.
*******************************************************************************/
.section L1_code;
.align 8;
.global __full_search_mpeg2;
.extern __mve_core;
.extern _hpel;

__full_search_mpeg2:

    [--SP] = RETS;
    [--SP] = (R7:4, P5:3);
/*************************** FETCH INPUT ARGUMENTS ****************************/
    
    B0 = R0;                // Fetch the target frame address
    B1 = R1;                // Fetch the reference frame address
    B2 = R2;                // Fetch the address of motion vector along y 
                            // direction
    P3 = [SP + 44];         // Fetch the address of motion vector along x 
                            // direction
    R4 = [SP + 48];         // No. of rows in the frame
    R5 = [SP + 52];         // No. of columns in the frame
    R6 = [SP + 56];         // Search_area_factor
    B3 = P3;
    
/*************************** PRELIMINARY COMPUTATIONS ************************/
    SP += -52;
    P3 = SP;
    SP += -52;
    R6 += 1;                                    
    R7 = 1;                                     
    R6 = LSHIFT R7 BY R6.L || [SP] = R5;
                            // Compute ...
    R7 = 0x10;
    R6.L = R5.L - R7.L (NS) || [SP + 4] = R6;
                            // [SP + 4]  -> 2^(search_area_factor + 1) 
    R6 = R5 >>> 4 || [SP + 28] = R6;
                            // [SP + 28] -> (No. of columns - 16) 
    R6.L =  R4.L - R7.L(NS) || [SP + 32] = R6;
                            // [SP + 32] -> (No. of columns)/16 
    R6 = R4 >>> 4 || [SP + 36] = R6;
                            // [SP + 36] -> (N0. of rows - 16) 
    [SP + 40] = R6;         // [SP + 40] -> (No. of Rows)/16
    
/*****************************  NORTH WEST ************************************
This code segment computes the motion vectors along the horizontal and vertical 
directions for the top-left corner macro block. The motion vectors along both 
the directions for this macro block cannot take negative values as such a value 
will shift the macro block out of the frame boundary.
*******************************************************************************/
    
    R0 = B1;
    [SP + 16] = R0;         // Starting address of the reference block
    [SP + 12] = R0;         // Location of the target block in the reference 
                            // frame
    R0 = B0;
    [SP + 8] = R0;          // Starting address of the target block
    R0 = [SP + 4];
    [SP + 20] = R0;
    [SP + 24] = R0;
    R0 = SP;                // Pass the address of the structure to the function
    R1 = P3;
    
    
    CALL __mve_core;        // Finds the best matching macro block and computes 
                            // the motion vectors
    P0 = B2;                                    
    P1 = B3;                                    
    B[P0++] = R0;           // Store motion vector along vertical direction
    B[P1++] = R1;           // Store motion vector along horizontal direction
    
/***************************** NORTH EAST *************************************
This code segment computes the motion vectors along the horizontal and vertical 
directions for the top-right corner macro block. For this macro block, the 
motion vector along the vertical direction is always non-negative while along 
the horizontal direction it is negative or zero thus giving a best match for the
target macro block within the frame boundary.
*******************************************************************************/
    
    R6 = [SP + 4];
    R6 += 1;
    R1 = B0;
    R0 = R1 + R5 (NS) || [SP + 20] = R6;
    R0 += -16;
    R0 = R0 - R1 (NS) || [SP + 8] = R0;
                            // Starting address of the target block 
    R1 = B1;                    
    R0 = R0 + R1 (NS) || R6 = [SP + 4]; 
    R0 = R0 - R6 (NS) || [SP + 12] = R0;
                            // Location of the target block in the reference 
                            // frame 
    [SP + 16] = R0;         // Starting address of the reference block
    R0 = SP;
    R1 = P3;
    CALL __mve_core;        // Finds the best matching macro block and computes 
                            // the motion vectors
    R6 = B2;                                    
    R7 = R5 >> 4;
    R7 += -1;
    R6 = R6 + R7;
    P0 = R6;
    R6 = B3;
    R6 = R6 + R7;
    P1 = R6;
    B[P0++] = R0;           // Store motion vector along vertical direction
    R0 = 1;
    R6 = [SP + 4];
    B[P1++] = R1;           // Store motion vector along horizontal direction
    
    
/******************************** SOUTH WEST **********************************
The motion vector along the horizontal and vertical directions for the bottom-
left corner macro block is computed by this code segment. The motion vector 
along the vertical direction is negative or zero while the one along the 
horizontal direction is non-negative for this macro block.
******************************************************************************/
    
    R6 = R6 + R0 (NS) || [SP + 20] = R6;
    R0 = R0 << 4 || [SP + 24] = R6;
    R1 = R4 - R0;
    R0 = B0;
    R3 = B1;
    R1 = R1.L*R5.L (IS);
    R2 = R0 + R1;
    R0 = R3 + R1 (NS) || R1 = [SP + 4];
    R1 = R1.L*R5.L (IS) || [SP + 8] = R2;
                            // Starting address of the target block; 
    R0 = R0 - R1 (NS) || [SP + 12] = R0;
                            // Location of the target block in the reference 
                            // frame 
    [SP + 16] = R0;         // Starting address of the reference block
    R0 = SP;
    R1 = P3;
    CALL __mve_core;        // Finds the best matching macro block and computes 
                            // the motion vectors
    R2 = [SP + 36];
    R2 = R2 >>> 4 || R3 = [SP + 32];
    R6 = B2;
    R7 = R2.L*R3.L (IS);
    R6 = R6 + R7;
    P0 = R6;
    R6 = B3;
    R6 = R6 + R7;
    P1 = R6;
    B[P0++] = R0;           // Store motion vector along vertical direction
    R6 = [SP + 4];
    R6 += 1;
    B[P1++] = R1;           // Store motion vector along horizontal direction
    
/******************************* SOUTH EAST ***********************************
The motion vectors for the bottom-right corner macro block in the target frame 
is computed by this code-segment. Both the vectors, i.e., along the horizontal 
and vertical directions are negative or zero to avoid the crossing of frame 
boundary.
*******************************************************************************/
    
    [SP + 20] = R6;
    [SP + 24] = R6;
    R1 = [SP + 36];
    R1 = R1.L*R5.L (IS) || R0 = [SP + 28];
    R1 = R0 + R1;
    R0 = B0;
    R2 = R0 + R1 (NS) || R3 = [SP + 4];
    R0 = B1;
    R0 = R0 + R1 (NS) || [SP + 8] = R2;
                            // Starting address of the target block 
    R1 = R3.L * R5.L (IS) || [SP + 12] = R0;
                            // Location of the target block in the reference 
                            // frame 
    R0 = R0 - R1;
    R0 = R0 - R3;
    [SP + 16] = R0;         // Starting address of the reference block
    R0 = SP;
    R1 = P3;
    CALL __mve_core;        // Finds the best matching macro block and computes 
                            // the motion vectors
    R6 = [SP + 40];                             
    R7 = [SP + 32];
    R7.L = R7.L*R6.L (IS);
    R7 += -1;
    R6 = B2;
    R6 = R6 + R7;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美不卡在线视频| 免费精品视频在线| 一本一道久久a久久精品综合蜜臀| 国产欧美一区二区精品婷婷| 99久久亚洲一区二区三区青草| 一区二区激情视频| 久久午夜色播影院免费高清| 粉嫩aⅴ一区二区三区四区五区 | 国产在线视频一区二区三区| 亚洲色图丝袜美腿| 日韩精品中文字幕一区二区三区| 成人av资源站| 国产福利一区二区三区视频在线| 亚洲愉拍自拍另类高清精品| 国产亚洲欧美一级| 欧美不卡一区二区三区四区| 欧美伊人久久大香线蕉综合69| 精品一区二区久久久| 午夜精品影院在线观看| 亚洲精品va在线观看| 国产精品欧美一区二区三区| 日韩一区二区三区观看| 欧美在线免费观看亚洲| 在线观看日韩电影| 一本到不卡免费一区二区| 成人高清视频免费观看| 成人av动漫网站| 大桥未久av一区二区三区中文| 激情国产一区二区| 国产精选一区二区三区| 国产成人一区在线| 成人中文字幕在线| 99re成人精品视频| 欧美精品v国产精品v日韩精品 | 成人午夜在线播放| 91美女在线看| 欧美美女网站色| 久久久噜噜噜久久中文字幕色伊伊| 欧美成人三级电影在线| 国产色婷婷亚洲99精品小说| 亚洲欧美偷拍三级| 激情欧美一区二区| 色先锋资源久久综合| 欧美一区二区三区色| 中文字幕免费不卡| 五月天中文字幕一区二区| 日韩中文字幕一区二区三区| 理论电影国产精品| 99vv1com这只有精品| 欧美mv日韩mv国产| 日韩黄色免费电影| 成人不卡免费av| 欧美日韩在线直播| 中文字幕视频一区二区三区久| 午夜免费欧美电影| 色狠狠一区二区三区香蕉| 日韩一区二区不卡| 精品一区二区免费| 欧美乱妇15p| 日本中文字幕一区二区有限公司| 国产在线精品一区二区夜色| 欧美一二三区在线| 丝袜亚洲另类欧美综合| 在线视频一区二区三区| 国产精品成人一区二区三区夜夜夜| 麻豆成人免费电影| 日韩欧美中文一区| 日韩二区在线观看| 日韩视频免费观看高清在线视频| 午夜精品久久久久久久99水蜜桃 | 韩国一区二区视频| 2021久久国产精品不只是精品| 久久国产精品第一页| 欧美国产日韩亚洲一区| 99久久久久久| 亚洲一区二区三区四区在线| 欧美精品一区二区在线观看| 午夜视黄欧洲亚洲| 26uuu亚洲| 91在线精品一区二区| 亚洲视频一区二区免费在线观看 | 色又黄又爽网站www久久| 亚洲国产精品久久一线不卡| 91精品麻豆日日躁夜夜躁| 久久国产精品72免费观看| 国产精品传媒入口麻豆| 3atv一区二区三区| 国产黄人亚洲片| 亚洲成人自拍网| 中文字幕在线不卡一区 | eeuss影院一区二区三区| 夜夜操天天操亚洲| 久久综合色8888| 欧美午夜宅男影院| 成人app在线观看| 久久91精品国产91久久小草| 国产精品二三区| 欧美zozo另类异族| 欧美日韩不卡在线| 欧洲精品视频在线观看| 国产精品99久久久久久似苏梦涵| 一区二区三区在线播| 国产精品麻豆网站| 国产精品美女视频| 久久综合色之久久综合| 久久婷婷综合激情| 日韩欧美国产精品| 欧美久久高跟鞋激| 日韩欧美国产一区二区三区| 欧美日韩精品一区二区天天拍小说| av在线播放一区二区三区| 北岛玲一区二区三区四区| 国产美女视频91| proumb性欧美在线观看| 99久久婷婷国产| 欧美日韩国产综合一区二区| 欧美无人高清视频在线观看| 3d动漫精品啪啪| 久久中文娱乐网| 中文字幕中文在线不卡住| 亚洲一区在线视频| 免费成人小视频| 黄色精品一二区| 91蝌蚪porny成人天涯| 4438x成人网最大色成网站| 欧美成人video| 一区二区在线观看免费| 性久久久久久久久| 国产宾馆实践打屁股91| 色老汉一区二区三区| 精品国产伦一区二区三区观看方式 | 国模一区二区三区白浆| 粉嫩av一区二区三区在线播放| 色综合色狠狠天天综合色| 欧美一区二区高清| 亚洲视频一区二区在线| 久热成人在线视频| 欧美精品久久久久久久多人混战| 久久综合成人精品亚洲另类欧美| 亚洲少妇30p| 99re这里只有精品首页| 精品电影一区二区| 五月天国产精品| 欧美三级电影网站| 石原莉奈一区二区三区在线观看| a亚洲天堂av| 国产欧美日韩久久| 粉嫩在线一区二区三区视频| 精品99一区二区| 看电影不卡的网站| 久久久久久免费毛片精品| 美女被吸乳得到大胸91| 日韩欧美国产一二三区| 国产美女久久久久| 欧美国产激情一区二区三区蜜月| 黄色日韩三级电影| 国产精品毛片久久久久久久| 国产成人午夜高潮毛片| 中文字幕在线不卡一区二区三区 | 欧美怡红院视频| 欧美aaaaaa午夜精品| 精品国产免费视频| 国产不卡在线播放| 一个色在线综合| 欧美一区日本一区韩国一区| 久久国产成人午夜av影院| 欧美国产成人在线| 91精品欧美综合在线观看最新| 国产在线视视频有精品| 有码一区二区三区| 日韩一区二区不卡| 色www精品视频在线观看| 日韩精品福利网| 中文字幕一区二区三区精华液| 欧美日韩免费观看一区二区三区| 国产一区二区三区四区五区美女 | 久久99精品国产麻豆不卡| 中文字幕一区二区三区蜜月| 91精品国产欧美一区二区成人 | 国产激情精品久久久第一区二区| 亚洲精品免费在线| 国产亚洲欧美激情| 日韩欧美高清一区| 9191成人精品久久| 欧洲一区二区三区在线| 97精品电影院| 91免费视频网址| 国产精品一区二区三区网站| 男男成人高潮片免费网站| 亚洲免费色视频| 亚洲一区二区在线播放相泽| 国产精品久久久久久久浪潮网站| 久久亚洲二区三区| 日韩美女视频在线| 久久精品人人爽人人爽| 国产午夜精品一区二区| www日韩大片| 亚洲欧洲色图综合| 亚洲国产一区在线观看| 亚洲第一福利视频在线|