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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? common.c

?? VC++視頻開發(fā)實例集錦(包括“遠程視頻監(jiān)控”"語音識別系統(tǒng)"等13個經(jīng)典例子)
?? 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;
}

/*打開并初始化緩沖區(qū); */
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);
}

/* 打開設(shè)備并讀取比特流 */
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);
}

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


/*返回當(dāng)前比特流的長度 (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]);
}

/* 將數(shù)據(jù)從hdr結(jié)構(gòu)翻譯為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++;
}

/*返回當(dāng)前比特流的長度 (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;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
专区另类欧美日韩| 亚洲一区二区三区在线播放| 色综合 综合色| 国产精品一级在线| 五月综合激情网| 综合自拍亚洲综合图不卡区| 精品免费99久久| 欧美午夜精品一区二区三区| 成人亚洲一区二区一| 日韩电影在线观看一区| 亚洲综合激情小说| 中文字幕精品一区二区三区精品| 日韩欧美一二三| 欧美群妇大交群的观看方式| 91免费观看在线| 成人精品gif动图一区| 久久99深爱久久99精品| 丝袜诱惑亚洲看片| 一区av在线播放| 中文字幕一区二区三区不卡| 久久―日本道色综合久久| 欧美一级国产精品| 欧美一区二区三区视频在线观看| 一本大道av伊人久久综合| a级精品国产片在线观看| 国产福利91精品| 国产精品一品二品| 国产成人精品免费一区二区| 国产精品中文字幕一区二区三区| 欧美aa在线视频| 亚洲丰满少妇videoshd| 亚洲一区在线看| 亚洲二区在线观看| 亚洲成人激情社区| 亚欧色一区w666天堂| 亚洲一区二区三区四区在线| 一区二区三区四区在线免费观看| 日韩美女精品在线| 亚洲伦在线观看| 亚洲精品高清视频在线观看| 亚洲欧美aⅴ...| 亚洲综合成人在线视频| 首页亚洲欧美制服丝腿| 日本视频一区二区| 国产资源在线一区| 国产精品一线二线三线| 国产·精品毛片| 99免费精品在线| 在线观看免费成人| 制服丝袜亚洲色图| 日韩欧美国产小视频| 久久精品一区二区三区四区| 国产精品久久精品日日| 日韩毛片在线免费观看| 亚洲成人精品影院| 老色鬼精品视频在线观看播放| 国产一区二区三区免费在线观看| 国产精品亚洲专一区二区三区| av动漫一区二区| 在线亚洲精品福利网址导航| 7777精品伊人久久久大香线蕉经典版下载 | 国产精品一区久久久久| 成人一级黄色片| 欧美午夜精品久久久久久超碰 | 成人精品一区二区三区中文字幕| 一本大道av一区二区在线播放| 欧美精品 日韩| 久久精品免视看| 亚洲与欧洲av电影| 激情偷乱视频一区二区三区| 91亚洲午夜精品久久久久久| 91精品欧美久久久久久动漫| 国产三级精品三级| 一区二区三区不卡在线观看 | 麻豆91在线观看| 国产成人免费在线| 欧美日韩视频专区在线播放| 精品福利av导航| 亚洲欧美另类图片小说| 久久精品噜噜噜成人av农村| 波波电影院一区二区三区| 欧美人狂配大交3d怪物一区| 国产精品午夜电影| 日本va欧美va精品| 91在线视频播放地址| 日韩欧美国产不卡| 亚洲欧美日本韩国| 激情丁香综合五月| 在线亚洲一区观看| 久久精品欧美一区二区三区不卡| 亚洲国产综合视频在线观看| 国产成a人亚洲| 69堂精品视频| 亚洲日本乱码在线观看| 国产乱码精品一品二品| 欧美男人的天堂一二区| 国产精品传媒视频| 国产制服丝袜一区| 91精品国产丝袜白色高跟鞋| 亚洲美女区一区| 东方aⅴ免费观看久久av| 欧美一区二区私人影院日本| 亚洲精品国产无套在线观| 国产99一区视频免费| 日韩欧美国产1| 天天色 色综合| 色av成人天堂桃色av| 国产精品不卡一区二区三区| 国产精品一区二区在线播放| 欧美一区二区播放| 亚洲成人一区二区| 欧美一a一片一级一片| 自拍偷拍欧美精品| 风间由美一区二区av101 | 欧美丰满嫩嫩电影| 一区二区三区精密机械公司| kk眼镜猥琐国模调教系列一区二区| 26uuu精品一区二区 | 在线看日韩精品电影| 中文字幕五月欧美| 不卡免费追剧大全电视剧网站| 久久久91精品国产一区二区三区| 久久99久久精品| 日韩欧美色综合网站| 日本中文字幕不卡| 欧美丰满嫩嫩电影| 日日夜夜精品免费视频| 欧美日韩国产综合久久| 亚洲午夜激情av| 欧美日韩极品在线观看一区| 亚洲综合色成人| 欧美日韩免费高清一区色橹橹| 亚洲一区二区欧美日韩| 欧美日韩一级黄| 日日欢夜夜爽一区| 91精品久久久久久久久99蜜臂| 日日摸夜夜添夜夜添国产精品| 欧美一三区三区四区免费在线看| 日韩综合小视频| 日韩视频永久免费| 国产一区二区三区电影在线观看| 久久久久国产精品麻豆ai换脸 | 国产精品另类一区| 本田岬高潮一区二区三区| 亚洲人成伊人成综合网小说| 色狠狠桃花综合| 亚洲午夜激情网站| 日韩小视频在线观看专区| 国产毛片精品国产一区二区三区| 中文字幕精品在线不卡| 日本韩国欧美一区二区三区| 亚洲成av人在线观看| 日韩免费一区二区| 国产成人精品网址| 一区二区激情小说| 欧美一区二区三区免费| 国产传媒日韩欧美成人| 亚洲视频一二区| 欧美一区二区三区免费在线看 | 精品伦理精品一区| 国产美女娇喘av呻吟久久| 国产精品久久久久久久久晋中| 色视频成人在线观看免| 免费久久精品视频| 国产精品视频第一区| 欧美性做爰猛烈叫床潮| 麻豆精品视频在线观看| 欧美韩国日本一区| 欧美人妇做爰xxxⅹ性高电影 | 欧美婷婷六月丁香综合色| 日韩激情一二三区| 国产色产综合产在线视频| 欧亚洲嫩模精品一区三区| 日韩av电影一区| 中文字幕中文字幕一区二区| 精品视频一区三区九区| 国产麻豆精品95视频| 亚洲午夜久久久久久久久电影网| 欧美变态tickle挠乳网站| 91丨porny丨国产| 美女视频一区二区三区| 亚洲日本一区二区| 精品理论电影在线观看| 色久综合一二码| 国产精品123区| 日本午夜一本久久久综合| 亚洲人成人一区二区在线观看 | 亚洲一二三四在线观看| 精品国产凹凸成av人导航| 欧美调教femdomvk| 国产成人av电影在线播放| 日韩精品免费专区| 亚洲日本青草视频在线怡红院 | 欧美一区二区三区成人| av一区二区三区在线| 久久精品国产一区二区三区免费看 | 激情文学综合网| 亚洲福利国产精品| 亚洲欧美日韩国产综合在线| 久久品道一品道久久精品|