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

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

?? codrle3.c

?? 著名壓縮算法的實現
?? C
字號:
/* File: codrle3.c   Author: David Bourgin   Creation date: 1/2/94   Last update: 24/7/95   Purpose: Example of RLE type 3 encoding with a file source to compress.*/#include <stdio.h>/* For routines printf,fputc,fread,fwrite and rewind */#include <memory.h>/* For routines memset,memcpy */#include <stdlib.h>/* For routine exit *//* Error codes sent to the caller */#define NO_ERROR      0#define BAD_FILE_NAME 1#define BAD_ARGUMENT  2/* Useful constants */#define FALSE 0#define TRUE  1#define MAX_FRAME_SIZE  256/* Global variables */FILE *source_file,*dest_file;unsigned int index=0,             buffer_read_size=0;unsigned char buffer_read[3*256];typedef struct { unsigned int array_size;                 unsigned char *array_val;               } t_tab;#define ARRAY_SIZE(array)  ((array).array_size)#define ARRAY_VAL(array)  ((array).array_val)#define ARE_EQUAL(array1,array2)  ((ARRAY_SIZE(array1)==ARRAY_SIZE(array2))&&(!memcmp(ARRAY_VAL(array1),ARRAY_VAL(array2),ARRAY_SIZE(array1))))/* Pseudo procedures */#define size_remaining_to_read() (buffer_read_size-index)#define read_block()  { if (!size_remaining_to_read())\                           { buffer_read_size=fread(buffer_read,1,sizeof(buffer_read),source_file);\                             index=0;\                           }\                      }#define move_index(i)  (index=(i))#define beginning_of_data()  { (void)rewind(source_file); buffer_read_size=0; index=0; }#define end_of_data()  (size_remaining_to_read()?FALSE:(index=0,!(buffer_read_size=fread(buffer_read,1,sizeof(buffer_read),source_file))))#define read_byte()  ((unsigned char)(end_of_data()?EOF:buffer_read[index++]))#define read_array(array,nb_to_read)  { ARRAY_SIZE(array)=(nb_to_read);\                                        ARRAY_VAL(array)= &(buffer_read[index]);\                                        index += (nb_to_read);\                                      }#define write_byte(x)  ((void)fputc((unsigned char)(x),dest_file))#define write_array(array)  ((void)fwrite(ARRAY_VAL(array),1,ARRAY_SIZE(array),dest_file))#define fill_block()  { (void)memcpy(buffer_read,&(buffer_read[index]),size_remaining_to_read());\                        buffer_read_size=fread(&(buffer_read[size_remaining_to_read()]),1,sizeof(buffer_read)-size_remaining_to_read(),source_file)+size_remaining_to_read();\                        index=0;\                      }void rle3look_for_occurr(frame_nb,frame_size,                         repetition_ok)/* Returned parameters: 'frame_nb', 'frame_size' and 'repetition_ok' are modified   Action: Looks in the byte buffer if there's a frame repetition   where size and repetition are respectively in 'frame_size' and 'frame_nb'.   Whenever a repetition is met, 'repetition_ok' returns 'TRUE' otherwise 'repetition_ok' returns 'FALSE'   Errors: Whenever there are no multiple frames then 'frame_nb' won't be modified   If there is a repetition such as (frame_nb-1)*frame_size>3 the buffer is   completed so that it contains only one occurrence of the frame a its beginning.   (The repetitions have been flushed by caliing 'fill_block').*/unsigned int *frame_nb,*frame_size;int *repetition_ok;{ int array_equality;  t_tab array1,array2;  *frame_size=1;  *repetition_ok=FALSE;  while ((*frame_size<=MAX_FRAME_SIZE)&&(size_remaining_to_read()>=(*frame_size << 1))&&(!*repetition_ok))        { read_array(array1,*frame_size);          read_array(array2,*frame_size);          if (array_equality=ARE_EQUAL(array1,array2))             { *frame_nb=2;               while ((size_remaining_to_read()>=*frame_size)&&(*frame_nb<=255)&&(array_equality))                     { if ((*frame_nb-1)*(*frame_size)>3)                          { if (*repetition_ok)                               move_index(*frame_size);                            else { *repetition_ok=TRUE;                                   move_index((*frame_nb-1)*(*frame_size));                                 }                            fill_block();                            move_index(*frame_size);                          }                       read_array(array2,*frame_size);                       if (array_equality=ARE_EQUAL(array1,array2))                          (*frame_nb)++;                     }               if ((*frame_nb-1)*(*frame_size)>3)                  { if (*repetition_ok)                       { if (array_equality)                            { move_index(*frame_size);                              fill_block();                            }                       }                    else { *repetition_ok=TRUE;                           move_index((*frame_nb-1)*(*frame_size));                           fill_block();                         }                    (*frame_size)--;                  }                             /* Specify to the caller there was a repetition */             }          (*frame_size)++;          move_index(0);        }}void rle3write_non_rep(header_byte,non_repeated_byte)/* Returned parameters: None   Action: Writes in the output compression stream the byte 'non_repeated_byte'   'header_byte' is used as marker as defined in RLE 3 method   Errors: An input/output error could disturb the running of the program*/unsigned char header_byte,non_repeated_byte;{ if (non_repeated_byte==header_byte)     { write_byte(header_byte);       write_byte(0);       write_byte(0);     }  else write_byte(non_repeated_byte);}void rle3write_rep(header_byte,frame,repetition)/* Returned parameters: None   Action: Writes in the output compression stream 'repetition' times 'frame' which size is given by 'frame_size'   'header_byte' is used as marker as defined in RLE 3 method   Errors: An input/output error could disturb the running of the program*/unsigned char header_byte;t_tab frame;unsigned int repetition;{ write_byte(header_byte);  write_byte(repetition-1);  write_byte(ARRAY_SIZE(frame)-1);  write_array(frame);}void rle3encoding()/* Returned parameters: None   Action: Compresses with RLE type 3 method all bytes read by the function 'read_byte'   Errors: An input/output error could disturb the running of the program*/{ register unsigned int i;  unsigned long int occurrence_table[256];  unsigned char header_byte;  t_tab frame;  unsigned int frame_nb,frame_size;  int repetition_valid;  if (!end_of_data())        /* Is there at least a byte to analyze? */     {                       /* Sets up the occurrence numbers of all bytes to 0 */       (void)memset((char *)occurrence_table,0,sizeof(occurrence_table));                             /* This is the same to fill 'occurrence_table' to 0.                                It's fastest than to loop 256 times */       while (!end_of_data())/* Valids the occurrences in 'occurrence_table' in regard to the data to compress */             { header_byte=read_byte();               occurrence_table[header_byte]++;             }       header_byte=0;       for (i=1;i<=255;i++)           if (occurrence_table[i]<occurrence_table[header_byte])              header_byte=i;       write_byte(header_byte);       beginning_of_data();       read_block();       while (size_remaining_to_read())             { rle3look_for_occurr(&frame_nb,&frame_size,&repetition_valid);               if (repetition_valid)                             /* Was there a repetition? */                  { read_array(frame,frame_size);                    rle3write_rep(header_byte,frame,frame_nb);                  }               else          /* No pattern repetition */                    rle3write_non_rep(header_byte,read_byte());               fill_block(); /* All new analysis must start at 0 in the buffer */             }     }}void help()/* Returned parameters: None   Action: Displays the help of the program and then stops its running   Errors: None*/{ printf("This utility enables you to compress a file by using RLE type 3 method\n");  printf("as given in 'La Video et Les Imprimantes sur PC'\n");  printf("\nUse: codrle3 source target\n");  printf("source: Name of the file to compress\n");  printf("target: Name of the compressed file\n");}int main(argc,argv)/* Returned parameters: Return an error code (0=None)   Action: Main procedure   Errors: Detected, handled and an error code is returned, if any*/int argc;char *argv[];{ if (argc!=3)     { help();       exit(BAD_ARGUMENT);     }  else if ((source_file=fopen(argv[1],"rb"))==NULL)          { help();            exit(BAD_FILE_NAME);          }       else if ((dest_file=fopen(argv[2],"wb"))==NULL)               { help();                 exit(BAD_FILE_NAME);               }            else { rle3encoding();                   fclose(source_file);                   fclose(dest_file);                 }  printf("Execution of codrle3 completed.\n");  return (NO_ERROR);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕欧美一| 欧美高清精品3d| 久久久精品2019中文字幕之3| 亚洲成av人片观看| 欧美日韩成人综合在线一区二区| 午夜久久电影网| 日韩欧美成人一区| 国产在线麻豆精品观看| 国产网站一区二区三区| 成人av免费在线| 亚洲一区日韩精品中文字幕| 欧美视频日韩视频| 轻轻草成人在线| 国产亚洲精品中文字幕| 成人美女在线观看| 亚洲欧美日韩中文播放 | jlzzjlzz亚洲日本少妇| 国产精品乱码久久久久久| 99精品欧美一区| 午夜影院久久久| 国产欧美一区在线| 色8久久精品久久久久久蜜| 日本色综合中文字幕| 国产亚洲一区二区三区在线观看 | 久久久久久麻豆| 不卡的电影网站| 日韩精品亚洲专区| 国产精品毛片久久久久久久| 欧美日本视频在线| 成人午夜电影久久影院| 亚洲成人免费观看| 久久精品日韩一区二区三区| 欧日韩精品视频| 国产一区二区三区综合| 亚洲激情av在线| 2欧美一区二区三区在线观看视频| 不卡的av在线| 久久99国产精品久久99果冻传媒 | 一区二区三区中文字幕精品精品| 91麻豆精品国产91久久久更新时间| 精品一区二区影视| 一区二区在线观看免费| 久久久久久久网| 欧美日本国产一区| 欧美综合一区二区| 国产色产综合色产在线视频| 91丨porny丨在线| 国产在线观看一区二区| 亚洲国产乱码最新视频| 一区二区三区资源| 久久久美女艺术照精彩视频福利播放| 色94色欧美sute亚洲线路一久| 国内精品伊人久久久久av一坑| 亚洲午夜久久久久| 亚洲色图.com| 中文字幕一区三区| 国产三区在线成人av| 日韩免费高清av| 精品视频在线免费看| 色综合久久久久| 99这里都是精品| 成人午夜av影视| 国产精品自产自拍| 韩国欧美一区二区| 久久成人免费日本黄色| 麻豆91在线播放免费| 日本在线不卡视频| 亚洲妇女屁股眼交7| 一级女性全黄久久生活片免费| 国产精品免费网站在线观看| 久久久亚洲综合| 久久久久久电影| 国产日本欧洲亚洲| 国产女人水真多18毛片18精品视频 | 国产精品毛片高清在线完整版| 精品国产百合女同互慰| 日韩欧美电影一二三| 日韩视频免费直播| 日韩欧美国产电影| 精品国产青草久久久久福利| 欧美一区在线视频| 精品国产电影一区二区| 精品福利在线导航| 久久精品人人爽人人爽| 中文一区二区完整视频在线观看| 国产清纯在线一区二区www| 国产亚洲欧洲997久久综合| 久久蜜桃av一区精品变态类天堂| 久久久久久久电影| 国产精品免费av| 亚洲另类在线视频| 午夜久久久久久久久| 免费一级片91| 国产成人精品aa毛片| 成年人国产精品| 欧美中文字幕一区二区三区| 欧美丰满高潮xxxx喷水动漫| 欧美激情综合网| 中文字幕制服丝袜成人av| 日韩毛片一二三区| 亚洲大尺度视频在线观看| 日本女人一区二区三区| 国产精品一区二区在线播放 | 国产精品正在播放| 成人av免费在线观看| 日本国产一区二区| 欧美一区二区精美| 国产精品全国免费观看高清| 亚洲精品国产精华液| 天堂一区二区在线| 国产乱对白刺激视频不卡| 91麻豆免费看片| 日韩一级视频免费观看在线| 国产精品系列在线| 亚洲综合视频在线观看| 韩国在线一区二区| 91成人国产精品| 久久这里只精品最新地址| 专区另类欧美日韩| 久久99精品久久久| 欧美中文字幕久久 | 国产精品久久久久久妇女6080| 亚洲一区二区黄色| 国模冰冰炮一区二区| 在线精品视频免费观看| 久久久91精品国产一区二区精品 | 欧美视频在线一区| 欧美国产日韩亚洲一区| 日韩精品91亚洲二区在线观看| 国产99久久久精品| 欧美剧情片在线观看| 国产欧美一区二区精品仙草咪| 午夜久久久久久久久久一区二区| 成人黄色免费短视频| 欧美电影一区二区三区| 亚洲视频在线一区观看| 国产一区欧美一区| 欧美高清激情brazzers| 亚洲天堂久久久久久久| 国产精品一级二级三级| 666欧美在线视频| 亚洲精品国产a久久久久久 | 久久久久一区二区三区四区| 亚洲3atv精品一区二区三区| 高清国产一区二区三区| 欧美成人r级一区二区三区| 亚洲精品中文在线影院| 成人aaaa免费全部观看| 久久久99精品久久| 精品无码三级在线观看视频 | 日本女人一区二区三区| 在线欧美一区二区| 中文字幕亚洲视频| 风间由美一区二区av101| 欧美一区在线视频| 日本强好片久久久久久aaa| 欧美在线观看视频一区二区| 亚洲视频免费观看| 91网站最新地址| 亚洲天堂2014| 99re热视频这里只精品| 中文字幕二三区不卡| 国产传媒日韩欧美成人| 久久综合狠狠综合久久综合88 | 国产成人综合亚洲网站| 日韩欧美国产一区二区三区| 日本视频一区二区三区| 欧美妇女性影城| 日本麻豆一区二区三区视频| 91 com成人网| 久久激五月天综合精品| 精品免费国产二区三区| 久久 天天综合| 久久蜜桃av一区精品变态类天堂| 国产在线精品一区二区夜色| 久久日韩精品一区二区五区| 国产伦精品一区二区三区视频青涩 | 久久久99免费| 成人免费毛片a| 亚洲天堂免费看| 欧美日本免费一区二区三区| 轻轻草成人在线| 国产亚洲欧洲一区高清在线观看| 成人精品免费网站| 亚洲理论在线观看| 欧美高清视频一二三区| 久久99精品久久久| 欧美激情中文不卡| 91国产免费观看| 日本成人中文字幕在线视频| 欧美大片在线观看| 99精品视频在线观看免费| 一级精品视频在线观看宜春院| 欧美日韩中文一区| 国产乱子伦视频一区二区三区| 欧美国产在线观看| 欧美视频精品在线| 国内一区二区视频| 亚洲女厕所小便bbb| 欧美一区二区三区不卡|