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

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

?? arith_decoder_jpeg2000.asm

?? JPEG2000 ADI BLACKFIN 壓縮解壓程序
?? 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_JPEG2000.asm
Label Name      : __arith_decoder_JPEG2000
Version         :   2.0
Change History  :

                Version     Date          Author        Comments
                2.0	    01/09/2007    Arjun	        Tested with VDSP++4.5
							Compiler 7.2.3.2
		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         08/29/2001    Raghavendra   Original 

Description     : The compressed data CD and contexts are supplied to decoder 
                  and output will be a decision bit D either 0 or 1. The encoder
                  and decoder must use same set of contexts to get proper 
                  result.
                  Docoder decodes one binary decision at a time. After decoding 
                  the decision, decoder subtracts any amount from the compressed
                  data that the encoder added.

                  The  following structures are  used for arithmetic decoding. 
                  1.
                       struct  mqdec
                         {
                           int A;      -> interval register (range:0,75 <=A<1,5)
                           int C;      -> code register
                           int CT;     -> bit counter register
                           int B;      -> byte value
                           unsigned char *input;   -> array where compressed 
                                                      data to be read
                           unsigned char *out;     -> array where output is 
                                                      stored
                          }dec_reg;

                  2. struct contexts
                    {
                       int index;       -> index to probability estimation table
                       int mps;         -> MPS value for particular context.
                    } contexts[18];     -> array of contexts( 18 for JPEG 2000)

                  3. struct mqstates
                     {
                       int Qe;          -> value of probability of LPS
                       int NMPS;        -> Next index when MPS is coded
                       int NLPS;        -> Next index when LPS is coded
                       int SWITCH;      -> To change mps value when LPS is coded
                     }mqstates_s[47];

Assumptions     : 1. mqstate_s[47] table and   struct  mq_enc variable are in 
                     different banks.

                  2. mqstates_s[47] is initialized with probability values as 
                     specified in Table C-2 of Annex-C,ISO/IEC FCD15444-1:2000
                     (V1.0,16 March 2000)

                  3. Index and MPS values for each context is initialized before
                     starting encoder.

                  Note : Two 0xFF appended at the end of input bitstream for 
                  testing purpose(refer Annex D, section D.4.1 of ISO/IEC 
                  FCD15444-1:2000(V1.0,16 March 2000).

Prototypes      : void arith_decode_init(struct mqdec *, unsigned char *input , 
                                        unsigned char *output);

                  void  arith_decoder_JPEG2000(unsigned char CX,struct mqdec *, 
                                     struct mqstates *,struct contexts*);

                  void  arith_decode_renorme(struct mqdec*);

                  void  arith_decode_bytein(struct mqdec*);

Calling sequence : Arith_decode_init function is called for initialization. 
                   arith_decoder_JPEG2000 function is called for each context.
                   C implementation of calling sequence is explained below.

                   main() or func()
                   { 
                      int i;
                      struct enc_reg mq_enc;
                        .
                        .
                        .
                       arith_decode_init(&mq_enc,&arrayOut[0]);
                      for(i=0;i<NUMBER_OF_CONTEXT;i++)
                      {
                        CX=context_input[i];
                        arith_decoder_JPEG2000(CX, *mq_enc, mqstates,contexts);
                      }
                       
                      .
                      .
                   }

Performance     :
 
                Code Size :
                    arith_decode_init       : 68  bytes
                    arith_decode_bytein     : 104 bytes
                    arith_decode_renorme    : 64  bytes
                    arith_decoder_JPEG2000  : 228 bytes
                                       
                                                      Best case    Worst case
                  Cycle count : arith_decode_init      : 46           46  cycles
                                arith_decoder_JPEG2000 : 42           201 cycles

                  Cycle count mentioned is for a particular input sequence.
                  As the algorithm is data dependant, Cycle count may vary.

                  For e.g ,Cycle count for 5760 output symbols which take 
                  23 bytes as input is 288161 (i.e 46.61 cycles per output 
                  symbol).

Reference       : Annex - C Arithmetic entropy encoding (JPEG-2000)
                  ISO/IEC FCD15444-1:2000(V1.0,16 March 2000)

Registers used  : R0-R3, R6, R7, I0, M0, L0, P0-P2, P5.
*******************************************************************************/
.section    L1_code;
.global     __arith_decoder_JPEG2000;
.align      8;
    
__arith_decoder_JPEG2000:         
    R0 = R0 << 3 || P2 = [SP+12];
    P0 = R0;                // Offset to fetch current context
                           // Address of contexts 
    L0 = 0;
    I0 = R2;                // address of mqstates values
    [--SP] = P5;
    P5 = R1;                // address of structure mqdec
    P0 = P2+P0;             // Point to current context
    R2 = [P0++];            // get index value from current context
    R2 = R2 << 4 || R3 = [P0--];
                            // get MPS value of current context 
    M0 = R2;
    [--SP] = (R7:6);        // Push R7:6
    P2 = R1;             
    [--SP] = RETS;          // Push RETS reg
    R2 = [P5] || R0 = [I0++M0];
                            // fetch A register, dummy fetch to increment the 
                            // pointer 
    R1 = R2-R2(NS) || R7 = [I0++];
                            // clear R1 and fetch Qe value 
    R2 = R2-R7(NS) || R6 = [P5+4];
                            // do A-Qe and fetch C register 
    R1 = PACK(R1.H,R6.H) || NOP;   // get C high register value
    CC = R1<R7;             // compare Chigh < Qe
    IF CC JUMP LPS_EXCHANGE;// if true code as LPS-EXCHANGE
    R1 = R1-R7(NS);         // Chigh = Chigh - Qe
    R1 = PACK(R1.L,R6.L) || [P5] = R2;
                            // store A register value 
    [P5+4] = R1;            // store C register
    P1 = [P5+20] || R0 = [I0++];
                            // address of output array 
    CC = BITTST(R2,15);     // check if a> 0x8000
    IF CC JUMP D_EQ_MPS;    // if true jump to D_EQ_MPS

/************** MPS_EXCHANGE ********************/
    CC = R2<R7;             // compare A< QE
    IF CC JUMP CHECK_SWITCH;// if true jump to CHECK_SWITCH
    B[P1++] = R3;           // store output D =  = mps(CX)
    [P5+20] = P1;           // get value NMPS index
    [P0++] = R0;            // store next index as NMPS value for present 
                            // context
    JUMP CALL_RENORME;
    
CHECK_SWITCH:
    R2 = R3 << 0 || R0 = [I0++];
                            // dummy fetch to increment I0 
    BITTGL(R2,0);           // complement MPS value
    R1 = [I0++] || [P0++] = R0;
                            // store NLPS and fetch SWITCH value 
    CC = R1 == 1;         // check if SWITCH flag is set
    R0 = CC;
    B[P1++] = R2;
    [P5+20] = P1;
    R3 = R0^R3;             // XOR the result to compliment MPS value if SWITCH
                            // flag is set
    [P0] = R3;              // store MPS value
    JUMP CALL_RENORME;
    
D_EQ_MPS:
    RETS = [SP++];          // pop RETS register 
    B[P1++] = R3;           // store output bit  = mps(CX)
    [P5+20] = P1;           // store address where next output to be stored
    (R7:6) = [SP++];
    P5 = [SP++];            // pop R7:6,P5
    RTS;
    NOP;                    // To remove stalls occurring on the board

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久综合国产精品| 国产三级欧美三级日产三级99| 欧美日韩成人综合在线一区二区| 日韩视频一区在线观看| 欧美激情一区二区三区不卡| 欧美国产精品专区| 日本aⅴ免费视频一区二区三区 | 欧美sm美女调教| 久久久久免费观看| 日本欧美在线观看| 色菇凉天天综合网| 中文字幕在线观看一区二区| 久久精品国产亚洲a| 欧美日韩一区二区在线观看视频 | 欧美一区二区女人| 一区二区三区免费网站| 国内久久精品视频| 日韩欧美亚洲另类制服综合在线| 一区二区三区视频在线看| 国产99久久久国产精品免费看| 欧美v日韩v国产v| 日韩中文字幕1| 在线观看91av| 婷婷综合另类小说色区| 欧美日韩国产小视频| 亚洲综合视频网| 欧美色视频在线| 一区二区三区蜜桃网| 欧洲精品在线观看| 日韩欧美久久一区| 国产一区二区三区四| 久久免费视频一区| 成人午夜免费视频| 亚洲欧洲精品一区二区精品久久久 | 国产又黄又大久久| 日韩精品中文字幕一区二区三区 | 大白屁股一区二区视频| 国产性色一区二区| 成人免费的视频| 综合电影一区二区三区 | 亚洲成人一二三| 欧美日韩国产三级| 蜜桃精品视频在线观看| 亚洲精品一区二区三区福利| 激情五月婷婷综合网| 中文字幕av不卡| 色狠狠色噜噜噜综合网| 亚洲第一久久影院| 欧美tk—视频vk| 99精品国产一区二区三区不卡| 亚洲伊人色欲综合网| 欧美一区二区三区在线视频| 久久se精品一区二区| 国产精品麻豆欧美日韩ww| 色综合久久99| 麻豆精品国产传媒mv男同| 国产午夜亚洲精品不卡| jizzjizzjizz欧美| 亚洲国产乱码最新视频| 精品久久久久香蕉网| av不卡在线观看| 亚洲大片精品永久免费| 日韩免费福利电影在线观看| 从欧美一区二区三区| 一区二区三区欧美视频| 日韩欧美成人午夜| jizz一区二区| 久久不见久久见中文字幕免费| 136国产福利精品导航| 91精品麻豆日日躁夜夜躁| 国产一区二区三区高清播放| 亚洲女同一区二区| 精品黑人一区二区三区久久| 色综合激情五月| 激情伊人五月天久久综合| 亚洲乱码国产乱码精品精98午夜 | 色综合天天综合网国产成人综合天 | 综合久久给合久久狠狠狠97色 | 麻豆精品在线播放| 自拍偷自拍亚洲精品播放| 欧美一区中文字幕| 99国产精品久久久久| 日本网站在线观看一区二区三区| 欧美国产综合一区二区| 欧美日本视频在线| 91小视频在线免费看| 捆绑调教一区二区三区| 专区另类欧美日韩| 精品国产欧美一区二区| 91搞黄在线观看| 成人教育av在线| 国产一区二区三区在线观看免费 | 国产成人a级片| 天堂资源在线中文精品| 最近中文字幕一区二区三区| 亚洲精品一区二区精华| 91精品国产综合久久久久久| 色哟哟亚洲精品| 成人app网站| 国产精品夜夜嗨| 欧美96一区二区免费视频| 一区二区三区国产| 亚洲视频资源在线| 国产精品福利在线播放| 国产色产综合色产在线视频| 日韩免费成人网| 日韩一级二级三级| 91麻豆精品国产91久久久久久久久| 成人免费视频国产在线观看| 精品一区二区影视| 久草在线在线精品观看| 日日嗨av一区二区三区四区| 亚洲一区二区三区四区在线| 亚洲欧美日韩国产另类专区 | 日韩极品在线观看| 亚洲大型综合色站| 丝袜诱惑亚洲看片| 日韩成人伦理电影在线观看| 五月天精品一区二区三区| 天天操天天综合网| 午夜精品久久久久久久久久久 | 亚洲图片欧美色图| 午夜影院久久久| 人妖欧美一区二区| 精品一区二区三区欧美| 国产一区999| 不卡一区中文字幕| 91精品办公室少妇高潮对白| 日本高清免费不卡视频| 欧美在线一区二区三区| 午夜精品免费在线观看| 欧美性xxxxxxxx| 欧美一级日韩一级| 久久婷婷国产综合精品青草| 精品国内二区三区| 国产日韩欧美一区二区三区乱码 | 国产成人免费在线观看| 国产高清无密码一区二区三区| 丁香亚洲综合激情啪啪综合| 91亚洲精品久久久蜜桃| 欧美日韩国产一级| 久久综合色天天久久综合图片| 中文字幕av一区二区三区高 | 欧美日韩一级二级三级| 日韩一级二级三级精品视频| 国产亚洲欧美日韩日本| 亚洲欧美激情插| 日本午夜精品视频在线观看| 国产精品一区二区三区99| 91色porny在线视频| 91精品欧美综合在线观看最新| 久久久.com| 午夜欧美在线一二页| 国产乱一区二区| 91电影在线观看| 26uuu成人网一区二区三区| 自拍偷拍亚洲欧美日韩| 另类小说视频一区二区| 成人手机在线视频| 日韩午夜电影av| 亚洲人成网站影音先锋播放| 免费在线成人网| 在线观看视频一区二区| 久久这里只有精品视频网| 亚洲精选免费视频| 国产剧情在线观看一区二区| 欧美制服丝袜第一页| 中文字幕免费一区| 日本亚洲电影天堂| 欧美影片第一页| 国产精品欧美一级免费| 奇米精品一区二区三区四区| 色综合天天综合给合国产| 久久这里都是精品| 免费日韩伦理电影| 欧美日韩免费视频| 亚洲人精品午夜| 高清在线观看日韩| 日韩欧美一二三区| 轻轻草成人在线| 欧美三级中文字幕在线观看| 国产精品麻豆久久久| 国产成人精品一区二| 精品国产网站在线观看| 午夜精品久久久久久久| 91高清视频在线| 一区二区三区欧美日韩| av在线免费不卡| 国产精品久久久久久久岛一牛影视 | 欧美激情一区二区三区不卡| 久久激五月天综合精品| 91精品国产91久久久久久最新毛片| 亚洲一区在线观看网站| 91在线精品秘密一区二区| 欧美国产精品中文字幕| 国产精品夜夜嗨| 国产精品少妇自拍| 成人午夜碰碰视频| 国产精品美女久久久久久| 成人免费看视频|