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

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

?? hfwav.cpp

?? 惠普實驗室的經典代碼。用于huffman編碼的快速實現
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
//                                                                           -
//                       *************************                           -
//                        HUFFMAN CODING EXAMPLES                            -
//                       *************************                           -
//                                                                           -
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
//                                                                           -
//   Implementation of periodic-adaptive and static Huffman codes            -
//                                                                           -
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
//                                                                           -
// Version 1.00  -  January 24, 2005                                         -
//                                                                           -
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
//                                                                           -
//                                  WARNING                                  -
//                                 =========                                 -
//                                                                           -
// The only purpose of this program is to demonstrate the basic principles   -
// of Huffman codes. It is provided as is, without any express or implied    -
// warranty, without even the warranty of fitness for any particular         -
// purpose, or that the implementations are correct.                         -
//                                                                           -
// Permission to copy and redistribute this code is hereby granted, provided -
// that this warning and copyright notices are not removed or altered.       -
//                                                                           -
// Copyright (c) 2005 by Amir Said (said@ieee.org) &                         -
//                       William A. Pearlman (pearlw@ecse.rpi.edu)           -
//                                                                           -
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


// - - Inclusion - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

#include <string.h>
#include <stdlib.h>

#include "binary_codec.h"


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// - - Prototypes  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

void Encode_WAV_File(char * data_file_name,
                     char * code_file_name);

void Decode_WAV_File(char * code_file_name,
                     char * data_file_name);


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// - - Main function - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

int main(int numb_arg, char * arg[])
{
                                                       // define program usage
  if ((numb_arg != 4) || (arg[1][0] != '-') || 
     ((arg[1][1] != 'c') && (arg[1][1] != 'd'))) {
    puts("\n\t Compression parameters:   hfwav -c wav_file compressed_file");
    puts("\n\t Decompression parameters: hfwav -d compressed_file new_wav_file\n");
    exit(0);
  }

  if (arg[1][1] == 'c')
    Encode_WAV_File(arg[2], arg[3]);
  else
    Decode_WAV_File(arg[2], arg[3]);

  return 0;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// - - Constansts  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

const char * W_MSG = "cannot write to file";

const char * R_MSG = "cannot read from file";

const unsigned NumModels  = 40;

const unsigned BufferSize = 65536;

const unsigned WAV_ID     = 0x46464952U;

const unsigned HFW_ID     = 0xF1C2087BU;

const unsigned char WAVE_HEADER[44] = {
  0x52, 0x49, 0x46, 0x46, 0x7F, 0x7F, 0x7F, 0x7F, 0x57, 0x41, 0x56,
  0x45, 0x66, 0x6D, 0x74, 0x20, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00,
  0x02, 0x00, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x04,
  0x00, 0x10, 0x00, 0x64, 0x61, 0x74, 0x61, 0x7F, 0x7F, 0x7F, 0x7F };


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// - - Implementations - - - - - - - - - - - - - - - - - - - - - - - - - - - -

void Error(const char * s)
{
  fprintf(stderr, "\n Error: %s.\n\n", s);
  exit(1);
}

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

unsigned Audio_Samples(const unsigned char header[44])
{
  return (unsigned(header[40]) >>  2) + (unsigned(header[41]) <<  6) +
         (unsigned(header[42]) << 14) + (unsigned(header[43]) << 22);
}

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

void Save_Number(unsigned n, unsigned char * b)
{
  b[0] = (unsigned char)( n        & 0xFFU);
  b[1] = (unsigned char)((n >>  8) & 0xFFU);
  b[2] = (unsigned char)((n >> 16) & 0xFFU);
  b[3] = (unsigned char)( n >> 24         );
}

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

unsigned Recover_Number(unsigned char * b)
{
  return unsigned(b[0]) + (unsigned(b[1]) << 8) + 
        (unsigned(b[2]) << 16) + (unsigned(b[3]) << 24);
}

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

void Split_Integer(int n, unsigned & bits, unsigned & data)
{
  if (n == 0) {
    bits = data = 0;
    return;
  }

  static unsigned group_table[4096];

  if (group_table[1] == 0)
    for (unsigned g = 0; g <= 12; g++) {
      unsigned k = 1U << g, r = k >> 1;
      while (k > r) group_table[--k] = g;
    }

  unsigned a = unsigned(n < 0 ? -n : n);
  bits = (a < 4096 ? group_table[a] : 13 + group_table[(a>>13)&0xFFF]);
  data = a + a - (1U << bits) + (n < 0);
}

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

int Restore_Integer(unsigned bits, unsigned data)
{
  int v = (data + (1 << bits)) >> 1;
  return (data & 1 ? -v : v);
}

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

unsigned Buffer_CRC(unsigned bytes,
                    unsigned char * buffer)
{
  static const unsigned CRC_Gen[8] = {        // data for generating CRC table
    0xEC1A5A3EU, 0x5975F5D7U, 0xB2EBEBAEU, 0xE49696F7U,
    0x486C6C45U, 0x90D8D88AU, 0xA0F0F0BFU, 0xC0A0A0D5U };

  static unsigned CRC_Table[256];            // table for fast CRC computation

  if (CRC_Table[1] == 0)                                      // compute table
    for (unsigned k = CRC_Table[0] = 0; k < 8; k++) {
      unsigned s = 1 << k, g = CRC_Gen[k];
      for (unsigned n = 0; n < s; n++) CRC_Table[n+s] = CRC_Table[n] ^ g;
    }

                                  // computes buffer's cyclic redundancy check
  unsigned crc = 0;
  if (bytes)
    do {
      crc = (crc >> 8) ^ CRC_Table[(crc&0xFFU)^unsigned(*buffer++)];
    } while (--bytes);
  return crc;
}

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

void SpP_Analysis(unsigned n, int * c, int * l, int * h)
{
                      // computation of the forward (reversible) S+P transform
  int d0, d1, d2;
  unsigned i, m = (n >> 1) - 1;

  for (i = 0; i <= m; i++, c += 2) {
    l[i] = (c[0] + c[1]) >> 1;
    h[i] =  c[0] - c[1];
  }
  if (n & 1) l[i] = c[0];

  h[0] -= (d1 = l[0] - l[1]) >> 2;
  d2 = l[1] - l[2];
  h[1] -= (((d1 + d2 - h[2]) << 1) + d2 + 3) >> 3;

  for (i = 2; i < m; i++) {
    d0 = d1;  d1 = d2;  d2 = l[i] - l[i+1];
    h[i] -= (8 * d2 + 4 * d1 - d0 - 6 * h[i+1] + 7) >> 4;
  }

  h[m] -= d2 >> 2;
}

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

void SpP_Synthesis(unsigned n, int * l, int * h, int * c)
{
                                   // computation of the inverse S+P transform
  int d0, d1, d2;
  unsigned i, m = (n >> 1) - 1;

  int t = (h[m] += (d1 = l[m-1] - l[m]) >> 2);
  d0 = l[m-2] - l[m-1];

  for (i = m - 1; i > 1; i--) {
    d2 = d1;  d1 = d0;  d0 = l[i-2] - l[i-1];
    t = (h[i] += (8 * d2 + 4 * d1 - d0 - 6 * t + 7) >> 4);
  }
  h[1] += (((d0 + d1 - h[2]) << 1) + d1 + 3) >> 3;
  h[0] += d0 >> 2;

  for (i = 0; i <= m; i++) {
    t = l[i] - (h[i] >> 1);
    *c++ = t + h[i];
    *c++ = t;
  }
  if (n & 1) *c = l[i];
}

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

void SpP_Analysis(unsigned ed,
                  int transform[],
                  int buffer[])
{
                                                       // dyadic S+P transform
  for (int lv = 0; lv <= 5; lv++) {
    int fd = ed >> lv, hd = fd >> 1;
    memcpy(buffer, transform, fd * sizeof(int));
    SpP_Analysis(fd, buffer, transform, transform + hd);
  }
}

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

void SpP_Synthesis(unsigned ed,

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人欧美一区二区三区白人| 久久成人麻豆午夜电影| 丁香婷婷综合激情五月色| 久久综合久久综合亚洲| 九九九久久久精品| 欧美精品一区二区三区在线播放 | 成人网在线播放| 国产精品嫩草99a| 91精品在线观看入口| 精品亚洲成a人在线观看| 26uuu久久综合| 9l国产精品久久久久麻豆| 亚洲人精品一区| 欧美美女bb生活片| 国产一区二区三区综合| 中文字幕日韩av资源站| 欧美日韩亚洲综合一区二区三区| 日韩精品一区第一页| 久久老女人爱爱| 色综合天天在线| 三级亚洲高清视频| 国产视频在线观看一区二区三区| 91麻豆自制传媒国产之光| 午夜精品福利视频网站| xnxx国产精品| 欧美亚洲图片小说| 狠狠色丁香婷婷综合| 国产精品护士白丝一区av| 欧美日韩大陆在线| 国产91精品一区二区麻豆亚洲| 亚洲综合色视频| 久久精品无码一区二区三区| 在线影院国内精品| 国产精品自在在线| 亚洲第一综合色| 中文字幕乱码一区二区免费| 欧美年轻男男videosbes| 粉嫩在线一区二区三区视频| 日韩电影在线一区二区三区| 久久99国产精品麻豆| 亚洲精品日韩一| 国产性做久久久久久| 4438x亚洲最大成人网| www.激情成人| 国产精品12区| 精品一区中文字幕| 亚洲亚洲人成综合网络| 国产精品久久久久久久浪潮网站| 欧美一区日本一区韩国一区| 91免费看片在线观看| 国产99久久久久久免费看农村| 日韩黄色免费网站| 一区二区三区中文在线| 国产精品九色蝌蚪自拍| 国产亚洲一区二区三区四区 | 精品视频一区二区不卡| 国产美女精品人人做人人爽| 奇米影视一区二区三区| 亚洲一区在线播放| 亚洲天堂免费看| 一区二区中文字幕在线| 久久久综合视频| 久久嫩草精品久久久精品| 欧美精品乱码久久久久久 | 91精品蜜臀在线一区尤物| 色久综合一二码| 99久久国产综合精品色伊| 国产精品一级片| 激情av综合网| 国内精品视频一区二区三区八戒| 日韩和欧美的一区| 亚洲 欧美综合在线网络| 日韩欧美国产电影| 国产激情一区二区三区四区| 久久国产人妖系列| 天天操天天综合网| 天堂av在线一区| 日韩一区精品视频| 日韩影院免费视频| 毛片av中文字幕一区二区| 欧美aaaaaa午夜精品| 免费在线欧美视频| 日本不卡视频在线| 蜜桃传媒麻豆第一区在线观看| 美女在线视频一区| 美国一区二区三区在线播放| 国产专区欧美精品| 国产99久久久精品| 9人人澡人人爽人人精品| 色综合久久88色综合天天免费| 日本精品视频一区二区三区| 欧美日韩精品三区| 日韩欧美一区二区三区在线| 欧美mv日韩mv国产网站| 久久精品亚洲麻豆av一区二区| 国产精品午夜在线| 又紧又大又爽精品一区二区| 偷拍日韩校园综合在线| 久久精品免费看| 成人中文字幕合集| 色综合久久中文字幕| 欧美久久一二区| 久久综合九色综合久久久精品综合| 国产日韩精品一区二区浪潮av| 国产精品免费av| 亚洲影院久久精品| 麻豆精品新av中文字幕| 国产成人免费视频精品含羞草妖精| 一本大道久久精品懂色aⅴ| 欧美三级三级三级| 久久精品视频网| 亚洲综合成人在线视频| 国产最新精品免费| 日本道色综合久久| 色婷婷亚洲综合| 韩国中文字幕2020精品| 成人h动漫精品一区二| 欧美日韩精品欧美日韩精品一综合| 日韩欧美一级在线播放| 国产精品国产三级国产普通话三级| 视频在线在亚洲| 成人免费视频视频在线观看免费| 91麻豆精品国产91久久久资源速度| 久久久久久久久久久久久女国产乱| 一区二区三区加勒比av| 国产在线不卡一卡二卡三卡四卡| 色综合久久久久| 日本一区二区三级电影在线观看| 午夜精品福利视频网站| caoporn国产一区二区| 91精品国产高清一区二区三区蜜臀 | 亚洲六月丁香色婷婷综合久久| 美女视频网站黄色亚洲| 色婷婷综合久色| 国产精品美女久久久久久| 久久aⅴ国产欧美74aaa| 欧美日韩精品二区第二页| 综合电影一区二区三区| 国产福利91精品| 日韩欧美国产三级电影视频| 亚洲国产毛片aaaaa无费看| 波多野结衣精品在线| 久久色在线视频| 九九久久精品视频 | 欧美电影免费观看完整版| 亚洲精品美国一| 成av人片一区二区| 精品国产伦一区二区三区免费| 亚洲成人免费观看| 91亚洲精品久久久蜜桃| 中文字幕精品三区| 国产精品影视天天线| 日韩免费福利电影在线观看| 天天亚洲美女在线视频| 欧美在线观看一区| 亚洲精品欧美综合四区| 91免费国产视频网站| 国产精品久久久久久妇女6080| 国产精品亚洲第一区在线暖暖韩国| 欧美tk—视频vk| 精品一区二区三区影院在线午夜| 日韩一级视频免费观看在线| 日韩激情在线观看| 欧美一卡二卡在线观看| 日韩福利视频导航| 欧美一卡二卡三卡| 99精品视频在线播放观看| 蜜臀a∨国产成人精品| 欧美影片第一页| 夜夜亚洲天天久久| 色天使色偷偷av一区二区| 亚洲视频综合在线| 色一情一乱一乱一91av| 亚洲精品乱码久久久久久黑人| 色综合久久精品| 亚洲国产成人porn| 欧美高清你懂得| 老司机午夜精品| 国产午夜亚洲精品羞羞网站| 国产成人免费网站| 国产精品国产三级国产aⅴ入口| 97久久精品人人做人人爽50路| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 国产乱子伦视频一区二区三区| 久久久久久**毛片大全| 成人深夜福利app| 亚洲午夜在线电影| 91精品欧美久久久久久动漫 | 婷婷综合另类小说色区| 欧美人伦禁忌dvd放荡欲情| 免费精品视频在线| 久久久久久黄色| 99精品久久久久久| av在线不卡电影| 亚洲黄一区二区三区| 欧美在线一区二区| 美女高潮久久久| 国产精品久久久一区麻豆最新章节| 91美女蜜桃在线| 麻豆精品一区二区三区|