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

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

?? 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

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91网站在线播放| 日韩伦理电影网| 狠狠色2019综合网| www国产精品av| 国产精品亚洲一区二区三区妖精 | 一本大道久久a久久精品综合| 欧美国产精品一区| 成人18精品视频| 亚洲成人中文在线| 欧美xxxx在线观看| 国产高清视频一区| 亚洲人成网站在线| 正在播放亚洲一区| 国产精品88888| 国产精品不卡在线| 欧美日韩激情一区| 精品一区二区三区的国产在线播放| 精品久久久久一区二区国产| 国产成人免费视频| 亚洲一区二区精品久久av| 欧美麻豆精品久久久久久| 国产毛片精品视频| 亚洲精品高清视频在线观看| 欧美一区二区三区电影| 国产成人99久久亚洲综合精品| 亚洲女厕所小便bbb| 欧美变态tickling挠脚心| 成人sese在线| 六月丁香婷婷色狠狠久久| 国产精品乱码一区二区三区软件 | 99久久伊人精品| 五月天一区二区| 国产欧美精品一区| 欧美日韩国产欧美日美国产精品| 极品尤物av久久免费看| 亚洲一区在线观看免费观看电影高清| 日韩三级视频在线看| www.欧美日韩| 久久99久国产精品黄毛片色诱| 亚洲免费资源在线播放| 日韩免费观看高清完整版| 色婷婷av一区二区| 国产精品亚洲一区二区三区在线 | 毛片av一区二区三区| 国产精品护士白丝一区av| 欧美电影免费提供在线观看| 欧美综合视频在线观看| 不卡的av中国片| 久久99精品视频| 亚洲v中文字幕| 成人欧美一区二区三区视频网页| 精品国产免费一区二区三区香蕉| 欧美性受xxxx黑人xyx| 成人一级片网址| 黄色小说综合网站| 美美哒免费高清在线观看视频一区二区 | 中文字幕欧美一| 国产丝袜美腿一区二区三区| 4438成人网| 欧美亚洲国产一区在线观看网站| 成人丝袜18视频在线观看| 毛片av中文字幕一区二区| 青娱乐精品视频在线| 五月开心婷婷久久| 亚洲综合另类小说| 亚洲精品大片www| 亚洲精品午夜久久久| 自拍av一区二区三区| 国产精品系列在线| 久久久www成人免费毛片麻豆 | 国产欧美精品国产国产专区| 精品国产一区a| 日韩女优视频免费观看| 欧美一卡2卡三卡4卡5免费| 欧美男生操女生| 欧美一二三四在线| 日韩午夜在线播放| 欧美tickle裸体挠脚心vk| 精品日韩一区二区| 欧美精品一区二区高清在线观看 | 国产日本亚洲高清| 中文字幕高清不卡| 综合分类小说区另类春色亚洲小说欧美 | 欧美xingq一区二区| 日韩女优毛片在线| 久久嫩草精品久久久精品一| 国产欧美一区二区在线| 国产精品嫩草99a| 亚洲精品高清视频在线观看| 午夜精品一区二区三区电影天堂 | 久久伊人中文字幕| 中文字幕国产精品一区二区| 亚洲天堂成人在线观看| 亚洲精品视频在线| 日韩电影在线观看网站| 激情综合色综合久久综合| 成熟亚洲日本毛茸茸凸凹| 波多野结衣一区二区三区| 色婷婷激情久久| 日韩一区二区三区免费看 | 日韩电影在线一区| 国产乱码精品一区二区三区忘忧草 | 亚洲人成7777| 日本亚洲免费观看| 粉嫩高潮美女一区二区三区| 91网站最新地址| 欧美一区二区美女| 国产精品三级视频| 亚洲午夜电影在线| 国产一区二区三区日韩| 99re视频精品| 欧美一级电影网站| 国产精品久久久久久久久动漫| 亚洲一区二区综合| 国产综合久久久久久鬼色 | 亚洲国产精品久久人人爱| 国产在线不卡一区| 欧亚一区二区三区| 久久久不卡网国产精品二区| 一区二区日韩av| 国产米奇在线777精品观看| 在线精品视频一区二区| 久久久蜜臀国产一区二区| 亚洲综合av网| 国产精品自在欧美一区| 欧美日韩国产天堂| 亚洲国产激情av| 久久99精品国产麻豆婷婷洗澡| 91蝌蚪porny| 国产午夜亚洲精品不卡| 日本欧美在线观看| 91丨九色丨蝌蚪丨老版| 欧美精品一区二区久久婷婷| 亚洲成人一区在线| 色综合欧美在线视频区| 国产午夜精品一区二区| 免费在线观看成人| 欧美性极品少妇| 亚洲欧美日韩在线不卡| 国产一区二区三区久久久| 欧美日韩一区不卡| 亚洲视频在线一区二区| 顶级嫩模精品视频在线看| 欧美一区二区三区不卡| 亚洲国产欧美另类丝袜| 不卡影院免费观看| 国产日韩欧美亚洲| 国产真实乱子伦精品视频| 在线成人av网站| 亚洲国产精品久久人人爱蜜臀| 91免费精品国自产拍在线不卡| 久久青草欧美一区二区三区| 美女视频免费一区| 日韩一区二区精品葵司在线| 亚洲午夜久久久久中文字幕久| 色综合久久久久久久久| 亚洲欧美综合另类在线卡通| 成人做爰69片免费看网站| 国产午夜亚洲精品羞羞网站| 国产一区三区三区| 欧美精品一区二区三区很污很色的| 免费看黄色91| 欧美一区二区三级| 午夜成人免费电影| 91精品国产综合久久久久久久| 视频在线观看91| 欧美肥妇毛茸茸| 日韩电影在线免费看| 日韩一级二级三级精品视频| 日本大胆欧美人术艺术动态| 欧美一卡二卡在线观看| 久久99在线观看| 欧美精品一区二区精品网| 国产高清视频一区| 中文字幕一区二区三区在线观看| 97久久超碰精品国产| 玉米视频成人免费看| 欧美三级日本三级少妇99| 亚洲成人午夜电影| 日韩久久精品一区| 国产又粗又猛又爽又黄91精品| 国产精品婷婷午夜在线观看| 91在线porny国产在线看| 亚洲午夜在线观看视频在线| 7777精品伊人久久久大香线蕉最新版| 蜜芽一区二区三区| 国产肉丝袜一区二区| 91首页免费视频| 午夜电影久久久| 久久精品一区四区| 91免费版pro下载短视频| 亚洲国产精品久久人人爱| 日韩欧美亚洲国产另类| 国产精品一区二区91| 一区二区三区精密机械公司| 日韩情涩欧美日韩视频| 成人午夜大片免费观看| 性做久久久久久久久| 久久久久久日产精品| 色噜噜夜夜夜综合网|