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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? arith_decoder_mpeg4.asm

?? ADI公司出品的blackfin533芯片
?? ASM
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/*******************************************************************************
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     : arith_decoder_mpeg4.asm
Label Name      : __arith_decoder_mpeg4
Version         :   1.3
Change History  : 

                Version     Date          Author        Comments
                1.3         11/18/2002    Swarnalatha   Tested with VDSP++ 3.0
                                                        compiler 6.2.2 on 
                                                        ADSP-21535 Rev.0.2
                1.2         11/13/2002    Swarnalatha   Tested with VDSP++ 3.0
                                                        on ADSP-21535 Rev.0.2                                     
                1.1         03/20/2002    Raghavendra   Modified to match
                                                        silicon cycle count
                1.0         09/11/2001    Raghavendra   Original 

Description     : Arithmetic decoding contains four main steps
                  1. Removal of stuffed bits.
                  2. Initialization which is performed prior to the decoding of 
                     the first symbol.
                  3. Decoding of symbol themselves. The decoding of each symbol 
                     may be followed by a re-normalization step.
                  4. Termination which is performed after the decoding of the 
                     last symbol.

                  The least probable symbol LPS is defined as the symbol with 
                  least probability. If both probabilities are equal to half 
                  (i.e 0x8000), then '0' symbol is considered as least probable.
                  In initialization lower bound L is set to zero and range 
                  register R is set to 0x7fffffff. Encoder will do bit stuffing 
                  depending on the following condition in order to avoid start 
                  code emulation.
                  1's are stuffed into the bitstream whenever there are too many
                  successive 0's. If first 3(MAX-HEADING) bits are 0's then 1 is
                  transmitted and after MAX_HEADING th 0. If 10(MAX_MIDDLE) or 
                  more 0's are sent successively a 1 is inserted after the 
                  MAX_MIDDLE th 0. If the number of trailing 0's is larger than
                  2(MAX_TRAILING) then a 1 is appended. These stuffed bits are 
                  removed properly while decoding.
                  The range associated with least probable symbol(LPS) is simply
                  computed as R*pLPS. 
                    where R ->16 most significant bits of Range register value
                    pLPS -> probability of LPS symbol.
                  If R value is less than QUATER 1/4(i.e 0x40000000)then 
                  re-normalization is performed. In this procedure both lower 
                  value L and range R is doubled till R is greater than QUATER.

                  The following structure is used :
                  struct arcodec {
                  UInt L;              -> 32bit fixed point register. Contains 
                                          the lower bound of the interval
                  UInt R;              -> 32bit fixed point register. Contains 
                                          the range of the interval
                  UInt V;              -> Contains the value of arithmetic code 
                                          value. It is always larger than or 
                                          equal to L and less than R value.
                  UInt arpipe; 
                  Int bits_to_follow;  -> follow bit count
                  Int first_bit;       -> flag to check first bit
                  Int nzeros;          -> counter to count consecutive zeros
                  Int nonzero;  
                  Int nzerosf;        
                  Int extrabits;
                  Int mh;              ->  to hold MAX_HEAD
                  Int mm;              ->  to hold MAX_MIDDLE
                  Int mt;              ->  to hold MAX_TRAIL
                  unsigned char *in;   -> address of input compressed data array
                  }; typedef struct arcodec ArCoder;  

                  UInt -> unsigned integer 
                  Int -> interger 

Assumption      : Both input and output arrays are unsigned character array.
                  Each bit is stored in one location.
  
Prototype       : void StartArDecoder(ArDecoder *decoder,unsigned char *in);
                  void arith_decoder_mpeg4(int co,ArDecoder *decoder);
                  void decode_renormlise(Arcoder *decoder);
                  void  AddNextInputBit(ArDecoder *decoder);
                  void StopArDecoder( ArDecoder *decoder);

Calling sequence: Decoder is initialised by calling StartArDecoder. 
                  arith_decoder_mpeg4 function is called for each context
                  which returns one bit as output. Finally _StopArcoder 
                  function is called.

                   Following C code explains the calling sequence.
                     
                  main()
                   { 
                      int i,j,k,C;
                      struct ArCoder coder;
                            .
                            .
                            .
                        _StartArDecoder(coder,&bit_input[0]) ;
                            // bit_input is address of input array 
                        for(i=0;i<NO_OF_PAIR;i++)
                         { 
                           j=arrayIn0_C[i];
                           C=intra_prob[j];
                            // probability of '0' fetched from table 
                           k=_arith_decoder_mpeg4(C,coder);
                            // returns one bit output for each call 
                           output[i]=k;
                         }
                        _StopArDecoder(coder); 
                      .
                      .
                  }

Performance  :
            Code Size    :  
                            StartArDecoder      : 154 bytes
                            arith_decoder_mpeg4 :  94 bytes
                            decode_renormlise   : 124 bytes
                            AddNextInputBit     : 126 bytes
                            StopArDecoder       :  98 bytes

            Cycle count  :
                                            Best case         worst case
                  StartArDecoder        :       659             659 cycles
                  arith_decoder_mpeg4   :       66              539 cycles
                  StopArDecoder         :       103             103 cycles

As the cycle count depends on the data, the above mentioned cycle counts are for
Test case 1 in the C file arith_decoder_mpeg4.c

Cycle count for 512 output bits which takes  2 bits as input is 
36374 Cycles(71.04 cycles per output symbol),
whereas Cycle count for 512 output bits which takes 472 bits as input is 
57040 Cycles(111.40 cycles per output symbol).

Reference       : Appendix G and Appendix F of MPEG4 Video Verification 
                  model(V16.0).
*******************************************************************************/

/******************************************************************************
Prototype : void StartArDecoder(ArDecoder *decoder,unsigned char *in);

In this procedure lower bound register (decoder->L) is set to zero, 
the range register R(deocder->R) is to 0x7fffffff. The first 31 bits are read in
decoder->V register.

Registers used : R0-R7, P0-P2, P5, LC0.
*******************************************************************************/
#define MAXHEADING_ER 3
#define MAXMIDDLE_ER 10
#define MAXTRAILING_ER 2

.section               L1_code;
.global              __StartArDecoder;
.align                         8;
    
__StartArDecoder:

    P0 = R0;                // Address of structure decoder
    [--SP] = (R7:4,P5:5);   // push R7:4,P5 register
    P1 = 31;                // set loop counter to read 31 bits
    R0 = MAXHEADING_ER;
    R5 = MAXMIDDLE_ER;
    R2 = 1;               
    R1 = R1-R2(NS)||[P0+44] = R5;
                            // set decoder->mm to maximum zero count 
    [P0+52] = R1;           // Address of input array
    R3 = R1-R1(NS)||[P0+32] = R0;
                            // set decoder->mh to MAXHEADING_ER 
    [P0+40] = R0;              
    R0 = MAXTRAILING_ER;
    R6 = R1-R1(NS)||[P0+48] = R0;
                            // set decoder->mt to MAXTRAILING_ER 
    P5 = [P0+52];           // get address of input array
     R7 = R1-R1(NS)||[P0+36] = R3;
                            // clear decoder-> extra-bits 

    LSETUP(LOAD_31BITS_ST,LOAD_31BITS_END)LC0 = P1;
   
    P1 = 1;
LOAD_31BITS_ST:
        P2 = P1+P5;         // address to fetch a bit
        R7 = R7<<1||R0 = B[P2](Z);
                            // left shift V register by 1 and fetch next bit 
        R7 = R7+R0(NS)||R4 = [P0+32];
                            // add that bit to V register and fetch decoder->
                            // nzerof register 
        CC = R0 == 0;       // check if bit == 0
        IF CC R6 = R2;
        R4 = R4-R6(NS)||R1 = [P0+36];
                            // if true decrement decoder->nzerof by one 
        CC = R4 == 0;       // check if decoder->nzerof is zero
        R6 = CC;              
        IF CC R3 = R2;      // if true increment decoder->extrabit by one
        R1 = R1+R3;
        BITTGL(r6,0);
        R6 = R6&R0;         // check whether to set decoder->nzerof to 
                            // MAXMIDDLE( i.e 10)
        CC = R6 == 0;
        IF CC R5 = R4;            
        P2 = R1;
        P1 += 1;            // increment the pointer to fetch next bit
        R6 = R1-R1(NS)||[P0+36] = R1;
        R3 = R2-R2(NS)||[P0+32] = R5;
                            // store decoder->nzerof 
        R5 = MAXMIDDLE_ER;
LOAD_31BITS_END:
        P1 = P1+P2;         // offset to fetch next bit
    [P0+8] = R7;            // store first 31 bits in decoder->V register
    [P0] = R6;              // Clear decoder->L register
    [P0+16] = R6;           // clear decoder->bits-to-follow register
    [P0+12] = R7;           // set decoder->arpipe to decoder->V register
    [P0+28] = R6;           // clear decoder->nonzero register
    R0 = [P0+40];
    BITSET(R3,31);          
    R3 += -1;
    [P0+24] = R0; 
    [P0+4] = R3;            // set decoder->R register to 0x7fffffff.
    (R7:4,P5:5) = [SP++];   // pop R7:4,P5
    RTS;
    NOP;
__StartArDecoder.end:    
/******************************************************************************
Prototype : void arith_decoder_mpeg4(int co,ArDecoder *decoder);
    co-> probability of '0' symbol

In this procedure, probability of symbol '1' is calculated using probability of 
symbol '0'. If probability of symbol '1' is greater than probability of symbol
'0' then '0' is the least probable symbol(LPS), else '1' is LPS. Range of LPS 
symbol(rLPS) is calculated by multiplying higher 16 bit of range register(R) and
probability of LPS (CLPS). The interval(L,L+R) is split into two 
intervals(L,L+R-rLPS) and (L+R-rLPS,R). If decoder->V is in later interval then 
decoded symbol equals to LPS. Otherwise decoded symbol is opposite of LPS. The 
interval (L,R) is then reduced to the sub interval in which decoder->V lies. 
After the new interval has been computed, the new range R might be smaller than 
0x40000000(QUATER).If so renormalization is carried out.

Registers used : R0-R3, R5-R7, P0-P2.
*******************************************************************************/
.section               program;
.global        __arith_decoder_mpeg4;
.align                      8;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产日韩精品一区二区三区| 爽好久久久欧美精品| 国产精品成人免费| 亚洲午夜影视影院在线观看| 久久成人综合网| av不卡一区二区三区| 欧美日韩日本视频| 久久久久综合网| 亚洲精品视频自拍| 久久成人久久鬼色| 99re热这里只有精品视频| 这里只有精品99re| 国产精品麻豆视频| 免费久久99精品国产| 99精品久久99久久久久| 欧美一区二区三区四区久久| 欧美国产一区二区在线观看| 亚洲成人综合视频| 成人精品国产福利| 欧美一区二区三区四区高清| 亚洲视频在线一区观看| 裸体健美xxxx欧美裸体表演| 99精品视频在线观看| 日韩欧美一级二级三级| 亚洲天堂成人在线观看| 久久电影网电视剧免费观看| 在线亚洲一区观看| 亚洲国产精品成人久久综合一区 | 国产sm精品调教视频网站| 欧洲一区二区三区免费视频| 久久综合九色综合久久久精品综合| 国产精品免费视频网站| 久久99久久久久| 欧美怡红院视频| 中文字幕一区三区| 国产在线视频一区二区| 欧美在线观看一区二区| 国产欧美一区二区三区网站| 日本va欧美va欧美va精品| 色伊人久久综合中文字幕| 久久久精品黄色| 免费观看在线综合色| 欧美性videosxxxxx| 国产日韩视频一区二区三区| 免费观看在线综合| 欧美日韩一区二区在线视频| 中文字幕日本不卡| 成人小视频在线| 精品第一国产综合精品aⅴ| 午夜电影网一区| 色综合久久中文字幕| 国产精品久久国产精麻豆99网站| 久久99国内精品| 日韩三级在线观看| 日韩精品色哟哟| 欧美在线免费播放| 一区二区三区免费在线观看| 成人午夜视频免费看| 久久久久久久久久久久电影| 美腿丝袜亚洲三区| 欧美一区二区三区思思人| 亚洲国产wwwccc36天堂| 欧美性受xxxx| 亚洲一区免费在线观看| 色综合久久久久综合体桃花网| 中文字幕日本不卡| 成人h版在线观看| 国产精品美女久久久久高潮| 国产99久久久精品| 国产欧美精品一区二区三区四区 | 国产精品丝袜一区| 国产成a人无v码亚洲福利| 国产欧美精品日韩区二区麻豆天美| 黄页视频在线91| 337p粉嫩大胆色噜噜噜噜亚洲| 蜜臀久久99精品久久久久宅男| 在线播放欧美女士性生活| 日本在线不卡一区| 精品欧美久久久| 国产美女在线精品| 欧美国产日韩a欧美在线观看| 国产成人8x视频一区二区 | 成人av在线网站| 国产精品女上位| 91色九色蝌蚪| 亚洲一卡二卡三卡四卡无卡久久| 欧美视频一区二区三区在线观看| 午夜电影网亚洲视频| 日韩视频在线一区二区| 麻豆91精品91久久久的内涵| 久久精品一区八戒影视| 成人一级片网址| 亚洲免费av观看| 欧美乱妇23p| 久久电影网站中文字幕| 国产情人综合久久777777| k8久久久一区二区三区 | 777午夜精品视频在线播放| 免费高清在线视频一区·| 久久亚洲精品小早川怜子| 懂色av中文一区二区三区| 亚洲视频在线一区| 欧美另类z0zxhd电影| 蜜臀久久99精品久久久久久9| 国产亚洲美州欧州综合国| 一本色道久久综合狠狠躁的推荐 | 91精品国产91久久综合桃花| 久久国产精品色婷婷| 中文子幕无线码一区tr| 91久久精品一区二区二区| 日本aⅴ免费视频一区二区三区 | 国产美女精品人人做人人爽| 亚洲日本免费电影| 91精品国产一区二区三区蜜臀 | 中文在线一区二区| 欧美日韩在线不卡| 国产精品夜夜嗨| 亚洲在线视频一区| 久久久亚洲精品石原莉奈| 色一区在线观看| 久久99精品久久久久久| 亚洲欧美国产高清| 日韩欧美国产一区在线观看| www.成人在线| 美女视频一区在线观看| 中文字幕一区二区三区精华液 | 日韩av成人高清| 中文字幕+乱码+中文字幕一区| 欧美日韩国产色站一区二区三区| 国产一区激情在线| 亚洲一区二区美女| 国产视频在线观看一区二区三区 | 丝袜a∨在线一区二区三区不卡| 久久精品视频一区二区三区| 欧美丝袜丝nylons| 成人免费毛片app| 青青青爽久久午夜综合久久午夜| 国产精品盗摄一区二区三区| 欧美成人免费网站| 欧美三级在线看| 波多野结衣欧美| 国产中文一区二区三区| 亚洲成av人片在www色猫咪| 国产精品国产自产拍高清av王其 | 久久99精品久久久久久久久久久久| 亚洲激情av在线| 国产精品日韩成人| 欧美精品一区二区三| 欧美精品久久久久久久久老牛影院| 成人激情电影免费在线观看| 激情综合一区二区三区| 亚洲成人综合视频| 亚洲美女屁股眼交3| 中文乱码免费一区二区| 欧美精品一区二区三区在线| 6080日韩午夜伦伦午夜伦| 在线亚洲一区二区| av电影在线不卡| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 天堂成人国产精品一区| 日韩码欧中文字| 国产精品美女一区二区| 久久久影视传媒| 久久蜜臀精品av| 欧美tickling挠脚心丨vk| 欧美一区二区视频在线观看2020 | 五月激情丁香一区二区三区| 亚洲色图欧美在线| 国产精品女同一区二区三区| 国产欧美一区二区三区在线看蜜臀| 亚洲精品在线免费播放| 精品国产1区2区3区| 日韩亚洲欧美高清| 欧美一区日韩一区| 91麻豆精品久久久久蜜臀| 欧美日韩不卡视频| 欧美日韩的一区二区| 精品视频全国免费看| 在线视频一区二区三| 欧美亚日韩国产aⅴ精品中极品| 色婷婷国产精品综合在线观看| 91看片淫黄大片一级在线观看| proumb性欧美在线观看| 97国产精品videossex| 成人国产精品免费观看动漫| 国产剧情av麻豆香蕉精品| 国产麻豆91精品| 国产精品18久久久久久久久| 国产做a爰片久久毛片| 国内精品视频666| 国产一区二区调教| 国产成人亚洲综合色影视| 国产高清精品在线| 成人h动漫精品| 一本久道久久综合中文字幕 | 亚洲高清不卡在线| 丝袜美腿高跟呻吟高潮一区| 日本成人在线网站| 久久精品99国产精品| 国产精品白丝jk黑袜喷水|