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

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

?? arith_decoder_mpeg4.asm

?? ADI公司出品的blackfin533芯片
?? 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     : 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;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
香蕉久久夜色精品国产使用方法| 99r国产精品| 福利一区二区在线| 欧美日韩精品一区二区| 国产婷婷色一区二区三区在线| 亚洲愉拍自拍另类高清精品| 国产sm精品调教视频网站| 欧美精品v国产精品v日韩精品| 中文字幕av在线一区二区三区| 蜜桃免费网站一区二区三区| 在线这里只有精品| 欧美国产激情一区二区三区蜜月| 欧美a级理论片| 欧美日韩精品久久久| 成人免费小视频| 国产盗摄精品一区二区三区在线| 欧美一区二区三区在线| 一区二区免费视频| 一本到不卡精品视频在线观看| 久久精品视频免费观看| 国产美女久久久久| 日韩欧美一区电影| 久久精品国产一区二区三 | 亚洲视频电影在线| 成人精品国产免费网站| 国产日韩欧美高清在线| 国产一区二区电影| 久久久久久久久免费| 狠狠色丁香婷婷综合久久片| 日韩欧美中文字幕一区| 亚洲综合一区在线| 欧美午夜精品久久久久久超碰| 日韩理论片在线| 色综合久久精品| 一级中文字幕一区二区| 欧洲精品视频在线观看| 亚洲一区二区三区四区在线免费观看 | 中文字幕一区二区三区在线播放| 国产精品正在播放| 欧美韩日一区二区三区| 波多野结衣欧美| 亚洲免费观看高清完整版在线 | 日韩欧美国产精品一区| 久久精品免费观看| 亚洲国产成人在线| 99国产精品久久久久久久久久| 亚洲私人黄色宅男| 欧美在线观看一区二区| 日本亚洲一区二区| 久久久久久电影| 91麻豆文化传媒在线观看| 亚洲综合色丁香婷婷六月图片| 7777精品伊人久久久大香线蕉的 | 亚洲免费观看高清| 欧美日韩aaa| 国产麻豆91精品| 亚洲欧美成人一区二区三区| 欧美日韩一区二区三区高清| 美腿丝袜亚洲综合| 中文字幕一区二区三区av| 欧美日韩视频一区二区| 国产在线看一区| 亚洲视频在线一区二区| 日韩午夜激情电影| 成人av动漫网站| 日韩福利电影在线观看| 精品不卡在线视频| 色哟哟日韩精品| 国产在线精品一区二区夜色| 亚洲日本va午夜在线电影| 91麻豆精品国产91久久久使用方法| 黄色精品一二区| 亚洲成人福利片| 久久一区二区三区四区| 欧美视频你懂的| 成人黄色软件下载| 麻豆视频一区二区| 亚洲免费色视频| 国产午夜亚洲精品午夜鲁丝片| 日本电影欧美片| 国产成人在线视频网站| 天天综合色天天综合色h| 国产女主播一区| 日韩一区二区麻豆国产| 91蝌蚪国产九色| 国产精品99久久久久| 午夜精品久久久久久久99樱桃 | 亚洲视频 欧洲视频| 精品电影一区二区| 欧美日韩精品三区| 91农村精品一区二区在线| 激情欧美日韩一区二区| 亚洲高清久久久| 中文字幕亚洲欧美在线不卡| 日韩三级视频在线看| 欧美日韩一级二级三级| 91亚洲国产成人精品一区二区三 | 在线中文字幕不卡| 成人aaaa免费全部观看| 国产一区二区伦理片| 天天操天天干天天综合网| 亚洲日本免费电影| 中文字幕亚洲综合久久菠萝蜜| 久久嫩草精品久久久久| 精品国产免费视频| 精品人在线二区三区| 日韩欧美国产高清| 日韩午夜在线播放| 欧美精品一二三区| 91精品国产色综合久久不卡电影 | 91久久香蕉国产日韩欧美9色| 成人免费av在线| 成人白浆超碰人人人人| www.久久久久久久久| 不卡的电影网站| 99久久99久久久精品齐齐| 成人免费av资源| 91丨九色丨黑人外教| 97久久人人超碰| 91成人看片片| 欧美精品一二三四| 日韩欧美美女一区二区三区| 欧美电影免费观看高清完整版在| 欧美一区二区福利视频| 精品久久久久av影院 | 国产成人免费视频网站高清观看视频| 国产真实乱子伦精品视频| 国产一区二区三区香蕉| 国产福利精品导航| 99久久国产免费看| 精品视频在线看| 欧美一级淫片007| 久久先锋影音av| 国产精品亲子伦对白| 亚洲美腿欧美偷拍| 天天综合色天天综合| 国产一区在线不卡| 91亚洲精华国产精华精华液| 欧美人动与zoxxxx乱| 精品国产99国产精品| 国产精品网站在线| 亚洲综合成人在线| 久久国产人妖系列| av一二三不卡影片| 91精品国产黑色紧身裤美女| 国产日韩亚洲欧美综合| 亚洲制服丝袜在线| 国产一区欧美日韩| 在线播放一区二区三区| 日韩欧美色综合网站| 国产精品久久久久久久浪潮网站| 一区二区三区四区精品在线视频| 日本成人在线不卡视频| 国产99久久久国产精品潘金网站| 一本到三区不卡视频| www成人在线观看| 亚洲一级二级三级在线免费观看| 久久99深爱久久99精品| 99久久婷婷国产综合精品 | 亚洲欧美在线高清| 日韩电影在线观看一区| 成人精品免费视频| 欧美一区二区在线视频| 1024成人网色www| 久久精品免费看| 欧美无乱码久久久免费午夜一区| 久久久www免费人成精品| 婷婷久久综合九色国产成人| www.视频一区| 久久色.com| 日本欧美一区二区在线观看| 色综合一区二区| 国产日产欧产精品推荐色| 日本少妇一区二区| 欧美丝袜第三区| **性色生活片久久毛片| 国产精品原创巨作av| 日韩一区二区三区视频在线| 亚洲一区二区三区在线播放| www.欧美精品一二区| 日本一区二区三区久久久久久久久不| 日本视频一区二区三区| 欧美日韩亚洲不卡| 一区二区三区四区精品在线视频| 成人av网站免费观看| 国产香蕉久久精品综合网| 精品影视av免费| 日韩一级片网址| 日本中文字幕不卡| 91精品国产综合久久久蜜臀图片| 亚洲一区二区三区免费视频| 99久久久免费精品国产一区二区 | 精品国产一区a| 免费在线看成人av| 欧美一区二区播放| 毛片不卡一区二区| 日韩情涩欧美日韩视频| 美女高潮久久久| 欧美成人aa大片| 国产一区二区三区日韩|