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

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

?? shc.c

?? 嵌入式linux下的攝像頭控制程序. 在arm-linux3.4.1下測試通過.
?? C
字號:
/* *  shcodec ;) version 1.0.1 *  Copyright (C) 1998-2002 Alexander Simakov *  April 2002 * *  This software may be used freely for any purpose. However, when *  distributed, the original source must be clearly stated, and, *  when the source code is distributed, the copyright notice must *  be retained and any alterations in the code must be clearly marked. *  No warranty is given regarding the quality of this software. * *  internet: http://www.webcenter.ru/~xander *  e-mail: xander@online.ru */#include "shc.h"#define KEY(a)       (freq[symb[a]])#define SWP(a, b)    (t=symb[a], symb[a]=symb[b], symb[b]=t)#define CMP(a,b,c,d) (a<b ? 0 : (a>b ? 1 : (c<d ? 1 : 0)))void sh_GetFreq(int *freq, uchar *block, int size){    int i;    for (i=0; i<SH_MAX_ALPHA; i++) freq[i]=0;    for (i=0; i<size; i++) freq[block[i]]++;}int sh_SortFreq(int *freq, uchar *symb){    int ls[8], hs[8];    int l, h, m, p, i, j, s, n;    uchar t;    /* Mark & count actual symbols */    for (i=n=0; i<SH_MAX_ALPHA; i++)    if (freq[i]) symb[n++]=(uchar)i;    ls[0]=0; hs[0]=n-1;    for (s=0; s>=0; s--) {        /* Pop next one */        l=ls[s]; h=hs[s];        while (l<h) {            /* Choose pivot frequency */            m=(l+h)>>1; p=KEY(m);            SWP(l, m); i=l+1; j=h;            /* Partition loop */            while (1) {                while (i<=j && KEY(i)<=p) i++;                while (p<KEY(j)) j--;                if (i>=j) break;                SWP(i, j); i++; j--;            }            SWP(l, j);            /* Push largest one */            if (j-l<=h-j) {                if (j+1<h) { ls[s]=j+1; hs[s++]=h; }                h=j-1;            } else {                if (j-1>l) { ls[s]=l; hs[s++]=j-1; }                l=j+1;            }        }    }    return n;}void sh_CalcLen(int *freq, uchar *symb, uchar *len, int n, int maxLen){    int root, leaf, next, avbl, dpth;    int removed, inserted, dpthins, first, last;    /* Check for pathological cases */    if (n==1) {       for (next=0; next<SH_MAX_ALPHA; next++) len[next]=0;        len[symb[0]]=1; return;    }    if (n==2) {       for (next=0; next<SH_MAX_ALPHA; next++) len[next]=0;        len[symb[0]]=len[symb[1]]=1; return;    }    freq[symb[0]]+=freq[symb[1]]; root=0; leaf=2;    /* First pass, left to right, setting parent pointers */    for (next=1; next<n-1; next++) {        if (leaf>=n || freq[symb[root]]<freq[symb[leaf]]) {            freq[symb[next]]=freq[symb[root]];            freq[symb[root++]]=next;        } else             freq[symb[next]]=freq[symb[leaf++]];        if (leaf>=n || (root<next && freq[symb[root]]<freq[symb[leaf]])) {            freq[symb[next]]+=freq[symb[root]];            freq[symb[root++]]=next+n;        } else            freq[symb[next]]+=freq[symb[leaf++]];    }    /* Second pass, right to left, count internal nodes to be removed */    if (maxLen==-1) { removed=0; dpthins=n+2; }    else {        first=last=n-3; dpth=1;        while (dpth<maxLen-1) {            while ((freq[symb[first]]%n)>last) {                root=first; first-=last-first+1;                if (first<0) { first=-1; break; }            }            while (root-first>1) {                if ((freq[symb[(first+root)>>1]]%n)>last)                root=(first+root)>>1;                else first=(first+root)>>1;            }            last=first; dpth++;            if (last<0) break;        }         removed=last+1;        if ((freq[symb[0]]%n)>=removed) {            removed=0;            dpthins=n+2;        } else {            for (dpthins=0; (1<<dpthins)<removed; dpthins++);            dpthins=maxLen-dpthins;        }    }    /* Third pass, right to left, setting leaf depths */    avbl=2; dpth=1; first=last=n-3;    next=n-1; inserted=0;    if (dpthins==1) {        avbl=4; dpth=2;        inserted=2;    }    while (avbl>0) {        if (last<removed) first=last+1;        else {            while ((freq[symb[first]]%n)>last) {                root=first; first-=last-first+1;                if (first<removed) { first=removed-1; break; }            }            while (root-first>1) {                if ((freq[symb[(first+root)>>1]]%n)>last)                root=(first+root)>>1;                else first=(first+root)>>1;            }               first=root;        }        avbl-=last-first+1; root=0;        if (dpth>=dpthins) {            root=1<<(dpth-dpthins);            if ((inserted+root)>removed)            root=removed-inserted;            inserted+=root; avbl-=root;        }        else if (dpth==(dpthins-1)) {            if (freq[symb[first]]==(last+1)) first++;            else avbl--; root=1; inserted++;        }        while (avbl>0) {            freq[symb[next--]]=dpth;            avbl--;        }        avbl=(last-first+1+root)<<1;        dpth++; last=(--first);    }    for (next=0; next<SH_MAX_ALPHA; next++)    len[next]=(uchar)freq[next];}void sh_SortLen(uchar *len, uchar *symb, int n){    int ls[8], hs[8];    int l, h, m, lm, sm, i, j, s;    uchar t;    ls[0]=0; hs[0]=n-1;    for (s=0; s>=0; s--) {        /* Pop next one */        l=ls[s]; h=hs[s];        while (l<h) {            /* Choose pivot length & symbol */            m=(l+h)>>1; lm=len[sm=symb[m]];            SWP(l, m); i=l+1; j=h;            /* Partition loop */            while (1) {                while (i<=j && CMP(len[symb[i]],lm,symb[i],sm)) i++;                while (CMP(lm,len[symb[j]],sm,symb[j])) j--;                if (i>=j) break; SWP(i, j); i++; j--;            }            SWP(l, j);            /* Push largest one */            if (j-l<=h-j) {                if (j+1<h) { ls[s]=j+1; hs[s++]=h; }                h=j-1;            } else {                if (j-1>l) { ls[s]=l; hs[s++]=j-1; }                l=j+1;            }        }    }}void sh_CalcCode(uchar *len, uchar *symb, uchar *code, int n){    int i, codeval, next, prev;    for (prev=len[symb[0]], i=codeval=0; i<n; i++, codeval++) {       next=len[symb[i]]; codeval>>=(prev-next);       prev=next; code[symb[i]]=codeval;    }}int sh_PackTree(uchar *len, uchar *symb, uchar *aux, uint *buf, int n){    int runlen, maxrun, maxlen, runbits, lenbits, flag, i, j, t;    int treesize, bufpos, curval, curbits, bits;    uint bitbuf;    /* log(maxlen) base 2 */    t=maxlen=len[symb[0]];    for (lenbits=0; t>0; t>>=1, lenbits++);    maxrun=runbits=flag=0;    /* Max 0-run length */    if (n<SH_MAX_ALPHA) {        for (i=t=0; i<SH_MAX_ALPHA; i++)        /* 0-run detected */        if (!len[i]) {            for (j=i; (i<SH_MAX_ALPHA) && (!len[i]); i++);            maxrun=((i-j)>maxrun ? (i-j) : maxrun);            aux[t++]=i-j;        }        /* log(maxrun) base 2 */        for (runbits=0, t=maxrun; t>0; t>>=1, runbits++);        /* 0-run flag, increase lenbits if necessary */        flag=maxlen+1; if (!(maxlen&(maxlen+1))) lenbits++;    }    /* Pack RLE parameters */    bitbuf=(uint)((((lenbits<<4)|runbits)<<8)|flag);    bits=16;    /* Pack tree itself */    for (treesize=bufpos=i=j=0; i<SH_MAX_ALPHA; i++) {        curval=len[i];        curbits=lenbits;        /* 0-run detected */        if (!curval) {            runlen=aux[j++]; i+=runlen-1;            if (runbits<(runlen-1)*lenbits) {                curval=((flag<<runbits)|runlen);                curbits+=runbits;            } else                curbits+=(runlen-1)*lenbits;        }        /* Pack bits */        if (curbits<=bits) {            bitbuf<<=curbits;            bitbuf|=curval;            bits-=curbits;        } else {            bitbuf<<=bits;            bitbuf|=(curval>>(curbits-bits));            buf[bufpos++]=bitbuf;            bitbuf=curval;             bits+=(32-curbits);            treesize++;        }    }    /* Flush remaining data */    buf[bufpos]=(bitbuf<<bits);    return (treesize+1)<<2;}int sh_ExpandTree(uchar *len, uchar *symb, uint *buf){    int curval, currun, lenbits, runbits, flag, bits, i, j, n;    uint bitbuf, lenmask, runmask;    /* Extract RLE parameters */    bitbuf=buf[0];    lenbits=(int)((bitbuf>>28) & 0xf);    runbits=(int)((bitbuf>>24) & 0xf);    flag=(int)((bitbuf>>16) & 0xff);    for (i=0; i<SH_MAX_ALPHA; i++) len[i]=0;	    lenmask=(1<<lenbits)-1;    runmask=(1<<runbits)-1;    /* Expand tree */    for (bits=16, i=n=0, j=1; i<SH_MAX_ALPHA; i++) {        /* Extract value */        if (lenbits<=bits) {            curval=(int)((bitbuf>>(bits-lenbits))&lenmask);            bits-=lenbits;        } else {            curval=(int)bitbuf;            bitbuf=buf[j++];            curval<<=(lenbits-bits);            curval|=bitbuf>>(32-lenbits+bits);            curval&=lenmask;            bits+=(32-lenbits);        }        /* Extract run */        if (curval!=flag) {            len[i]=(uchar)curval;            if (curval) symb[n++]=i; /* curval may be zero */        } else {            if (runbits<=bits) {                currun=(int)((bitbuf>>(bits-runbits))&runmask);                bits-=runbits;            } else {                currun=(int)bitbuf;                bitbuf=buf[j++];                currun<<=(runbits-bits);                currun|=bitbuf>>(32-runbits+bits);                currun&=runmask;                bits+=(32-runbits);            }            i+=(currun-1);        }    }    return n;}void sh_CalcDecode(uchar *len, uchar *symb, uchar *base, uchar *offs, uchar *cache, int n){    int root, leaf, i, j;    for (root=j=0, i=len[symb[0]]; i>=0; i--) {        leaf=0;        while ((len[symb[j]]==i) && (j<n)) { leaf++; j++; }        base[i]=root; if (leaf) offs[i]=j-leaf;        root=(root+leaf)>>1;    }    for (i=0; i<SH_CACHESIZE; i++) {        for (j=1; (j<=SH_CACHEBITS) && (i>>(SH_CACHEBITS-j)<base[j]); j++);        cache[i]=j;    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美在线不卡视频| 精品国产乱码久久久久久影片| 免费成人av资源网| 国产精品久久久久久亚洲伦 | 欧美巨大另类极品videosbest | 国产精品123区| 亚洲超碰精品一区二区| 中文字幕av在线一区二区三区| 制服丝袜中文字幕亚洲| av中文字幕在线不卡| 久久国内精品视频| 亚洲二区在线观看| 亚洲欧美日韩国产中文在线| 久久久久一区二区三区四区| 4438x成人网最大色成网站| av综合在线播放| 国产99久久久国产精品潘金网站| 美女视频黄a大片欧美| 亚洲精品日韩综合观看成人91| 国产欧美日韩综合精品一区二区| 日韩三级中文字幕| 欧美在线看片a免费观看| 丁香网亚洲国际| 国产乱码字幕精品高清av| 久久精品国产秦先生| 首页综合国产亚洲丝袜| 亚洲一区二区三区四区在线| 亚洲欧美日韩系列| 国产精品久久久久久亚洲伦| 国产欧美日韩综合| 国产人伦精品一区二区| 久久精品男人的天堂| 久久久久久电影| 国产免费久久精品| 国产欧美日韩在线看| 国产日韩精品一区二区三区| 国产亚洲精品bt天堂精选| 久久婷婷综合激情| 欧美精品一区二区三区高清aⅴ| 日韩欧美一级特黄在线播放| 日韩一级大片在线观看| 日韩欧美卡一卡二| 日韩欧美一级精品久久| 精品久久久久av影院| 精品精品欲导航| 久久亚洲精华国产精华液| 久久天天做天天爱综合色| 久久久久久久久久久久久久久99| 国产欧美一区二区精品秋霞影院| 国产精品色哟哟网站| **欧美大码日韩| 亚洲一区二区在线免费观看视频| 亚洲自拍偷拍av| 亚洲成人tv网| 麻豆成人久久精品二区三区红 | 欧美日韩在线精品一区二区三区激情| 在线免费观看日本欧美| 欧美偷拍一区二区| 91精品国产福利| 久久综合色婷婷| 中文字幕欧美一区| 一区二区免费在线| 日韩精品一二三区| 国产一区二区三区久久悠悠色av | 91亚洲精华国产精华精华液| 欧美视频完全免费看| 欧美一二区视频| 国产亚洲精品资源在线26u| 17c精品麻豆一区二区免费| 亚洲视频免费在线| 午夜亚洲福利老司机| 久久91精品国产91久久小草 | 欧美三片在线视频观看| 日韩午夜av电影| 中文字幕制服丝袜一区二区三区| 亚洲一区二区精品3399| 精品一区二区三区蜜桃| av不卡一区二区三区| 91精品国产91久久久久久一区二区 | 日韩成人伦理电影在线观看| 国产激情视频一区二区三区欧美 | 日韩美女一区二区三区| 中文字幕不卡在线观看| 亚洲一级在线观看| 国产美女精品一区二区三区| 在线免费精品视频| 亚洲精品一区在线观看| 亚洲图片欧美一区| 国产精品99久久久久久似苏梦涵| 欧日韩精品视频| 日本一区二区免费在线观看视频 | 国产精品免费丝袜| 午夜成人免费视频| 高清不卡在线观看| 欧美一区永久视频免费观看| 国产精品成人免费| 久久国产麻豆精品| 欧美色图12p| 国产精品免费久久| 日本强好片久久久久久aaa| 99国产精品久久久| 精品日韩在线一区| 午夜日韩在线电影| 91老师国产黑色丝袜在线| 久久精品亚洲一区二区三区浴池| 亚洲成年人影院| 91小视频免费看| 久久久久久久久久久黄色| 青青草国产成人99久久| 91电影在线观看| 国产精品不卡在线| 国产高清不卡一区| 精品国内片67194| 日韩制服丝袜av| 欧美午夜片在线看| 有码一区二区三区| 成人综合婷婷国产精品久久 | 成人免费小视频| 国产成人免费av在线| 日韩免费观看高清完整版| 午夜一区二区三区视频| 欧洲人成人精品| 亚洲视频中文字幕| 成人一区二区三区中文字幕| 久久久美女毛片| 狠狠色2019综合网| 欧美mv日韩mv| 久久超碰97人人做人人爱| 欧美一二三区在线观看| 日韩**一区毛片| 欧美一级二级三级乱码| 奇米四色…亚洲| 欧美大片在线观看一区二区| 蜜臀精品一区二区三区在线观看| 欧美日本国产视频| 午夜电影久久久| 欧美一级午夜免费电影| 蜜臀av一区二区在线免费观看| 欧美一级日韩一级| 日本中文字幕一区二区视频| 欧美一区二区三区在线观看| 久久国产尿小便嘘嘘| 精品粉嫩超白一线天av| 国产福利一区二区| 欧美国产日本视频| 91香蕉视频在线| 亚洲一区二区免费视频| 欧美日韩精品免费观看视频| 热久久国产精品| 欧美精品一区二区三| 懂色av一区二区在线播放| 17c精品麻豆一区二区免费| 日本韩国一区二区| 五月天亚洲婷婷| 精品日韩一区二区三区免费视频| 国产精品亚洲一区二区三区在线| 中文字幕在线一区免费| 日本韩国欧美一区二区三区| 日韩国产在线一| 日韩精品一区二区三区四区| 国产激情91久久精品导航| 亚洲图片另类小说| 欧美日韩大陆在线| 国产一区二三区| 国产精品入口麻豆原神| 欧美色网一区二区| 蜜桃视频在线一区| 国产日产欧美一区二区三区| 在线精品观看国产| 久草这里只有精品视频| 国产精品不卡一区| 在线不卡一区二区| 国产一区二区三区日韩| 亚洲理论在线观看| 日韩精品一区二区三区在线观看 | 日韩一区二区三区在线| 国产精品性做久久久久久| 亚洲精品一卡二卡| 日韩一级高清毛片| a级高清视频欧美日韩| 日韩综合小视频| 国产精品美女久久久久aⅴ国产馆| 欧美亚洲综合一区| 国产永久精品大片wwwapp| 一区二区三区精品| 久久久久国产精品免费免费搜索| 91麻豆福利精品推荐| 理论电影国产精品| 亚洲激情自拍视频| 久久久国产精华| 91精品一区二区三区久久久久久| www.成人在线| 紧缚捆绑精品一区二区| 亚洲综合在线第一页| 日本一区二区三区电影| 日韩亚洲欧美在线观看| 色婷婷精品大在线视频 | 欧美日韩高清在线| 成人av在线影院| 免费成人小视频|