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

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

?? encoder-h261.cxx

?? mgcp協議源代碼。支持多種編碼:g711
?? CXX
?? 第 1 頁 / 共 2 頁
字號:
	 * coef (so we can pick a new quantizer if gquant doesn't have	 * enough range).	 */	/*XXX this can be u_char instead of short but need smarts in fdct */	short blk[64 * 6];	register int stride = width;	/* luminance */	const u_char* p = &frm[loff];	fdct(p, stride, blk + 0, qt);	fdct(p + 8, stride, blk + 64, qt);	fdct(p + 8 * stride, stride, blk + 128, qt);	fdct(p + (8 * stride + 8), stride, blk + 192, qt);	/* chominance */	int fs = framesize;	p = &frm[fs + coff];	stride >>= 1;	fdct(p, stride, blk + 256, qt);	fdct(p + (fs >> 2), stride, blk + 320, qt);	/*	 * if the default quantizer is too small to handle the coef.	 * dynamic range, spin through the blocks and see if any	 * coef. would significantly overflow.	 */	if (q < 8) {		register int cmin = 0, cmax = 0;		register short* bp = blk;		for (register int i = 6; --i >= 0; ) {			++bp;	// ignore dc coef			for (register int j = 63; --j >= 0; ) {				register int v = *bp++;				if (v < cmin)					cmin = v;				else if (v > cmax)					cmax = v;			}		}		if (cmax < -cmin)			cmax = -cmin;		if (cmax >= 128) {			/* need to re-quantize */			register int s;			for (s = 1; cmax >= (128 << s); ++s) {			}			q <<= s;			register short* bp = blk;			for (register int i = 6; --i >= 0; ) {				++bp;	// ignore dc coef				for (register int j = 63; --j >= 0; ) {					register int v = *bp;					*bp++ = v >> s;				}			}		}	}	u_int m = mba - mba_;	mba_ = mba;	huffent* he = &hte_mba[m - 1];	/* MBA */	PUT_BITS(he->val, he->nb, nbb_, bb_, bc_);	if (q != mquant_) {		/* MTYPE = INTRA + TC + MQUANT */		PUT_BITS(1, 7, nbb_, bb_, bc_);		PUT_BITS(q, 5, nbb_, bb_, bc_);		mquant_ = q;	} else {		/* MTYPE = INTRA + TC (no quantizer) */		PUT_BITS(1, 4, nbb_, bb_, bc_);	}	/* luminance */	const char* lm = llm_[q];	if (lm == 0) {		lm = make_level_map(q, 1);		llm_[q] = lm;		clm_[q] = make_level_map(q, 2);	}	encode_blk(blk + 0, lm);	encode_blk(blk + 64, lm);	encode_blk(blk + 128, lm);	encode_blk(blk + 192, lm);	/* chominance */	lm = clm_[q];	encode_blk(blk + 256, lm);	encode_blk(blk + 320, lm);}/* * H261DCTEncoder::encode_mb *	encode a macroblock given a set of input DCT coefs *	each coef is stored as a short */voidH261DCTEncoder::encode_mb(u_int mba, const u_char* frm,			  u_int loff, u_int coff, int how){	short *lblk = (short *)frm + loff;	short *ublk = (short *)frm + coff;	short *vblk = (short *)frm + coff + 64;	register u_int q;	if (how == CR_MOTION)		q = lq_;	else if (how == CR_BG)		q = hq_;	else		/* must be at age threshold */		q = mq_;	/*	 * if the default quantizer is too small to handle the coef.	 * dynamic range, spin through the blocks and see if any	 * coef. would significantly overflow.	 */	if (q < 8) {		register int cmin = 0, cmax = 0;		register short* bp = lblk;		register int i, j;		// Y U and V blocks		for (i = 6; --i >= 0; ) {			++bp;	// ignore dc coef			for (j = 63; --j >= 0; ) {				register int v = *bp++;				if (v < cmin)					cmin = v;				else if (v > cmax)					cmax = v;			}		}		if (cmax < -cmin)			cmax = -cmin;		cmax /= (q << 1);		if (cmax >= 128) {			/* need to re-quantize */			register int s;			for (s = 1; cmax >= (128 << s); ++s) {			}			q <<= s;		}	}	u_int m = mba - mba_;	mba_ = mba;	huffent* he = &hte_mba[m - 1];	/* MBA */	PUT_BITS(he->val, he->nb, nbb_, bb_, bc_);	if (q != mquant_) {		/* MTYPE = INTRA + TC + MQUANT */		PUT_BITS(1, 7, nbb_, bb_, bc_);		PUT_BITS(q, 5, nbb_, bb_, bc_);		mquant_ = q;	} else {		/* MTYPE = INTRA + TC (no quantizer) */		PUT_BITS(1, 4, nbb_, bb_, bc_);	}	/* luminance */	const char* lm = llm_[q];	if (lm == 0) {		/*		 * the filter thresh is 0 since we assume the jpeg percept.		 * quantizer already did the filtering.		 */		lm = make_level_map(q, 0);		llm_[q] = lm;		clm_[q] = make_level_map(q, 0);	}	encode_blk(lblk + 0, lm);	encode_blk(lblk + 64, lm);	encode_blk(lblk + 128, lm);	encode_blk(lblk + 192, lm);	/* chominance */	lm = clm_[q];	encode_blk(ublk, lm);	encode_blk(vblk, lm);}intH261Encoder::flush(Transmitter::pktbuf* pb, int nbit,		       Transmitter::pktbuf* npb){	/* flush bit buffer */	STORE_BITS(bb_, bc_);	int cc = (nbit + 7) >> 3;	int ebit = (cc << 3) - nbit;	/*XXX*/	if (cc == 0 && npb != 0)		abort();	pb->lenHdr = HDRSIZE;	pb->lenBuf = cc;	u_int* rh = (u_int*)pb->hdr;	*rh = (*rh) | ebit << 26 | sbit_ << 29;	if (npb != 0) {		u_char* nbs = (u_char*)npb->buf->data;		u_int bc = (bc_ - bs_) << 3;		int tbit = bc + nbb_;		int extra = ((tbit + 7) >> 3) - (nbit >> 3);		if (extra > 0)			memcpy(nbs, bs_ + (nbit >> 3), extra);		bs_ = nbs;		sbit_ = nbit & 7;		tbit -= nbit &~ 7;		bc = tbit &~ (NBIT - 1);		nbb_ = tbit - bc;		bc_ = bs_ + (bc >> 3);		/*		 * Prime the bit buffer.  Be careful to set bits that		 * are not yet in use to 0, since output bits are later		 * or'd into the buffer.		 */		if (nbb_ > 0) {			u_int n = NBIT - nbb_;			bb_ = (LOAD_BITS(bc_) >> n) << n;		} else			bb_ = 0;	}	tx_->StoreOnePacket(pb);	return (cc + HDRSIZE);}int H261DCTEncoder::consume(const VideoFrame *vf){	if (!SameSize(vf))		SetSize(vf->width, vf->height);	DCTFrame* df = (DCTFrame *)vf;	return(encode(df, df->crvec));}int H261PixelEncoder::consume(const VideoFrame *vf){	if (!SameSize(vf))		SetSize(vf->width, vf->height);	return(encode(vf, vf->crvec));} 		//////NOTE: HDRSIZE is the size of the H261 hdr in the rtp packet.==4intH261Encoder::encode(const VideoFrame* vf, const BYTE *crvec){        Transmitter::pktbuf* pb = tx_->alloc();	bs_ = (u_char*)pb->buf->data;	bc_ = bs_;	u_int ec = (tx_->mtu() - HDRSIZE) << 3;	bb_ = 0;	nbb_ = 0;	sbit_ = 0;	/* RTP/H.261 header */	u_int* rh = (u_int*)pb->hdr;	*rh = 1 << 25 | lq_ << 10;	/* PSC */	PUT_BITS(0x0001, 16, nbb_, bb_, bc_);	/* GOB 0 -> picture header */	PUT_BITS(0, 4, nbb_, bb_, bc_);	/* TR (XXX should do this right) */	PUT_BITS(0, 5, nbb_, bb_, bc_);	/* PTYPE = CIF */	int pt = cif_ ? 4 : 0;	PUT_BITS(pt, 6, nbb_, bb_, bc_);	/* PEI */	PUT_BITS(0, 1, nbb_, bb_, bc_);	int step = cif_ ? 1 : 2;	int cc = 0;	BYTE* frm = vf->frameptr;	for (u_int gob = 0; gob < ngob_; gob += step) {		u_int loff = loff_[gob];		u_int coff = coff_[gob];		u_int blkno = blkno_[gob];		u_int nbit = ((bc_ - bs_) << 3) + nbb_;		/* GSC/GN */		PUT_BITS(0x10 | (gob + 1), 20, nbb_, bb_, bc_);		/* GQUANT/GEI */		mquant_ = lq_;		PUT_BITS(mquant_ << 1, 6, nbb_, bb_, bc_);		mba_ = 0;		int line = 11;		for (u_int mba = 1; mba <= 33; ++mba) {			/*			 * If the conditional replenishment algorithm			 * has decided to send any of the blocks of			 * this macroblock, code it.			 */			u_int s = crvec[blkno];			if ((s & CR_SEND) != 0) {				u_int mbpred = mba_;				encode_mb(mba, frm, loff, coff, CR_STATE(s));				u_int cbits = ((bc_ - bs_) << 3) + nbb_;				if (cbits > ec) {					Transmitter::pktbuf* npb;					npb = tx_->alloc();					cc += flush(pb, nbit, npb);					cbits -= nbit;					pb = npb;					/* RTP/H.261 header */					u_int m = mbpred;					u_int g;					if (m != 0) {						g = gob + 1;						m -= 1;					} else						g = 0;					rh = (u_int*)pb->hdr;					*rh =	1 << 25 |  //set motion vector flag. 					        m << 15 |  //macroblock address predictor.					        g << 20 |  //Group of blocks number.               					mquant_ << 10;//quantizer value.                                        				}				nbit = cbits;			}			loff += loffsize_;			coff += coffsize_;			blkno += bloffsize_;			if (--line <= 0) {				line = 11;				blkno += bstride_;				loff += lstride_;				coff += cstride_;			}		}	}	cc += flush(pb, ((bc_ - bs_) << 3) + nbb_, 0);	return (cc);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲制服丝袜一区| 国产乱码精品一区二区三| 轻轻草成人在线| 成人av网站在线观看| 欧美一二三区精品| 亚洲人吸女人奶水| 国产老女人精品毛片久久| 91福利国产成人精品照片| 欧美精品一区二区在线播放| 亚洲狠狠爱一区二区三区| 福利电影一区二区| 亚洲国产精品成人综合| 捆绑变态av一区二区三区| 欧美在线免费观看亚洲| 欧美激情一区二区三区蜜桃视频| 日韩综合在线视频| 91精品1区2区| 亚洲欧洲色图综合| 国产乱一区二区| 日韩女优毛片在线| 午夜电影网一区| 色综合中文字幕国产 | 日韩精品最新网址| 亚洲小少妇裸体bbw| 99久久国产综合精品色伊| 久久这里只有精品首页| 免费精品视频在线| 777色狠狠一区二区三区| 亚洲国产中文字幕| 欧美色网一区二区| 亚洲一区二区三区中文字幕| 色综合天天性综合| 亚洲素人一区二区| 91欧美激情一区二区三区成人| 中文久久乱码一区二区| 国产福利91精品| 久久蜜桃一区二区| 国产精品 欧美精品| 久久亚洲精品国产精品紫薇| 韩国精品主播一区二区在线观看| 日韩丝袜情趣美女图片| 久久99精品久久久久婷婷| 日韩免费高清视频| 精品中文字幕一区二区 | 色一区在线观看| 亚洲男人天堂av网| 欧美日韩中文精品| 日韩av一区二区在线影视| 91精品国产综合久久久久久久| 日韩激情一区二区| 欧美精品一区男女天堂| 国产suv精品一区二区6| 国产精品国产三级国产aⅴ中文| 成人av集中营| 亚洲宅男天堂在线观看无病毒| 欧美专区亚洲专区| 麻豆精品新av中文字幕| 久久久久久影视| 成人av电影在线播放| 一个色妞综合视频在线观看| 欧美另类z0zxhd电影| 久久成人综合网| 国产精品久久久久9999吃药| 91官网在线观看| 麻豆久久久久久久| 亚洲少妇30p| 欧美一区二区在线观看| 成人免费高清在线| 午夜精品久久久久久久99樱桃| 日韩精品一区二区在线| 成人18视频在线播放| 图片区小说区国产精品视频| 久久久久久久综合色一本| 色婷婷综合久久久久中文一区二区 | 91精彩视频在线观看| 日韩成人免费在线| 中文字幕亚洲成人| 欧美一级久久久| 99久久综合狠狠综合久久| 石原莉奈一区二区三区在线观看 | 欧美变态tickle挠乳网站| 成人av综合一区| 老司机免费视频一区二区| 亚洲天堂av老司机| 久久一留热品黄| 欧美日产在线观看| 成人av手机在线观看| 麻豆中文一区二区| 亚洲成人免费av| 中文字幕一区三区| 日韩精品中文字幕一区二区三区| 色综合色狠狠综合色| 激情成人午夜视频| 日韩精品欧美精品| 亚洲精品欧美综合四区| 欧美国产日韩精品免费观看| 91精品视频网| 欧美日韩综合不卡| 色综合天天综合在线视频| 国产真实乱偷精品视频免| 日本中文字幕一区| 亚洲第一在线综合网站| 亚洲日穴在线视频| 国产精品久线在线观看| 久久久噜噜噜久久人人看 | 欧美综合久久久| 99国产精品国产精品久久| 高清国产一区二区三区| 久久99国产精品麻豆| 麻豆精品国产91久久久久久| 亚洲成人一区二区在线观看| 夜夜嗨av一区二区三区网页| 成人欧美一区二区三区| 国产精品不卡在线观看| 中文字幕精品在线不卡| 国产欧美日韩精品在线| 国产日韩欧美高清在线| 久久综合99re88久久爱| 精品国产sm最大网站免费看| 日韩视频一区二区三区| 日韩欧美一级二级三级| 日韩欧美在线一区二区三区| 日韩视频国产视频| www国产成人| 国产色产综合产在线视频| 国产三级久久久| 中文字幕亚洲在| 一区二区三区四区中文字幕| 尤物视频一区二区| 婷婷中文字幕一区三区| 日本欧美一区二区在线观看| 蜜桃av噜噜一区| 国产精品88av| 97成人超碰视| 在线日韩av片| 欧美一区二区三区爱爱| 日韩欧美在线影院| 中文字幕av一区二区三区| 亚洲欧洲国产日韩| 亚洲福利一区二区三区| 蜜桃视频在线观看一区二区| 国产一区二区在线看| 丁香另类激情小说| 91成人网在线| 日韩欧美激情四射| 国产精品区一区二区三| 亚洲一区二区三区四区在线| 日本在线不卡视频| 国产iv一区二区三区| 色噜噜偷拍精品综合在线| 制服丝袜亚洲色图| 久久精品亚洲麻豆av一区二区| 亚洲日本在线看| 免费成人你懂的| a4yy欧美一区二区三区| 欧美日韩1区2区| 国产精品久久久久影院色老大| 亚洲国产精品天堂| 国产成人免费网站| 欧美日韩中文字幕一区| 久久精品人人做人人爽97| 亚洲永久免费av| 国产成人高清视频| 69堂精品视频| 国产精品国产精品国产专区不片| 亚洲高清免费在线| 成人短视频下载| 日韩精品在线一区二区| 亚洲欧美另类图片小说| 精品一区二区综合| 欧美日韩一区二区三区不卡| 久久精品免视看| 青青草97国产精品免费观看| 91亚洲大成网污www| 精品美女一区二区| 亚洲成av人在线观看| 成人短视频下载| 久久亚洲影视婷婷| 日本三级亚洲精品| 欧洲视频一区二区| 国产精品国产三级国产普通话99| 另类中文字幕网| 欧美日韩国产大片| 亚洲久草在线视频| 成人免费看视频| 久久女同精品一区二区| 美国精品在线观看| 9191国产精品| 亚洲一区二区欧美| 91成人网在线| 亚洲精品中文字幕在线观看| 高清久久久久久| 国产无一区二区| 国产精品一区专区| 久久品道一品道久久精品| 久久成人18免费观看| 日韩一区二区在线播放| 日本aⅴ免费视频一区二区三区| 在线观看日韩高清av| 亚洲在线视频免费观看|