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

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

?? hfwav.cpp

?? 惠普實驗室的經典代碼。用于huffman編碼的快速實現
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
                   int transform[],
                   int buffer[])
{
                                               // dyadic S+P inverse transform
  for (int lv = 5; lv >= 0; lv--) {
    int fd = ed >> lv, hd = fd >> 1;
    memcpy(buffer, transform, fd * sizeof(int));
    SpP_Synthesis(fd, buffer, buffer + hd, transform);
  }
}

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

void Separate_Channels(unsigned od,
                       unsigned ed,
                       short * data,
                       int left[],
                       int right[])
{
  unsigned k;                  // separate interleaved left and right channels
  for (k = 0; k < od; k++) {
    left[k]  = int(*data++);
    right[k] = int(*data++);
  }
  for (k = od; k < ed; k++) {
    left[k]  = (7 * left[k-1]) >> 3;
    right[k] = (7 * right[k-1]) >> 3;
  }
}

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

void Interleave_Channels(unsigned od,
                         int left[],
                         int right[],
                         short * data)
{
  for (unsigned k = 0; k < od; k++) {
    *data++ = short(left[k]);
    *data++ = short(right[k]);
  }
}

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

void Encode_SpP(unsigned dim,
                int transform[],
                Binary_Codec & encoder,
                Adaptive_Huffman_Code data_model[])
{
  float ctx = 0;
  for (int k = dim - 1; k >= 0; k--) {
    int nm = int(ctx);            // context = weighted average of past values
    unsigned bits, data;
    Split_Integer(transform[k], bits, data);
    encoder.encode(bits, data_model[nm]);               // encode with context
    if (bits)                                              // write "raw" bits
      if (bits == 1)
        encoder.put_bit(data);
      else
        encoder.put_bits(data, bits);
    ctx = 0.9F * ctx + 0.2F * bits;                     // update soft context
  }
}

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

void Decode_SpP(unsigned dim,
                Binary_Codec & decoder,
                Adaptive_Huffman_Code data_model[],
                int transform[])
{
  float ctx = 0;
  for (int k = dim - 1; k >= 0; k--) {
    int nm = int(ctx);            // context = weighted average of past values
    unsigned bits = decoder.decode(data_model[nm]);     // decode with context
    if (bits == 0)
      transform[k] = 0;
    else                                                    // read "raw" bits
      if (bits == 1)
        transform[k] = (decoder.get_bit() ? -1 : 1);
      else
        transform[k] = Restore_Integer(bits, decoder.get_bits(bits));
    ctx = 0.9F * ctx + 0.2F * bits;                     // update soft context
  }
}

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

FILE * Open_Input_File(unsigned file_id,
                       char * file_name,
                       unsigned char header[44])
{
  FILE * new_file = fopen(file_name, "rb");
  if (new_file == 0) Error("cannot open input file");

  if (fread(header, 1, 44, new_file) != 44) Error(R_MSG);

  if (Recover_Number(header) != file_id)
    Error("invalid input file");

  for (unsigned n = 4; n < 44; n++)
    if ((WAVE_HEADER[n] != 0x7F) && (WAVE_HEADER[n] != header[n]))
      Error("unsupported audio file");

  return new_file;
}

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

FILE * Open_Output_File(unsigned file_id,
                        char * file_name,
                        unsigned char header[44])
{
  FILE * new_file = fopen(file_name, "rb");
  if (new_file != 0) {
    fclose(new_file);
    printf("\n Overwrite file %s? (y = yes, otherwise quit) ", file_name);
    char line[128];
    gets(line);
    if (line[0] != 'y') exit(0);
  }

  new_file = fopen(file_name, "wb");
  if (new_file == 0) Error("cannot open output file");

  Save_Number(file_id, header);
  if (fwrite(header, 1, 44, new_file) != 44) Error(W_MSG);

  return new_file;
}

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

void Encode_WAV_File(char * data_file_name,
                     char * code_file_name)
{
                                                                 // open files
  unsigned char header[44];
  FILE * data_file = Open_Input_File(WAV_ID, data_file_name, header);

  unsigned file_samples = Audio_Samples(header);
  if ((file_samples < 64) || (file_samples >= 0x10000000U))
    Error("invalid WAV file");

  FILE * code_file = Open_Output_File(HFW_ID, code_file_name, header);

                                                      // memory for audio data
  int * data = new int[3*BufferSize];
  int * left_channel   = data + BufferSize;
  int * right_channel  = data + BufferSize * 2;

  Binary_Codec encoder(5 * BufferSize);

  Adaptive_Huffman_Code * dm = new Adaptive_Huffman_Code[NumModels];
  for (unsigned m = 0; m < NumModels; m++) dm[m].set_alphabet(24);

  unsigned crc = 0;
  do {

    unsigned ns = (file_samples < BufferSize ? file_samples : BufferSize);
    unsigned es = (ns + 63) & 0xFFFFFFC0U;              // next multiple of 64
    file_samples -= ns;
    if (fread(data, 4, ns, data_file) != ns) Error(R_MSG);       // read audio

    crc ^= Buffer_CRC(4 * ns, (unsigned char *) data);          // compute CRC
    Separate_Channels(ns, es, (short*) data, left_channel, right_channel);

    SpP_Analysis(es, left_channel, data);                // compute transforms
    SpP_Analysis(es, right_channel, data);

    encoder.start_encoder();                            // prepare to compress

    Encode_SpP(es, left_channel, encoder, dm);          // compress transforms
    Encode_SpP(es, right_channel, encoder, dm);

    encoder.write_to_file(code_file);        // stop and write compressed data

  } while (file_samples);
                                                              // save file CRC
  Save_Number(crc, header);
  if (fwrite(header, 1, 4, code_file) != 4) Error(W_MSG);

                                                          // done: close files
  fflush(code_file);
  unsigned data_bytes = ftell(data_file), code_bytes = ftell(code_file);
  printf(" Compressed file size = %d bytes (%5.2f:1 compression)\n",
    code_bytes, double(data_bytes) / double(code_bytes));
  fclose(data_file);
  fclose(code_file);

  delete [] data;
  delete [] dm;
}

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

void Decode_WAV_File(char * code_file_name,
                     char * data_file_name)
{
                                                                 // open files
  unsigned char header[44];
  FILE * code_file = Open_Input_File(HFW_ID, code_file_name, header);
  FILE * data_file = Open_Output_File(WAV_ID, data_file_name, header);
  unsigned file_samples = Audio_Samples(header);

                                                      // memory for audio data
  int * data = new int[3*BufferSize];
  int * left_channel   = data + BufferSize;
  int * right_channel  = data + BufferSize * 2;

  Binary_Codec decoder(5 * BufferSize);

  Adaptive_Huffman_Code * dm = new Adaptive_Huffman_Code[NumModels];
  for (unsigned m = 0; m < NumModels; m++) dm[m].set_alphabet(24);

  unsigned crc = 0;
  do {

    unsigned ns = (file_samples < BufferSize ? file_samples : BufferSize);
    unsigned es = (ns + 63) & 0xFFFFFFC0U;              // next multiple of 64
    file_samples -= ns;

    decoder.read_from_file(code_file);  // read compressed data, start decoder

    Decode_SpP(es, decoder, dm, left_channel);        // decompress transforms
    Decode_SpP(es, decoder, dm, right_channel);

    decoder.stop_decoder();                                    // stop decoder

    SpP_Synthesis(es, left_channel, data);               // compute transforms
    SpP_Synthesis(es, right_channel, data);

    Interleave_Channels(ns, left_channel, right_channel, (short*) data);

    crc ^= Buffer_CRC(4 * ns, (unsigned char *) data);          // compute CRC

    if (fwrite(data, 4, ns, data_file) != ns) Error(W_MSG);      // read audio

  } while (file_samples);

                                                   // check if file is correct
  if (fread(header, 1, 4, code_file) != 4) Error(R_MSG);
  if (crc != Recover_Number(header)) Error("incorrect file CRC");

                                                          // done: close files
  fclose(data_file);
  fclose(code_file);

  delete [] data;
  delete [] dm;
}

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品不卡一区| 国产精品资源网站| 精品一区二区三区欧美| 91在线视频免费91| 欧美成人女星排行榜| 亚洲另类中文字| 成人午夜视频在线| 日韩午夜在线观看| 婷婷中文字幕综合| 色综合久久久久综合体| 国产精品久久久久久久岛一牛影视 | 国产盗摄视频一区二区三区| 欧美在线视频不卡| 亚洲人成精品久久久久| 国产成人自拍网| 精品久久一二三区| 轻轻草成人在线| 欧美精品久久99| 亚洲成av人片在线观看无码| 91在线视频免费观看| 国产精品久久久久影院老司| 国产乱子伦视频一区二区三区 | 精品视频全国免费看| 中文字幕在线观看一区二区| 国内成+人亚洲+欧美+综合在线| 欧美一区二区成人6969| 亚洲大片在线观看| 欧美日韩在线精品一区二区三区激情 | 婷婷久久综合九色综合绿巨人| www.亚洲在线| 中文字幕一区二区三区精华液 | 国产成人欧美日韩在线电影| 久久久一区二区三区| 国产成人av影院| 亚洲国产精品ⅴa在线观看| 国产成人在线影院| 国产精品国产馆在线真实露脸| 成人一区二区三区| 亚洲色图视频免费播放| 日本道精品一区二区三区| 亚洲伦理在线免费看| 色妞www精品视频| 亚洲va欧美va人人爽午夜| 欧美夫妻性生活| 久久精工是国产品牌吗| 久久久久久免费毛片精品| 成人小视频在线观看| 一区二区三区日本| 欧美一区二区三区在线电影| 精品一区二区免费| 国产精品网站在线播放| 91精彩视频在线| 免费国产亚洲视频| 国产欧美精品区一区二区三区| 成人av在线一区二区三区| 亚洲精品日产精品乱码不卡| 91超碰这里只有精品国产| 国产在线精品国自产拍免费| 亚洲国产精华液网站w| 在线观看成人免费视频| 九色综合狠狠综合久久| 国产精品久久久久aaaa| 欧美精选在线播放| 粉嫩av亚洲一区二区图片| 亚洲成年人网站在线观看| 久久久综合视频| 欧美在线观看视频一区二区| 老司机午夜精品99久久| 亚洲欧洲日产国码二区| 日韩三区在线观看| 色综合久久中文字幕综合网| 蜜臀久久99精品久久久画质超高清| 久久久久久一级片| 5月丁香婷婷综合| 波多野结衣在线一区| 日韩高清不卡一区| 国产精品福利一区| 精品国产一区二区三区久久影院| 在线中文字幕一区| 大美女一区二区三区| 日韩高清在线电影| 亚洲综合丁香婷婷六月香| 久久久www成人免费无遮挡大片| 欧美揉bbbbb揉bbbbb| 成人av免费在线| 国产综合一区二区| 人禽交欧美网站| 亚洲在线观看免费| 亚洲欧美韩国综合色| 国产女人18毛片水真多成人如厕| 欧美一区二区大片| 91麻豆精品国产91久久久资源速度 | 国产99久久久国产精品潘金| 日韩国产精品91| 亚洲va欧美va天堂v国产综合| 中文一区在线播放| 久久精品免费在线观看| 7777精品伊人久久久大香线蕉 | 免费观看91视频大全| 亚洲天堂福利av| 国产精品久久久久影院色老大| 26uuu久久天堂性欧美| 欧美大黄免费观看| 日韩一区二区在线播放| 欧美精品v国产精品v日韩精品| 91久久精品一区二区| gogogo免费视频观看亚洲一| 成人免费va视频| 成人性生交大合| www.欧美精品一二区| 国产91精品一区二区麻豆网站| 黑人巨大精品欧美一区| 狠狠狠色丁香婷婷综合久久五月| 六月丁香婷婷色狠狠久久| 美女视频黄 久久| 久久66热偷产精品| 国产在线精品一区二区不卡了 | 视频一区二区欧美| 琪琪久久久久日韩精品| 美女网站一区二区| 国产白丝网站精品污在线入口| 国产伦精品一区二区三区免费迷 | 久久久亚洲国产美女国产盗摄| 日韩精品一区二区三区四区视频| 日韩精品中文字幕一区二区三区| 精品少妇一区二区三区日产乱码 | 亚洲乱码日产精品bd| 亚洲精品v日韩精品| 亚洲与欧洲av电影| 男人的天堂亚洲一区| 狠狠色伊人亚洲综合成人| 国产美女精品一区二区三区| 成人小视频免费观看| 欧美色综合网站| 日韩三级伦理片妻子的秘密按摩| 2020国产精品久久精品美国| 欧美国产一区视频在线观看| 一区二区三区四区中文字幕| 日韩中文字幕亚洲一区二区va在线 | 午夜久久久久久久久| 老司机午夜精品| 99久久婷婷国产综合精品 | 久久久午夜精品| 亚洲日本护士毛茸茸| 日本在线播放一区二区三区| 久久精品国产999大香线蕉| 成人av在线播放网站| 欧美日韩高清一区| 国产人妖乱国产精品人妖| 亚洲国产成人高清精品| 国产综合久久久久影院| 在线观看视频欧美| 久久久国产午夜精品| 亚洲第一二三四区| 成人国产精品免费观看| 7777女厕盗摄久久久| 亚洲欧美影音先锋| 久久精品免费看| 欧美中文字幕一区二区三区亚洲| 久久午夜羞羞影院免费观看| 亚洲精品高清在线| 国产成人在线免费| 91精品国产91久久久久久一区二区 | 成人免费va视频| 日韩欧美一区中文| 亚洲自拍偷拍网站| 99久久精品国产网站| 欧美成人猛片aaaaaaa| 亚洲一二三四在线观看| 成人毛片视频在线观看| 精品国产乱码久久久久久1区2区| 亚洲美女免费视频| 成人午夜视频免费看| 欧美岛国在线观看| 日本不卡一区二区三区 | 成人av网站在线观看免费| 日韩三区在线观看| 日韩精品色哟哟| 欧美色窝79yyyycom| 亚洲欧美日韩在线| 成人性视频免费网站| 久久综合色婷婷| 青青草91视频| 欧美一区二区精美| 天天射综合影视| 51久久夜色精品国产麻豆| 亚洲综合在线电影| 欧美综合色免费| 亚洲一区在线视频| 欧美视频一区在线| 亚洲高清在线视频| 在线日韩av片| 一区二区三区美女| 在线观看视频一区| 亚洲午夜免费福利视频| 欧美探花视频资源| 亚洲国产精品久久久久秋霞影院 | 欧美系列亚洲系列| 一区二区激情小说| 欧美三级在线看|