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

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

?? bitstream.c

?? MP3編碼程序和資料
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* *	MP3 bitstream Output interface for LAME * *	Copyright (c) 1999 Takehiro TOMINAGA * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */#include <stdlib.h>#include <assert.h>#include <stdio.h>#include "tables.h"#include "bitstream.h"#include "quantize.h"#include "quantize-pvt.h"#include "version.h"/* This is the scfsi_band table from 2.4.2.7 of the IS */const int scfsi_band[5] = { 0, 6, 11, 16, 21 };#define MAX_LENGTH      32   /* Maximum length of word written or                                        read from bit stream */#ifdef DEBUGstatic int hoge, hogege;#endifconst int pmask[8]={0x1, 0x3, 0x7, 0xf, 0x1f, 0x3f, 0x7f, 0xff};void putheader_bits(lame_internal_flags *gfc,int w_ptr){    Bit_stream_struc *bs;    bs = &gfc->bs;#ifdef DEBUG    hoge += gfc->sideinfo_len * 8;    hogege += gfc->sideinfo_len * 8;#endif    memcpy(&bs->buf[bs->buf_byte_idx], gfc->header[gfc->w_ptr].buf,	   gfc->sideinfo_len);    bs->buf_byte_idx += gfc->sideinfo_len;    bs->totbit += gfc->sideinfo_len * 8;    gfc->w_ptr = (gfc->w_ptr + 1) & (MAX_HEADER_BUF - 1);}/*write N bits into the bit stream */static INLINE voidputbits2(lame_global_flags *gfp, unsigned int val, int j){    lame_internal_flags *gfc=gfp->internal_flags;    Bit_stream_struc *bs;    bs = &gfc->bs;    assert(j <= MAX_LENGTH);    if (j<MAX_LENGTH)      {	if (val >= (1 << j)) {	  DEBUGF("val=%ui %i \n",val,(1<<j));	}      assert(val < (1 << j));  /* 1 << 32 wont work on 32 bit machines */      }    while (j > 0) {	int k;	if (bs->buf_bit_idx == 0) {	    bs->buf_bit_idx = 8;	    bs->buf_byte_idx++;	    assert(bs->buf_byte_idx < BUFFER_SIZE);	    assert(gfc->header[gfc->w_ptr].write_timing >= bs->totbit);	    if (gfc->header[gfc->w_ptr].write_timing == bs->totbit) {	      putheader_bits(gfc,gfc->w_ptr);	    }	    bs->buf[bs->buf_byte_idx] = 0;	}	k = Min(j, bs->buf_bit_idx);	bs->buf[bs->buf_byte_idx]	    |= ((val >> (j-k)) & pmask[k - 1]) << (bs->buf_bit_idx - k);	bs->buf_bit_idx -= k;	j -= k;	bs->totbit += k;    }}/*  Some combinations of bitrate, Fs, and stereo make it impossible to stuff  out a frame using just main_data, due to the limited number of bits to  indicate main_data_length. In these situations, we put stuffing bits into  the ancillary data...*/static INLINE voiddrain_into_ancillary(lame_global_flags *gfp,int remainingBits){    lame_internal_flags *gfc=gfp->internal_flags;    int i,bits;    assert(remainingBits >= 0);#ifdef DEBUG    DEBUGF("remain %d\n",remainingBits);    hoge += remainingBits;    hogege += remainingBits;#endif    if (remainingBits >= 8) {      putbits2(gfp,0x4c,8);      remainingBits -= 8;    }    if (remainingBits >= 8) {      putbits2(gfp,0x41,8);      remainingBits -= 8;    }    if (remainingBits >= 8) {      putbits2(gfp,0x4d,8);      remainingBits -= 8;    }    if (remainingBits >= 8) {      putbits2(gfp,0x45,8);      remainingBits -= 8;    }          if (remainingBits >= 32) {      char * version;      version = get_lame_version();      if (remainingBits >= 32) 	for (i=0; i<strlen(version) && remainingBits >=8 ; ++i) {	  remainingBits -= 8;	  putbits2(gfp,(unsigned int)version[i],8);	}    }    bits = remainingBits & (MAX_LENGTH - 1);    for (i=0; i<bits; ++i) {      putbits2(gfp,gfc->ancillary_flag,1);      gfc->ancillary_flag = 1-gfc->ancillary_flag;    }    remainingBits /= MAX_LENGTH;    for (; remainingBits > 0; remainingBits--) {      if (gfc->ancillary_flag)	putbits2(gfp,0xAAAAAAAA, MAX_LENGTH);      else	putbits2(gfp,0x55555555, MAX_LENGTH);    }}/*write N bits into the header */static INLINE voidwriteheader(lame_internal_flags *gfc,unsigned int val, int j){    int ptr = gfc->header[gfc->h_ptr].ptr;    assert(j <= MAX_LENGTH);    while (j > 0) {	int k = Min(j, 8 - (ptr & 7));	gfc->header[gfc->h_ptr].buf[ptr >> 3]	    |= ((val >> (j-k)) & pmask[k-1]) << (8 - (ptr & 7) - k);	ptr += k;	j -= k;    }    gfc->header[gfc->h_ptr].ptr = ptr;}/* (jo) this wrapper function for BF_addEntry() updates also the crc */static voidCRC_writeheader(lame_internal_flags *gfc,unsigned int value, int length,unsigned int *crc){   unsigned int bit = 1 << length;   while((bit >>= 1)){      *crc <<= 1;      if (!(*crc & 0x10000) ^ !(value & bit))	*crc ^= CRC16_POLYNOMIAL;   }   *crc &= 0xffff;   writeheader(gfc,value, length);}static INLINE voidencodeSideInfo2(lame_global_flags *gfp,int bitsPerFrame){    lame_internal_flags *gfc=gfp->internal_flags;    III_side_info_t *l3_side;    int gr, ch;    unsigned int crc;        l3_side = &gfc->l3_side;    gfc->header[gfc->h_ptr].ptr = 0;    memset(gfc->header[gfc->h_ptr].buf, 0, gfc->sideinfo_len);    crc = 0xffff; /* (jo) init crc16 for error_protection */    if (gfp->out_samplerate < 16000)       writeheader(gfc,0xffe,                12);    else      writeheader(gfc,0xfff,                12);    writeheader(gfc,(unsigned int)(gfp->version),            1);    writeheader(gfc,4 - 3,                 2);    writeheader(gfc,(unsigned int)(!gfp->error_protection),  1);    /* (jo) from now on call the CRC_writeheader() wrapper to update crc */    CRC_writeheader(gfc,(unsigned int)(gfc->bitrate_index),      4,&crc);    CRC_writeheader(gfc,(unsigned int)(gfc->samplerate_index),   2,&crc);    CRC_writeheader(gfc,(unsigned int)(gfc->padding),            1,&crc);    CRC_writeheader(gfc,(unsigned int)(gfp->extension),          1,&crc);    CRC_writeheader(gfc,(unsigned int)(gfp->mode),               2,&crc);    CRC_writeheader(gfc,(unsigned int)(gfc->mode_ext),           2,&crc);    CRC_writeheader(gfc,(unsigned int)(gfp->copyright),          1,&crc);    CRC_writeheader(gfc,(unsigned int)(gfp->original),           1,&crc);    CRC_writeheader(gfc,(unsigned int)(gfp->emphasis),           2,&crc);    if (gfp->error_protection) {	writeheader(gfc,0, 16); /* dummy */    }    if (gfp->version == 1) {	/* MPEG1 */	assert(l3_side->main_data_begin >= 0);	CRC_writeheader(gfc,(unsigned int)(l3_side->main_data_begin), 9,&crc);	if (gfc->stereo == 2)	    CRC_writeheader(gfc,l3_side->private_bits, 3,&crc);	else	    CRC_writeheader(gfc,l3_side->private_bits, 5,&crc);	for (ch = 0; ch < gfc->stereo; ch++) {	    int band;	    for (band = 0; band < 4; band++) {		CRC_writeheader(gfc,l3_side->scfsi[ch][band], 1,&crc);	    }	}	for (gr = 0; gr < 2; gr++) {	    for (ch = 0; ch < gfc->stereo; ch++) {		gr_info *gi = &l3_side->gr[gr].ch[ch].tt;		CRC_writeheader(gfc,gi->part2_3_length,       12,&crc);		CRC_writeheader(gfc,gi->big_values / 2,        9,&crc);		CRC_writeheader(gfc,gi->global_gain,           8,&crc);		CRC_writeheader(gfc,gi->scalefac_compress,     4,&crc);		CRC_writeheader(gfc,gi->window_switching_flag, 1,&crc);		if (gi->window_switching_flag) {		    CRC_writeheader(gfc,gi->block_type,       2,&crc);		    CRC_writeheader(gfc,gi->mixed_block_flag, 1,&crc);		    if (gi->table_select[0] == 14)			gi->table_select[0] = 16;		    CRC_writeheader(gfc,gi->table_select[0],  5,&crc);		    if (gi->table_select[1] == 14)			gi->table_select[1] = 16;		    CRC_writeheader(gfc,gi->table_select[1],  5,&crc);		    CRC_writeheader(gfc,gi->subblock_gain[0], 3,&crc);		    CRC_writeheader(gfc,gi->subblock_gain[1], 3,&crc);		    CRC_writeheader(gfc,gi->subblock_gain[2], 3,&crc);		} else {		    assert(gi->block_type == NORM_TYPE);		    if (gi->table_select[0] == 14)			gi->table_select[0] = 16;		    CRC_writeheader(gfc,gi->table_select[0], 5,&crc);		    if (gi->table_select[1] == 14)			gi->table_select[1] = 16;		    CRC_writeheader(gfc,gi->table_select[1], 5,&crc);		    if (gi->table_select[2] == 14)			gi->table_select[2] = 16;		    CRC_writeheader(gfc,gi->table_select[2], 5,&crc);		    CRC_writeheader(gfc,gi->region0_count, 4,&crc);		    CRC_writeheader(gfc,gi->region1_count, 3,&crc);		}		CRC_writeheader(gfc,gi->preflag,            1,&crc);		CRC_writeheader(gfc,gi->scalefac_scale,     1,&crc);		CRC_writeheader(gfc,gi->count1table_select, 1,&crc);	    }	}    } else {	/* MPEG2 */	assert(l3_side->main_data_begin >= 0);	CRC_writeheader(gfc,(unsigned int)(l3_side->main_data_begin), 8,&crc);	CRC_writeheader(gfc,l3_side->private_bits, gfc->stereo,&crc);	gr = 0;	for (ch = 0; ch < gfc->stereo; ch++) {	    gr_info *gi = &l3_side->gr[gr].ch[ch].tt;	    CRC_writeheader(gfc,gi->part2_3_length,       12,&crc);	    CRC_writeheader(gfc,gi->big_values / 2,        9,&crc);	    CRC_writeheader(gfc,gi->global_gain,           8,&crc);	    CRC_writeheader(gfc,gi->scalefac_compress,     9,&crc);	    CRC_writeheader(gfc,gi->window_switching_flag, 1,&crc);	    if (gi->window_switching_flag) {		CRC_writeheader(gfc,gi->block_type,       2,&crc);		CRC_writeheader(gfc,gi->mixed_block_flag, 1,&crc);		if (gi->table_select[0] == 14)		    gi->table_select[0] = 16;		CRC_writeheader(gfc,gi->table_select[0],  5,&crc);		if (gi->table_select[1] == 14)		    gi->table_select[1] = 16;		CRC_writeheader(gfc,gi->table_select[1],  5,&crc);		CRC_writeheader(gfc,gi->subblock_gain[0], 3,&crc);		CRC_writeheader(gfc,gi->subblock_gain[1], 3,&crc);		CRC_writeheader(gfc,gi->subblock_gain[2], 3,&crc);	    } else {		if (gi->table_select[0] == 14)		    gi->table_select[0] = 16;		CRC_writeheader(gfc,gi->table_select[0], 5,&crc);		if (gi->table_select[1] == 14)		    gi->table_select[1] = 16;		CRC_writeheader(gfc,gi->table_select[1], 5,&crc);		if (gi->table_select[2] == 14)		    gi->table_select[2] = 16;		CRC_writeheader(gfc,gi->table_select[2], 5,&crc);		CRC_writeheader(gfc,gi->region0_count, 4,&crc);		CRC_writeheader(gfc,gi->region1_count, 3,&crc);	    }	    CRC_writeheader(gfc,gi->scalefac_scale,     1,&crc);	    CRC_writeheader(gfc,gi->count1table_select, 1,&crc);	}    }    if (gfp->error_protection) {	/* (jo) error_protection: add crc16 information to header */	gfc->header[gfc->h_ptr].buf[4] = crc >> 8;	gfc->header[gfc->h_ptr].buf[5] = crc & 255;    }    {	int old = gfc->h_ptr;	assert(gfc->header[old].ptr == gfc->sideinfo_len * 8);	gfc->h_ptr = (old + 1) & (MAX_HEADER_BUF - 1);	gfc->header[gfc->h_ptr].write_timing =	    gfc->header[old].write_timing + bitsPerFrame;	if (gfc->h_ptr == gfc->w_ptr) {	  /* yikes! we are out of header buffer space */	  ERRORF("Error: MAX_HEADER_BUF too small in bitstream.c \n");	}    }}static INLINE inthuffman_coder_count1(lame_global_flags *gfp,int *ix, gr_info *gi){#ifdef DEBUG    lame_internal_flags *gfc = gfp->internal_flags;#endif    /* Write count1 area */    const struct huffcodetab *h = &ht[gi->count1table_select + 32];    int i,bits=0;#ifdef DEBUG    int gegebo = gfc->bs.totbit;#endif    ix += gi->big_values;    assert(gi->count1table_select < 2);    for (i = (gi->count1 - gi->big_values) / 4; i > 0; --i) {	HUFFBITS huffbits = 0;	int p = 0, v;	v = ix[0];	if (v) {	    p += 8;	    if (v < 0)		huffbits++;	    assert(-1 <= v && v <= 1);	}	v = ix[1];	if (v) {	    p += 4;	    huffbits *= 2;	    if (v < 0)		huffbits++;	    assert(-1 <= v && v <= 1);	}	v = ix[2];	if (v) {	    p += 2;	    huffbits *= 2;	    if (v < 0)		huffbits++;	    assert(-1 <= v && v <= 1);	}	v = ix[3];	if (v) {	    p++;	    huffbits *= 2;	    if (v < 0)		huffbits++;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日本在线观看| 亚洲欧美一区二区视频| 国产精品五月天| 亚洲国产精品影院| 成人a区在线观看| 日韩欧美视频一区| 亚洲一二三四在线观看| 国产宾馆实践打屁股91| 欧美一区二区三区成人| 亚洲精品国产视频| 国产成人aaa| 精品国产乱码久久久久久蜜臀| 樱桃视频在线观看一区| 从欧美一区二区三区| 久久综合给合久久狠狠狠97色69| 亚洲愉拍自拍另类高清精品| 成人久久18免费网站麻豆| 精品欧美一区二区在线观看 | 久久久久国色av免费看影院| 五月婷婷久久丁香| 欧美日韩精品电影| 一区二区三区波多野结衣在线观看 | 久久久国产精品午夜一区ai换脸| 亚洲国产精品尤物yw在线观看| 成人国产免费视频| 国产精品久久影院| 国产69精品久久久久毛片| 国产亚洲精品久| 国产一区二区在线看| 日韩欧美在线网站| 美女视频网站久久| 精品国免费一区二区三区| 久久99精品久久久久久国产越南 | 色欧美片视频在线观看| 中文字幕+乱码+中文字幕一区| 国产在线播放一区| 国产三区在线成人av| 国产精品一区免费视频| 国产视频一区二区三区在线观看| 激情文学综合网| 国产视频在线观看一区二区三区| 大白屁股一区二区视频| 国产精品久久久久久久久果冻传媒| 成人永久aaa| 一区在线播放视频| 欧美性生活久久| 日本特黄久久久高潮| 精品国产一区二区三区四区四| 精品一区二区三区香蕉蜜桃 | 91麻豆精品国产自产在线| 午夜精品久久久久久久| 日韩一二三四区| 国产jizzjizz一区二区| 亚洲欧美色一区| 欧美天堂一区二区三区| 免费xxxx性欧美18vr| 国产日本一区二区| 在线视频一区二区三| 日韩电影在线一区二区三区| 欧美成人猛片aaaaaaa| 不卡免费追剧大全电视剧网站| 亚洲免费大片在线观看| 911精品产国品一二三产区 | 亚洲电影中文字幕在线观看| 日韩天堂在线观看| 99麻豆久久久国产精品免费| 亚洲国产精品精华液网站| 久久久久国产成人精品亚洲午夜| 91视频观看视频| 日本不卡一区二区| 国产精品久久久久久久久免费丝袜 | 99久久免费视频.com| 一区二区欧美精品| 久久精品一区蜜桃臀影院| 91在线播放网址| 久草热8精品视频在线观看| ...av二区三区久久精品| 欧美一级精品大片| 色素色在线综合| 国产伦理精品不卡| 日韩电影网1区2区| 综合色天天鬼久久鬼色| 欧美成人video| 欧美日韩国产成人在线91| 懂色中文一区二区在线播放| 午夜国产精品一区| 亚洲素人一区二区| 久久久久久久久99精品| 6080日韩午夜伦伦午夜伦| 99久久99精品久久久久久| 韩国一区二区三区| 日本中文在线一区| 亚洲国产精品一区二区尤物区| 国产精品毛片a∨一区二区三区| 91精品在线一区二区| 91福利资源站| 91视视频在线直接观看在线看网页在线看 | 国产资源在线一区| 日本成人在线电影网| 亚洲第一成人在线| 亚洲一二三区视频在线观看| 国产精品美女久久久久久久久久久 | 一区二区三区四区激情| 久久精品人人做人人综合 | 777久久久精品| 日本乱人伦一区| 色综合久久综合网97色综合| 懂色av一区二区三区蜜臀 | 男女男精品视频| 亚洲第一电影网| 天堂va蜜桃一区二区三区| 亚洲一区在线播放| 亚洲综合成人在线视频| 一区二区视频免费在线观看| 亚洲黄色在线视频| 一区二区三区视频在线观看| 亚洲欧洲制服丝袜| 亚洲激情五月婷婷| 一区二区三区日韩在线观看| 一区二区成人在线| 亚洲高清免费一级二级三级| 性欧美疯狂xxxxbbbb| 午夜一区二区三区在线观看| 日韩经典中文字幕一区| 青青草97国产精品免费观看| 日韩精品色哟哟| 久久www免费人成看片高清| 久久se精品一区二区| 国产精品1024| 99久久婷婷国产| 欧美日本视频在线| 日韩免费一区二区| 久久久久久久久久久久久女国产乱| 欧美国产丝袜视频| 一区二区三区日韩欧美| 日韩av成人高清| 黄色小说综合网站| 本田岬高潮一区二区三区| 在线观看日韩毛片| 91精品国产黑色紧身裤美女| 欧美大肚乱孕交hd孕妇| 中文字幕av一区二区三区免费看| 亚洲乱码中文字幕| 日本不卡一区二区三区高清视频| 国产99久久久国产精品| 欧美三区在线观看| 久久久久亚洲综合| 亚洲小说春色综合另类电影| 激情综合网激情| 色老汉av一区二区三区| 精品成人在线观看| 亚洲精品久久7777| 国产一区二区导航在线播放| 91在线视频18| 日韩一区二区电影在线| 国产精品国产三级国产aⅴ原创| 婷婷丁香久久五月婷婷| 成人激情动漫在线观看| 51精品视频一区二区三区| 国产欧美一区二区精品秋霞影院 | 中文字幕亚洲精品在线观看 | 日韩亚洲欧美综合| ...av二区三区久久精品| 精油按摩中文字幕久久| 在线观看日韩电影| 久久久久久电影| 首页国产丝袜综合| 色偷偷成人一区二区三区91| 久久综合狠狠综合久久综合88 | 亚洲欧美一区二区视频| 久久99蜜桃精品| 欧美精选在线播放| 亚洲卡通动漫在线| 成人激情免费视频| 久久嫩草精品久久久精品一| 亚洲二区在线观看| 色美美综合视频| 国产午夜精品一区二区三区视频| 亚洲国产精品一区二区尤物区| 成人动漫一区二区三区| 久久蜜桃av一区精品变态类天堂 | 精品国产网站在线观看| 日本伊人色综合网| 欧美三级电影在线观看| 中文字幕视频一区| 成人国产精品免费观看视频| 国产亚洲精品7777| 国产一区在线精品| 欧美大胆人体bbbb| 久久超级碰视频| 日韩欧美电影一区| 免费高清成人在线| 日韩欧美一区二区三区在线| 视频一区视频二区中文| 欧美美女bb生活片| 婷婷一区二区三区| 欧美一级日韩免费不卡| 蜜臀精品久久久久久蜜臀| 在线播放国产精品二区一二区四区| 亚洲一区二区视频|