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

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

?? code_mul.c

?? 這是算術編碼的源程序
?? C
字號:
/* CODE_MUL.C - ARITHMETIC ENCODING/DECODING, USING MULTIPLY/DIVIDE. */

#include <stdio.h>

#define global extern

#include "code.h"


/* CURRENT STATE OF THE ENCODING/DECODING. */

static code_value low;		/* Start of current coding region, in [0,1) */

static code_value range;	/* Size of region, normally kept in the     */
				/* interval [1/4,1/2]                       */

static code_value value;	/* Currently-seen code value, in [0,1)      */

static int bits_to_follow;	/* Number of opposite bits to output after  */
				/* the next bit                             */

static div_value F;		/* Common factor used, in interval [1/4,1)  */

static code_value split_region();


/* LOCAL PROCEDURES. */

static int        find_symbol   (freq_value []);
static void       narrow_region (freq_value [], int, int);
static code_value split_region  (freq_value, freq_value);
static void       push_out_bits (void);
static void       discard_bits  (void);


/* OUTPUT BIT PLUS FOLLOWING OPPOSITE BITS. */

#define bit_plus_follow(bit) \
do { \
    output_bit(bit);				/* Output the bit.          */\
    while (bits_to_follow>0) {			/* Output bits_to_follow    */\
        output_bit(!(bit));			/* opposite bits. Set       */\
        bits_to_follow -= 1;			/* bits_to_follow to zero.  */\
    } \
} while (0) 


/* START ENCODING A STREAM OF SYMBOLS. */

void start_encoding(void)
{   
    low = Code_half;				/* Use half the code region */
    range = Code_half;				/* (wastes first bit as 1). */
    bits_to_follow = 0;				/* No opposite bits follow. */
}


/* START DECODING A STREAM OF SYMBOLS. */

void start_decoding(void)
{   
    int i;

    value = input_bit();			/* Check that first bit     */
    if (value!=1) {				/* is a 1.                  */
        fprintf(stderr,"Bad input file (1)\n");
        exit(1);
    }

    for (i = 1; i<Code_bits; i++) { 		/* Fill the code value with */
        value += value;				/* input bits.              */
        value += input_bit();
    }

    low = Code_half;				/* Use half the code region */
    range = Code_half;				/* (first bit must be 1).   */
}


/* ENCODE A SYMBOL. */

void encode_symbol(symbol,cum_freq)
    int symbol;			/* Symbol to encode                         */
    freq_value cum_freq[];	/* Cumulative symbol frequencies            */
{
    narrow_region(cum_freq,symbol,0);		/* Narrow coding region.    */
    push_out_bits();				/* Output determined bits.  */
}


/* ENCODE A BIT. */

void encode_bit(bit,freq0,freq1)
    int bit;			/* Bit to encode (0 or 1)                   */
    freq_value freq0;           /* Frequency for 0 bit                      */
    freq_value freq1;           /* Frequency for 1 bit                      */
{
    code_value split;

    if (freq1>freq0) {				/* Encode bit when most     */
        split = split_region(freq0,freq1);	/* probable symbol is a 1.  */
        if (bit) { low += split; range -= split; }
        else     { range = split;  }
    }

    else {					/* Encode bit when most     */
        split = split_region(freq1,freq0);	/* probable symbol is a 0.  */
        if (bit) { range = split;  }
        else     { low += split; range -= split; }
    }

    push_out_bits();				/* Output determined bits.  */
}


/* DECODE THE NEXT SYMBOL. */

int decode_symbol(cum_freq)
    freq_value cum_freq[];	/* Cumulative symbol frequencies            */
{
    int symbol;			/* Symbol decoded                           */

    symbol = find_symbol(cum_freq);		/* Find decoded symbol.     */
    narrow_region(cum_freq,symbol,1);		/* Narrow coding region.    */
    discard_bits();				/* Discard output bits.     */

    return symbol;
}


/* DECODE A BIT. */

int decode_bit(freq0,freq1)
    freq_value freq0;           /* Frequency for 0 bit                      */
    freq_value freq1;           /* Frequency for 1 bit                      */
{
    code_value split;
    int bit;

    if (freq1>freq0) {				/* Decode bit when most     */
        split = split_region(freq0,freq1);	/* probable symbol is a 1.  */
        bit = value-low >= split;
        if (bit) { low += split; range -= split; }
        else     { range = split;  }
    }

    else {					/* Decode bit when most     */
        split = split_region(freq1,freq0);	/* probable symbol is a 0.  */
        bit = value-low < split;
        if (bit) { range = split;  }
        else     { low += split; range -= split; }
    }

    discard_bits();				/* Discard output bits.     */

    return bit;
}


/* DETERMINE DECODED SYMBOL FROM INPUT VALUE. */

static int find_symbol(cum_freq)
    freq_value cum_freq[];	/* Cumulative symbol frequencies            */
{
    freq_value cum;		/* Cumulative frequency calculated          */
    int symbol;			/* Symbol decoded                           */

    F = range / cum_freq[0];			/* Compute common factor.   */

    cum = (value-low) / F;			/* Compute target cum freq. */
    for (symbol = 1; cum_freq[symbol]>cum; symbol++) ; /* Then find symbol. */

    return symbol;
}


/* NARROW CODING REGION TO THAT ALLOTTED TO SYMBOL. */

static void narrow_region(cum_freq,symbol,have_F)
    freq_value cum_freq[];	/* Cumulative symbol frequencies            */
    int symbol;			/* Symbol decoded                           */
    int have_F;			/* Is F already computed?                   */
{
    code_value T;		/* Temporary value                          */

    if (!have_F) F = range / cum_freq[0];	/* Compute common factor.   */

    if (symbol==1) {				/* Narrow range for symbol  */
        T = F * cum_freq[symbol];		/* at the top.              */
        low += T;
        range -= T;
    }

    else {					/* Narrow range for symbol  */
        T = F * cum_freq[symbol];               /* not at the top.          */
        low += T;
        range = F * cum_freq[symbol-1] - T; 
    }
}


/* FIND BINARY SPLIT FOR CODING REGION. */

static code_value split_region(freq_b,freq_t)
    freq_value freq_b;		/* Frequency for symbol in bottom half      */
    freq_value freq_t;		/* Frequency for symbol in top half         */
{
    return freq_b * (range / (freq_b+freq_t)); 
}


/* OUTPUT BITS THAT ARE NOW DETERMINED. */

static void push_out_bits(void)
{
    while (range<=Code_quarter) {

        if (low>=Code_half) {			/* Output 1 if in top half.*/
            bit_plus_follow(1);
            low -= Code_half;			/* Subtract offset to top.  */
        }

        else if (low+range<=Code_half) {	/* Output 0 in bottom half. */
            bit_plus_follow(0);		
	} 

        else {			 		/* Output an opposite bit   */
            bits_to_follow += 1;		/* later if in middle half. */
            low -= Code_quarter;		/* Subtract offset to middle*/
        } 

        low += low;				/* Scale up code region.    */
        range += range;
    }
}


/* DISCARD BITS THE ENCODER WOULD HAVE OUTPUT. */

static void discard_bits(void)
{
    while (range<=Code_quarter) {

        if (low>=Code_half) {			/* Expand top half.         */
            low -= Code_half;			/* Subtract offset to top.  */
            value -= Code_half;
        }

        else if (low+range<=Code_half) {	/* Expand bottom half.      */
            /* nothing */
	} 

        else {			 		/* Expand middle half.      */
            low -= Code_quarter;		/* Subtract offset to middle*/
            value -= Code_quarter;
        } 

        low += low;				/* Scale up code region.    */
        range += range;

        value += value;				/* Move in next input bit.  */
        value += input_bit();
    }
}


/* FINISH ENCODING THE STREAM. */

void done_encoding(void)
{   
    for (;;) {

        if (low+(range>>1)>=Code_half) {	/* Output a 1 if mostly in  */
            bit_plus_follow(1);			/* top half.                */
            if (low<Code_half) {
                range -= Code_half-low;
                low = 0;
            }
            else {
                low -= Code_half;
            }
        }

        else {					/* Output a 0 if mostly in  */
            bit_plus_follow(0);			/* bottom half.             */
            if (low+range>Code_half) {
                range = Code_half-low;
            }
        }

        if (range==Code_half) break;		/* Quit when coding region  */
						/* becomes entire interval. */
        low += low;
        range += range;				/* Scale up code region.    */
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产一区二区亚洲人成毛片| 欧美肥胖老妇做爰| 国产真实精品久久二三区| 日韩电影在线看| 亚洲成av人片在线观看| 艳妇臀荡乳欲伦亚洲一区| 亚洲制服丝袜在线| 日韩精品电影一区亚洲| 日本色综合中文字幕| 日本特黄久久久高潮| 激情文学综合插| 成人精品高清在线| 色88888久久久久久影院按摩| 色综合中文字幕国产 | 欧美日韩另类一区| 欧美精品 日韩| 制服丝袜日韩国产| 欧美成人bangbros| 亚洲国产精品精华液2区45| 国产精品成人在线观看| 一个色妞综合视频在线观看| 天天综合天天综合色| 国产一区不卡在线| 99精品视频一区二区| 欧美日韩精品一区二区| 精品国精品国产| 1024成人网| 另类小说综合欧美亚洲| www.日韩在线| 欧美一区二区三区在线视频| 国产亚洲欧美在线| 亚洲国产成人av网| 国产在线国偷精品免费看| 色94色欧美sute亚洲线路二| 日韩精品一区二区三区视频在线观看 | 欧美影视一区在线| 精品福利一区二区三区免费视频| 中文字幕一区二区三区在线不卡 | 日本vs亚洲vs韩国一区三区二区 | 亚洲欧洲美洲综合色网| 五月婷婷欧美视频| 国产成人免费xxxxxxxx| 欧美三级视频在线观看| 久久精品一区二区三区四区| 亚洲成av人片| 99久久99久久精品免费看蜜桃 | 国内精品国产成人| 色老头久久综合| 久久人人爽人人爽| 天天综合色天天综合色h| 91在线观看高清| 久久久不卡网国产精品二区| 亚洲国产aⅴ成人精品无吗| 成人性生交大片免费看中文| 日韩女优毛片在线| 亚洲3atv精品一区二区三区| 99视频热这里只有精品免费| 亚洲精品一区二区三区四区高清| 亚洲午夜精品网| 91网站在线观看视频| 国产日韩欧美激情| 精品一区精品二区高清| 欧美一区二区三区四区五区| 亚洲小说欧美激情另类| 色婷婷av一区二区三区gif| 中文字幕欧美激情| 国产剧情av麻豆香蕉精品| 555夜色666亚洲国产免| 亚洲一区成人在线| 在线免费视频一区二区| 国产精品国产自产拍在线| 国产91精品露脸国语对白| 久久久精品免费免费| 国产黑丝在线一区二区三区| 国产午夜亚洲精品理论片色戒| 国产一区亚洲一区| 久久网这里都是精品| 国产一区二区电影| 国产午夜精品在线观看| 国产精品一区免费在线观看| 国产亚洲欧美在线| 国产99一区视频免费| 国产精品护士白丝一区av| 91论坛在线播放| 亚洲在线视频免费观看| 欧美日本乱大交xxxxx| 麻豆91在线播放免费| 久久精品夜色噜噜亚洲a∨| 国产成人精品亚洲午夜麻豆| 国产精品麻豆网站| 91福利视频在线| 蜜臀精品久久久久久蜜臀| 久久看人人爽人人| 99久久国产免费看| 轻轻草成人在线| 国产精品丝袜一区| 在线观看一区二区视频| 久久99精品一区二区三区| 国产天堂亚洲国产碰碰| 色狠狠桃花综合| 免费一级片91| 亚洲日本va午夜在线影院| 欧美性色综合网| 国产老肥熟一区二区三区| 亚洲免费色视频| 日韩欧美一级片| 色综合久久中文综合久久牛| 五月激情丁香一区二区三区| 久久亚洲欧美国产精品乐播| a在线播放不卡| 日韩成人免费电影| 国产精品久久久久久户外露出 | 精品国产亚洲在线| 成人av网址在线| 日日摸夜夜添夜夜添亚洲女人| 国产亚洲欧美日韩日本| 欧美日本一区二区三区| av动漫一区二区| 精品综合久久久久久8888| 一区二区三区在线不卡| 久久久久99精品国产片| 91精品国产免费| 91视频你懂的| 丰满白嫩尤物一区二区| 日本成人在线电影网| 中文字幕人成不卡一区| 精品国产在天天线2019| 欧美日韩另类国产亚洲欧美一级| 成人黄色软件下载| 国产原创一区二区| 水野朝阳av一区二区三区| 国产精品久久久久久久久搜平片| 日韩三级在线免费观看| 在线看国产一区二区| 99国内精品久久| 成人v精品蜜桃久久一区| 国模冰冰炮一区二区| 久久99最新地址| 久久丁香综合五月国产三级网站| 亚洲午夜视频在线观看| 亚洲精品视频观看| 亚洲欧美在线视频观看| 中文字幕一区二区三区色视频| 久久综合久色欧美综合狠狠| 91精品国产色综合久久 | 欧美aaa在线| 日韩电影在线观看电影| 日韩激情视频网站| 午夜精品免费在线观看| 亚洲国产成人av| 天天色综合天天| 日韩成人一区二区| 老司机午夜精品| 精品一区二区免费看| 国产在线精品免费| 成人性生交大片免费| 成人污视频在线观看| 91亚洲精品乱码久久久久久蜜桃| 波多野结衣在线一区| 91女神在线视频| 欧美少妇一区二区| 7777精品伊人久久久大香线蕉超级流畅 | 中文字幕中文字幕一区| 亚洲麻豆国产自偷在线| 一区二区三区在线免费播放| 亚洲午夜精品久久久久久久久| 亚洲国产精品一区二区www在线| 亚州成人在线电影| 免费高清不卡av| 国产麻豆精品在线| 91在线观看高清| 欧美日韩不卡一区| 精品精品国产高清a毛片牛牛| 久久久国产精品麻豆| 亚洲视频香蕉人妖| 午夜精品久久久久| 国产在线观看一区二区| 91美女片黄在线观看91美女| 欧美亚洲另类激情小说| 日韩欧美不卡一区| 国产精品乱码一区二区三区软件 | 欧美专区日韩专区| 日韩视频国产视频| 亚洲欧美自拍偷拍色图| 午夜精品爽啪视频| 国产精品一区在线观看你懂的| 91免费看`日韩一区二区| 91麻豆精品91久久久久同性| 国产香蕉久久精品综合网| 亚洲综合色网站| 国产乱子伦一区二区三区国色天香| 99久久精品免费看| 日韩欧美一级在线播放| 亚洲欧美国产三级| 国产成人综合视频| 欧美日韩成人综合在线一区二区| 国产欧美精品一区aⅴ影院 | 国产在线精品一区二区| 欧美在线短视频| 国产精品视频一区二区三区不卡|