⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 huffman.c

📁 mp3文件格式与wav文件格式的音频文件转换工具
💻 C
📖 第 1 页 / 共 2 页
字号:
{ 6, 6, 0,   0,t8HB, t8l},{ 6, 6, 0,   0,t9HB, t9l},{ 8, 8, 0,   0,t10HB, t10l},{ 8, 8, 0,   0,t11HB, t11l},{ 8, 8, 0,   0,t12HB, t12l},{16,16, 0,   0,t13HB, t13l},{ 0, 0, 0,   0,NULL,NULL},// Apparently not used{16,16, 0,   0,t15HB, t15l},{16,16, 1,   1,t16HB, t16l},{16,16, 2,   3,t16HB, t16l},{16,16, 3,   7,t16HB, t16l},{16,16, 4,  15,t16HB, t16l},{16,16, 6,  63,t16HB, t16l},{16,16, 8, 255,t16HB, t16l},{16,16,10,1023,t16HB, t16l},{16,16,13,8191,t16HB, t16l},{16,16, 4,  15,t24HB, t24l},{16,16, 5,  31,t24HB, t24l},{16,16, 6,  63,t24HB, t24l},{16,16, 7, 127,t24HB, t24l},{16,16, 8, 255,t24HB, t24l},{16,16, 9, 511,t24HB, t24l},{16,16,11,2047,t24HB, t24l},{16,16,13,8191,t24HB, t24l},{ 1,16, 0,   0,t32HB, t32l},{ 1,16, 0,   0,t33HB, t33l},};	/* do the huffman coding,  *//* note! for counta,countb - the 4 bit value is passed in y, set x to 0 *//* return value: 0-no error, 1 decode error				*/void huffman_coder(unsigned int x,                   unsigned int y,                   struct huffcodetab *h,                   L3_bitstream_t *bs){  HUFFBITS huffbits; /* data left aligned */  HUFFBITS linbitsX;   HUFFBITS linbitsY;  unsigned int len;  unsigned int xl1 = h->xlen-1;  unsigned int yl1 = h->ylen-1;  linbitsX = 0;  linbitsY = 0;  if (h->table == NULL) return;  if (((x < xl1) || (xl1==0)) && (y < yl1)) {    huffbits = h->table[x*(h->xlen)+y];    len = h->hlen[x*(h->xlen)+y];    putbits(bs,huffbits,len);    return;  }    else if (x >= xl1) {    linbitsX = x-xl1;    if (linbitsX > h->linmax) {      linbitsX= h->linmax;    };    if (y >= yl1) {      huffbits = h->table[(h->ylen)*(h->xlen)-1];      len = h->hlen[(h->ylen)*(h->xlen)-1];      putbits(bs,huffbits,len);      linbitsY = y-yl1;      if (linbitsY > h->linmax) {        linbitsY = h->linmax;      };      if (h->linbits) {        putbits(bs,linbitsX,h->linbits);        putbits(bs,linbitsY,h->linbits);      }    }     else { /* x>= h->xlen, y<h->ylen */      huffbits = h->table[(h->ylen)*xl1+y];      len = h->hlen[(h->ylen)*xl1+y];      putbits(bs,huffbits,len);      if (h->linbits) {        putbits(bs,linbitsX,h->linbits);      }    }  }  else  { /* ((x < h->xlen) && (y>=h->ylen)) */    huffbits = h->table[(h->ylen)*x+yl1];    len = h->hlen[(h->ylen)*x+yl1];    putbits(bs,huffbits,len);    linbitsY = y-yl1;    if (linbitsY > h->linmax) {      linbitsY = h->linmax;    };    if (h->linbits) {       putbits(bs,linbitsY,h->linbits);    }  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -