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

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

?? arith_decoder_jpeg2000.asm

?? 基于adi公司 blackfin533 dsp的JPEG 2000的解碼程序,以C語言和匯編編寫
?? ASM
?? 第 1 頁 / 共 2 頁
字號(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_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

/********************** LPS_EXCHANGE    ****************************/

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91蜜桃在线免费视频| 一区二区三区精品视频| 狠狠色狠狠色综合日日91app| 欧美精品在线视频| 首页综合国产亚洲丝袜| 91精品国产综合久久福利| 日本欧美大码aⅴ在线播放| 6080午夜不卡| 蜜乳av一区二区三区| 日韩欧美一级二级| 国产一区二区免费在线| 欧美激情一二三区| 在线观看av一区| 日本亚洲最大的色成网站www| 日韩免费看的电影| www.色精品| 亚洲在线视频免费观看| 精品国产青草久久久久福利| 成人性生交大片免费看在线播放| 1024成人网| 6080国产精品一区二区| 国产成人在线色| 亚洲一区二区三区视频在线播放 | 高清日韩电视剧大全免费| 中文字幕中文字幕一区| 欧美久久久久久久久久| 国产综合色在线| 国产欧美日韩中文久久| 精品视频在线看| 日韩高清不卡一区二区三区| 精品国产一二三区| 成人激情开心网| 洋洋av久久久久久久一区| 日韩一卡二卡三卡国产欧美| 国产主播一区二区| **性色生活片久久毛片| 欧美日韩一区二区在线观看视频 | 久久99久久精品| 欧美日韩国产三级| 日本中文一区二区三区| 久久蜜桃av一区二区天堂| 91首页免费视频| 日本免费新一区视频| 中文字幕乱码一区二区免费| 欧美三级午夜理伦三级中视频| 毛片av中文字幕一区二区| 国产精品素人一区二区| 在线成人免费视频| 成人在线视频首页| 日韩av一级片| 综合欧美一区二区三区| 欧美成人性战久久| 欧美在线观看视频在线| 国产美女精品一区二区三区| 亚洲高清免费观看高清完整版在线观看| 日韩欧美国产一区在线观看| 91尤物视频在线观看| 老司机精品视频一区二区三区| 中文字幕一区二区三区在线不卡 | 亚洲va欧美va人人爽| 国产亚洲成av人在线观看导航| 精品视频一区三区九区| voyeur盗摄精品| 麻豆久久久久久久| 一区二区三区91| 国产精品无人区| 日韩一级欧美一级| 欧美性受xxxx黑人xyx性爽| 国产精品99久久久久久久vr| 午夜电影久久久| 亚洲精品国产a久久久久久| 国产清纯在线一区二区www| 日韩一区二区三区视频在线观看 | 欧美精选一区二区| 色婷婷激情综合| 成人中文字幕在线| 国产精品一二二区| 国内成人自拍视频| 免费在线观看视频一区| 亚洲大尺度视频在线观看| 国产精品成人在线观看| 久久久噜噜噜久久人人看 | 欧美乱熟臀69xxxxxx| 99riav久久精品riav| 国产凹凸在线观看一区二区| 经典三级一区二区| 麻豆精品视频在线| 欧美a级一区二区| 婷婷成人激情在线网| 亚洲成a人片在线观看中文| 一区二区三区精品| 亚洲国产cao| 一区二区三区**美女毛片| 一区二区三区四区精品在线视频| 国产精品乱码一区二区三区软件 | 成人午夜av电影| 成人爽a毛片一区二区免费| 国产成人精品综合在线观看| 国产裸体歌舞团一区二区| 国产毛片精品一区| 国产精品资源网站| 成人性生交大片免费看中文网站| 国产99久久久国产精品| 成人h精品动漫一区二区三区| 成人精品小蝌蚪| 99在线精品视频| 日本道色综合久久| 欧美日韩一区 二区 三区 久久精品| 欧美一区二区三区系列电影| 精品日韩欧美在线| 国产精品国产a级| 亚洲卡通欧美制服中文| 亚洲一二三区在线观看| 日韩国产精品久久久久久亚洲| 日本午夜一本久久久综合| 狠狠色狠狠色综合日日91app| 国产宾馆实践打屁股91| 色吧成人激情小说| 一本色道**综合亚洲精品蜜桃冫| 粉嫩aⅴ一区二区三区四区五区| 91福利在线观看| 在线视频你懂得一区二区三区| 在线播放中文字幕一区| 久久久久久99精品| 中文字幕一区二区三区乱码在线 | 亚洲欧洲三级电影| 亚洲精品成人悠悠色影视| 天天影视网天天综合色在线播放 | 日韩免费观看高清完整版| 国产欧美精品一区二区三区四区| 国产精品欧美久久久久无广告| 亚洲午夜三级在线| 黄一区二区三区| 91在线观看一区二区| 欧美麻豆精品久久久久久| 国产日韩欧美综合一区| 亚洲国产一二三| 国产精品99久久久| 欧美日韩国产另类不卡| 中文字幕欧美国产| 免费在线观看一区| 色一情一乱一乱一91av| 欧美一卡2卡3卡4卡| 亚洲精品videosex极品| 国产米奇在线777精品观看| 欧美三级中文字| 国产精品日日摸夜夜摸av| 奇米影视在线99精品| 91麻豆成人久久精品二区三区| 精品美女一区二区| 亚洲va中文字幕| 99精品国产热久久91蜜凸| 欧美xxxxx牲另类人与| 一区二区三区日韩欧美| 国产91精品免费| 日韩一区二区三区免费看| 亚洲综合网站在线观看| 成人影视亚洲图片在线| 精品少妇一区二区三区在线视频| 亚洲人成人一区二区在线观看| 香蕉影视欧美成人| 色婷婷激情综合| 亚洲女厕所小便bbb| 国产麻豆精品久久一二三| 日韩三级高清在线| 亚洲国产成人高清精品| 色综合久久综合网97色综合 | 久久久.com| 麻豆久久久久久久| 在线免费观看日本欧美| 久久美女艺术照精彩视频福利播放| 久久精品国产精品亚洲综合| 在线不卡欧美精品一区二区三区| 亚洲一区二区在线免费看| 91在线无精精品入口| 国产精品久久福利| 视频精品一区二区| 欧美日韩一区二区在线观看| 亚洲在线一区二区三区| 色噜噜狠狠一区二区三区果冻| 国产精品久久久久精k8| 成熟亚洲日本毛茸茸凸凹| 国产午夜精品一区二区三区嫩草 | 亚洲色图20p| 成人午夜免费视频| 亚洲国产激情av| 国产99一区视频免费| 中文字幕成人av| 成人aaaa免费全部观看| 亚洲摸摸操操av| 日本高清视频一区二区| 五月天一区二区| 日韩一级在线观看| 久久超碰97人人做人人爱| 欧美电视剧在线看免费| 极品少妇xxxx精品少妇偷拍 | 91麻豆免费在线观看| 亚洲黄色av一区| 欧美老人xxxx18| 日韩电影在线一区|