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

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

?? common.c

?? < VC++視頻音頻開發>> 這本書的源碼
?? C
字號:
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include "common.h"

char *layer_names[3] = { "I", "II", "III" };
int bitrate[3][15] = {
	{0,32,64,96,128,160,192,224,256,288,320,352,384,416,448},
	{0,32,48,56,64,80,96,112,128,160,192,224,256,320,384},
	{0,32,40,48,56,64,80,96,112,128,160,192,224,256,320}
};
double  s_freq[4] = {44.1, 48, 32, 0};
char *mode_names[4] = { "stereo", "j-stereo", "dual-ch", "single-ch" };


FILE *OpenTableFile(char *name)
{
	char fulname[80];
	FILE *f;

	fulname[0] = '\0';

	strcat(fulname, name);
	if( (f=fopen(fulname,"r"))==NULL ) {
		fprintf(stderr,"\nOpenTable: could not find %s\n", fulname);
    }
    return f;
}


void WriteHdr(frame_params *fr_ps)
{
	layer *info = fr_ps->header;

	printf("HDR:  sync=FFF, id=%X, layer=%X, ep=%X, br=%X, sf=%X, pd=%X, ",
		info->version, info->lay, !info->error_protection,
		info->bitrate_index, info->sampling_frequency, info->padding);

	printf("pr=%X, m=%X, js=%X, c=%X, o=%X, e=%X\n",
		info->extension, info->mode, info->mode_ext,
		info->copyright, info->original, info->emphasis);

	printf("layer=%s, tot bitrate=%d, sfrq=%.1f, mode=%s, ",
		layer_names[info->lay-1], bitrate[info->lay-1][info->bitrate_index],
		s_freq[info->sampling_frequency], mode_names[info->mode]);

	printf("sblim=%d, jsbd=%d, ch=%d\n",
		fr_ps->sblimit, fr_ps->jsbound, fr_ps->stereo);
}

void *mem_alloc(unsigned long block, char *item)
{
	void *ptr;
	ptr = (void *)malloc((unsigned long)block);
	if (ptr != NULL)
		memset(ptr, 0, block);
	else{
		printf("Unable to allocate %s\n", item);
		exit(0);
	}
	return ptr;
}

/*打開并初始化緩沖區; */
void alloc_buffer(Bit_stream_struc *bs, int size)
{
	bs->buf = (unsigned char *) mem_alloc(size*sizeof(unsigned char), "buffer");
	bs->buf_size = size;
}

void desalloc_buffer(Bit_stream_struc *bs)
{
	free(bs->buf);
}

/* 打開設備并讀取比特流 */
void open_bit_stream_r(Bit_stream_struc *bs, char *bs_filenam, int size)
{
	register unsigned char flag = 1;

	if ((bs->pt = fopen(bs_filenam, "rb")) == NULL) {
		printf("Could not find \"%s\".\n", bs_filenam);
		exit(1);
	}

	bs->format = BINARY;
	alloc_buffer(bs, size);
	bs->buf_byte_idx=0;
	bs->buf_bit_idx=0;
	bs->totbit=0;
	bs->mode = READ_MODE;
	bs->eob = FALSE;
	bs->eobs = FALSE;
}

void close_bit_stream_r(Bit_stream_struc *bs)
{
	fclose(bs->pt);
	desalloc_buffer(bs);
}

/*返回比特流的狀態*/
/* 如果到達比特流的末尾則返回1 */
/* 如果不能到達比特流的末尾則返回0*/
int end_bs(Bit_stream_struc *bs)
{
  return(bs->eobs);
}


/*返回當前比特流的長度 (bits)*/
unsigned long sstell(Bit_stream_struc *bs)
{
  return(bs->totbit);
}


void refill_buffer(Bit_stream_struc *bs)
{
	register int i=bs->buf_size-2-bs->buf_byte_idx;
	register unsigned long n=1;

	while ((i>=0) && (!bs->eob)) {
			n=fread(&bs->buf[i--], sizeof(unsigned char), 1, bs->pt);
		if (!n)
		bs->eob= i+1;
	}
}


int mask[8]={0x1, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80};

/*從比特流中讀取1比特*/
unsigned int get1bit(Bit_stream_struc *bs)
{
   unsigned int bit;
   register int i;

   bs->totbit++;

   if (!bs->buf_bit_idx) {
        bs->buf_bit_idx = 8;
        bs->buf_byte_idx--;
        if ((bs->buf_byte_idx < MINIMUM) || (bs->buf_byte_idx < bs->eob)) {
             if (bs->eob)
                bs->eobs = TRUE;
             else {
                for (i=bs->buf_byte_idx; i>=0;i--)
                  bs->buf[bs->buf_size-1-bs->buf_byte_idx+i] = bs->buf[i];
                refill_buffer(bs);
                bs->buf_byte_idx = bs->buf_size-1;
             }
        }
   }
   bit = bs->buf[bs->buf_byte_idx]&mask[bs->buf_bit_idx-1];
   bit = bit >> (bs->buf_bit_idx-1);
   bs->buf_bit_idx--;
   return(bit);
}

int putmask[9]={0x0, 0x1, 0x3, 0x7, 0xf, 0x1f, 0x3f, 0x7f, 0xff};

/*從比特流中讀取N比特 */
unsigned long getbits(Bit_stream_struc *bs, int N)
{
	unsigned long val=0;
	register int i;
	register int j = N;
	register int k, tmp;

	if (N > MAX_LENGTH)
		printf("Cannot read or write more than %d bits at a time.\n", MAX_LENGTH);

	bs->totbit += N;
	while (j > 0) {
		if (!bs->buf_bit_idx) {
			bs->buf_bit_idx = 8;
			bs->buf_byte_idx--;
			if ((bs->buf_byte_idx < MINIMUM) || (bs->buf_byte_idx < bs->eob)) {
				if (bs->eob)
					bs->eobs = TRUE;
				else {
					for (i=bs->buf_byte_idx; i>=0;i--)
						bs->buf[bs->buf_size-1-bs->buf_byte_idx+i] = bs->buf[i];
						refill_buffer(bs);
					bs->buf_byte_idx = bs->buf_size-1;
				}
			}
		}
		k = MIN(j, bs->buf_bit_idx);
		tmp = bs->buf[bs->buf_byte_idx]&putmask[bs->buf_bit_idx];
		tmp = tmp >> (bs->buf_bit_idx-k);
		val |= tmp << (j-k);
		bs->buf_bit_idx -= k;
		j -= k;
	}
	return val;
}


int seek_sync(Bit_stream_struc *bs, unsigned long sync, int N)
{
	unsigned long aligning;
	unsigned long val;
	long maxi = (int)pow(2.0, (double)N) - 1;

	aligning = sstell(bs)%ALIGNING;
	if (aligning)
		getbits(bs, (int)(ALIGNING-aligning));

	val = getbits(bs, N);
	while (((val&maxi) != sync) && (!end_bs(bs))) {
		val <<= ALIGNING;
		val |= getbits(bs, ALIGNING);
	}

	if (end_bs(bs))
		return(0);
	else
		return(1);
}

int js_bound(int lay, int m_ext)
{
	static int jsb_table[3][4] =  {
		{ 4, 8, 12, 16 },
		{ 4, 8, 12, 16},
		{ 0, 4, 8, 16}
	};  /* lay+m_e -> jsbound */

    if(lay<1 || lay >3 || m_ext<0 || m_ext>3) {
        fprintf(stderr, "js_bound bad layer/modext (%d/%d)\n", lay, m_ext);
        exit(1);
    }
	return(jsb_table[lay-1][m_ext]);
}

/* 將數據從hdr結構翻譯為fr_ps */
void hdr_to_frps(frame_params *fr_ps)
{
	layer *hdr = fr_ps->header;     /* (or pass in as arg?) */

	fr_ps->actual_mode = hdr->mode;
	fr_ps->stereo = (hdr->mode == MPG_MD_MONO) ? 1 : 2;
	fr_ps->sblimit = SBLIMIT;
	if(hdr->mode == MPG_MD_JOINT_STEREO)
		fr_ps->jsbound = js_bound(hdr->lay, hdr->mode_ext);
	else
		fr_ps->jsbound = fr_ps->sblimit;
}

#define	BUFSIZE	4096
static unsigned int buf[BUFSIZE];
static unsigned int buf_bit_idx=8;
static unsigned long offset, totbit=0, buf_byte_idx=0;

void hputbuf(unsigned int val, int N)
{
	if (N != 8) {
		printf("Not Supported yet!!\n");
		exit(-3);
	}
	buf[offset % BUFSIZE] = val;
	offset++;
}

/*返回當前比特流的長度 (bits)*/
unsigned long hsstell()
{
	return(totbit);
}

/*從比特流中讀取N比特*/
unsigned long hgetbits(int N)
{
	unsigned long val=0;
	register int j = N;
	register int k, tmp;

/*
	 if (N > MAX_LENGTH)
		 printf("Cannot read or write more than %d bits at a time.\n", MAX_LENGTH);
*/
	totbit += N;
	while (j > 0) {
		if (!buf_bit_idx) {
			buf_bit_idx = 8;
			buf_byte_idx++;
			if (buf_byte_idx > offset) {
				printf("Buffer overflow !!\n");
				exit(3);
			}
		}
		k = MIN(j, buf_bit_idx);
		tmp = buf[buf_byte_idx%BUFSIZE]&putmask[buf_bit_idx];
		tmp = tmp >> (buf_bit_idx-k);
		val |= tmp << (j-k);
		buf_bit_idx -= k;
		j -= k;
	}
	return(val);
}


unsigned int hget1bit()
{
	return(hgetbits(1));
}


void rewindNbits(int N)
{
	totbit -= N;
	buf_bit_idx += N;
	while( buf_bit_idx >= 8 ){
		buf_bit_idx -= 8;
		buf_byte_idx--;
	}
}


void rewindNbytes(int N)
{
	totbit -= N*8;
	buf_byte_idx -= N;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
奇米一区二区三区| 色婷婷久久久综合中文字幕 | 在线观看欧美日本| 亚洲国产wwwccc36天堂| 欧美日韩国产另类一区| 亚洲成a人v欧美综合天堂| 6080日韩午夜伦伦午夜伦| 男人操女人的视频在线观看欧美| 在线播放欧美女士性生活| 蜜臀99久久精品久久久久久软件| 久久久蜜臀国产一区二区| 成人午夜激情在线| 亚洲欧美日韩国产手机在线| 91成人在线免费观看| 天天操天天色综合| 久久网站最新地址| 成人免费视频caoporn| 一区二区三区免费网站| 777亚洲妇女| 国产成人欧美日韩在线电影| 1024成人网| 67194成人在线观看| 国产乱人伦偷精品视频不卡| 国产精品国产三级国产普通话99| 欧美吻胸吃奶大尺度电影| 国内国产精品久久| 国产精品第四页| 欧美电影在线免费观看| 福利一区福利二区| 香蕉久久一区二区不卡无毒影院| 精品电影一区二区| 欧美亚洲精品一区| 国产乱码精品一区二区三| 亚洲精品国产a| 精品国产乱码久久久久久久久 | 免费日韩伦理电影| 久久精品欧美一区二区三区不卡 | 欧美最猛黑人xxxxx猛交| 免费xxxx性欧美18vr| 1024成人网| 欧美自拍偷拍午夜视频| 国产综合色视频| 夜夜嗨av一区二区三区| www国产成人| 在线成人av网站| av一本久道久久综合久久鬼色| 秋霞av亚洲一区二区三| 1区2区3区国产精品| 久久影院午夜论| 91精品国产91久久综合桃花| 99天天综合性| 国产麻豆一精品一av一免费| 亚洲成av人影院| 亚洲欧洲性图库| 久久久99精品久久| 日韩一级成人av| 日本国产一区二区| 成人av网址在线| 韩国女主播一区| 奇米精品一区二区三区四区 | 亚洲一级二级在线| 国产精品久久久久久久午夜片| 91精品国产一区二区人妖| 日本电影欧美片| 99精品国产视频| 成人在线综合网站| 国产精品一区二区久久不卡| 久久精品国产一区二区| 日韩黄色小视频| 婷婷开心激情综合| 亚洲成人福利片| 亚洲国产日韩在线一区模特 | 图片区小说区区亚洲影院| 亚洲欧美电影一区二区| 自拍偷拍亚洲欧美日韩| 国产精品日韩成人| 国产精品私房写真福利视频| 欧美经典一区二区| 欧美国产欧美亚州国产日韩mv天天看完整 | 日本精品视频一区二区三区| 91无套直看片红桃| 91污在线观看| 欧美体内she精视频| 欧美三级视频在线播放| 欧美精品色一区二区三区| 欧洲视频一区二区| 精品视频在线免费看| 欧美吻胸吃奶大尺度电影| 欧美日韩国产天堂| 欧美一级黄色录像| 亚洲精品在线三区| 国产清纯美女被跳蛋高潮一区二区久久w| 久久亚区不卡日本| 中国色在线观看另类| 亚洲国产精品高清| 亚洲在线视频一区| 三级不卡在线观看| 国产成人久久精品77777最新版本| 国产一区二区三区免费播放| 国产高清在线精品| 91色.com| 91精品国产综合久久久蜜臀图片| 日韩女优av电影| 久久久欧美精品sm网站| 综合久久久久久| 午夜成人免费电影| 国产一区二区三区四区五区美女 | 亚洲乱码国产乱码精品精小说| 亚洲裸体在线观看| 视频一区欧美日韩| 国产成人av一区二区三区在线| bt欧美亚洲午夜电影天堂| 欧洲精品视频在线观看| 欧美一个色资源| 中文字幕欧美三区| 午夜欧美在线一二页| 国产不卡免费视频| 欧美丝袜丝交足nylons| 久久先锋影音av鲁色资源网| 一区二区三区不卡在线观看| 人人精品人人爱| 成人免费不卡视频| 91精品国产综合久久久久久| 国产三区在线成人av| 亚洲成人av电影在线| 国产麻豆成人精品| 欧美日韩视频在线观看一区二区三区| 亚洲精品一区二区在线观看| 亚洲欧美另类综合偷拍| 国内成人精品2018免费看| 在线观看日韩一区| 欧美国产欧美综合| 日本不卡不码高清免费观看| 91老师片黄在线观看| 国产清纯白嫩初高生在线观看91| 性做久久久久久久免费看| 成人黄色a**站在线观看| 欧美成人女星排名| 午夜一区二区三区在线观看| 成人免费三级在线| 精品99999| 亚洲午夜激情网站| 91在线精品一区二区三区| 久久新电视剧免费观看| 日韩1区2区日韩1区2区| 在线观看视频欧美| 亚洲精品国久久99热| 国产成人亚洲综合a∨婷婷图片| 777午夜精品免费视频| 亚洲精品ww久久久久久p站| 国产乱码精品一区二区三区五月婷| 欧美精品黑人性xxxx| 亚洲另类在线视频| 成人午夜免费视频| 国产女人水真多18毛片18精品视频| 日本美女视频一区二区| 日本高清视频一区二区| 亚洲欧美色图小说| 99re视频精品| 国产精品福利影院| 成人精品视频网站| 国产精品久久久久精k8| 风流少妇一区二区| 欧美经典一区二区| www..com久久爱| 中文字幕亚洲精品在线观看| 高清在线不卡av| 中文字幕日韩av资源站| 成人美女视频在线看| 一区二区中文字幕在线| 色综合av在线| 亚洲福中文字幕伊人影院| 欧美精品 国产精品| 日韩电影免费在线看| 日韩午夜激情电影| 国产在线播放一区二区三区| 久久久久久99精品| 成人av在线网| 一区二区三区毛片| 7777女厕盗摄久久久| 奇米精品一区二区三区在线观看一| 日韩欧美中文字幕公布| 极品美女销魂一区二区三区| 337p粉嫩大胆噜噜噜噜噜91av| 激情小说亚洲一区| 久久精品一区二区三区不卡牛牛| 韩国精品免费视频| 国产精品国产三级国产普通话99 | 欧美性一级生活| 日韩成人免费电影| 日韩午夜在线播放| 成人深夜视频在线观看| 亚洲日本va午夜在线电影| 欧美日韩高清一区| 另类小说综合欧美亚洲| 欧美国产精品久久| 欧美系列亚洲系列| 久久激情五月激情| 国产精品人人做人人爽人人添| 在线观看日韩电影|