亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
波多野结衣亚洲| 青草av.久久免费一区| 精品国产三级a在线观看| 在线亚洲+欧美+日本专区| 国产99精品国产| 国产精品综合在线视频| 国产成人av电影| 成人一级片网址| 色哟哟日韩精品| 欧美日韩一区二区欧美激情| 欧美久久久影院| 欧美一级精品在线| 久久久久久久精| 日本一区二区不卡视频| 亚洲精品水蜜桃| 午夜欧美视频在线观看| 麻豆视频观看网址久久| 国产91在线看| 色综合激情久久| 制服丝袜亚洲色图| 欧美mv日韩mv亚洲| 亚洲人一二三区| 日日夜夜免费精品| 国产高清成人在线| 色婷婷久久久亚洲一区二区三区| 欧美三级电影网站| 久久这里只有精品6| 亚洲少妇30p| 免费欧美在线视频| 成人激情免费视频| 欧美一区二区日韩| 欧美极品另类videosde| 亚洲成人免费看| 国产成人久久精品77777最新版本| 一本久久a久久精品亚洲| 欧美二区三区91| 国产精品欧美经典| 蜜臀a∨国产成人精品| 99热99精品| 欧美成人一区二区三区| 亚洲日本成人在线观看| 精品一区二区三区免费| 欧美色国产精品| 中文字幕二三区不卡| 六月丁香婷婷久久| 色综合咪咪久久| 国产亚洲精品超碰| 免费在线观看视频一区| 91美女精品福利| 久久久99精品免费观看| 日韩国产在线一| 在线视频你懂得一区二区三区| 日韩免费看的电影| 亚洲午夜久久久| 91色乱码一区二区三区| 久久精品这里都是精品| 奇米精品一区二区三区在线观看一| 成人免费黄色在线| 精品欧美一区二区三区精品久久| 亚洲一级二级在线| 91视频国产资源| 日本一区二区三区国色天香 | 欧美精品国产精品| 亚洲精品午夜久久久| 成人91在线观看| 国产精品污www在线观看| 国产精品中文字幕日韩精品| 欧美一区二区成人| 日韩成人av影视| 欧美日韩精品一区二区| 亚洲国产日韩一级| 欧美日韩国产首页| 性感美女极品91精品| 欧美少妇xxx| 视频一区二区三区中文字幕| 欧美日韩一级大片网址| 亚洲一区在线视频| 欧美日韩一区二区在线观看视频 | 麻豆一区二区三| 精品成人一区二区三区| 久久99精品视频| 久久亚洲二区三区| 成人黄色国产精品网站大全在线免费观看| 精品国产乱码久久久久久牛牛| 久久国内精品自在自线400部| 日韩免费看的电影| 国产精品一二三区在线| 中文字幕在线观看一区| 91国偷自产一区二区使用方法| 亚洲人成影院在线观看| 欧美无乱码久久久免费午夜一区| 亚洲成人av在线电影| 日韩欧美成人一区| 粉嫩av亚洲一区二区图片| 中文字幕一区二区三区乱码在线| 91老司机福利 在线| 亚洲电影视频在线| 26uuu国产一区二区三区| www.亚洲激情.com| 婷婷开心激情综合| 国产日韩v精品一区二区| 96av麻豆蜜桃一区二区| 午夜欧美在线一二页| 久久蜜桃一区二区| 91福利精品视频| 久久精品久久综合| 亚洲欧美一区二区三区极速播放 | 欧美一级日韩一级| 黄页视频在线91| ...xxx性欧美| 4438亚洲最大| 99视频一区二区| 奇米影视一区二区三区| 亚洲国产精品t66y| 欧美精品色一区二区三区| 国产米奇在线777精品观看| 一区二区理论电影在线观看| 日韩精品中文字幕一区二区三区| 成人性色生活片| 视频一区二区中文字幕| 1区2区3区欧美| 精品盗摄一区二区三区| 在线观看av不卡| 成人黄色免费短视频| 精品亚洲免费视频| 亚洲国产欧美在线人成| 国产精品初高中害羞小美女文| 欧美大肚乱孕交hd孕妇| 91精品办公室少妇高潮对白| 国产成人av资源| 免费观看久久久4p| 亚洲影视在线播放| 亚洲三级在线免费观看| 2023国产一二三区日本精品2022| 欧美午夜不卡视频| 一本色道久久综合亚洲精品按摩| 成人毛片老司机大片| 精品亚洲国产成人av制服丝袜 | 国产精品一二一区| 日本女优在线视频一区二区| 亚洲免费伊人电影| 国产精品国产三级国产三级人妇| www国产成人免费观看视频 深夜成人网| 欧美人狂配大交3d怪物一区| 丰满岳乱妇一区二区三区| 精品一区二区三区在线观看国产| 日韩中文字幕亚洲一区二区va在线| 一区二区在线电影| 一区二区三区毛片| 一区二区在线观看视频| 一区二区三区在线免费播放 | 欧美日韩综合不卡| 欧美系列亚洲系列| 在线观看欧美精品| 欧美日韩一区二区三区不卡| 色哟哟日韩精品| 欧美日韩中文字幕一区| 在线欧美日韩国产| 欧美性受极品xxxx喷水| 在线观看日韩电影| 69av一区二区三区| 欧美一级艳片视频免费观看| 欧美一级片在线| 欧美成人精品1314www| 日韩区在线观看| 久久综合国产精品| 成人免费在线播放视频| 亚洲影院在线观看| 青青国产91久久久久久| 国产麻豆精品theporn| 国产激情视频一区二区三区欧美| 国产激情精品久久久第一区二区 | 国产成人日日夜夜| 99久久精品国产一区| 欧美在线综合视频| 欧美一区二区在线免费播放| 日韩女优电影在线观看| 国产人伦精品一区二区| 亚洲女同ⅹxx女同tv| 午夜欧美视频在线观看| 国产精品一区免费视频| 91丨porny丨最新| 欧美视频一区二| 欧美电视剧在线观看完整版| 欧美国产精品一区二区三区| 一级特黄大欧美久久久| 久久99久久精品欧美| 99久久婷婷国产综合精品电影| 色妞www精品视频| 欧美一区午夜视频在线观看| 欧美激情在线免费观看| 午夜视黄欧洲亚洲| 成年人网站91| 日韩欧美国产系列| 亚洲色图欧美激情| 韩国精品免费视频| 欧美巨大另类极品videosbest | 欧美日韩亚洲高清一区二区| 欧美大片在线观看一区二区| 亚洲精品美腿丝袜|