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

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

?? bitstream.c

?? 基于Linux的ffmepg decoder
?? C
字號:
/**
 *  @file bitstream.c
 *  @brief The related functions for writing bitstream header are implemented in this
 *         file.
 *
 */

#include "quant_matrix.h"
#include "bitstream.h"
#include "zigzag.h"

/*****************************************************************************
 * Functions
 ****************************************************************************/

static uint32_t __inline
log2bin(uint32_t value)
{
/* Changed by Chenm001 */
	int n = 0;

	while (value) {
		value >>= 1;
		n++;
	}
	return n;
}

/*
decode headers
returns coding_type, or -1 if error
*/

#define VIDOBJ_START_CODE_MASK		0x0000001f
#define VIDOBJLAY_START_CODE_MASK	0x0000000f

/* write custom quant matrix */


static void
bs_put_matrix(const int16_t * matrix,FTMCP100_CODEC *pCodec)
{
	int i, j;
	const int last = matrix[scan_tables[0][63]];

	for (j = 63; j > 0 && matrix[scan_tables[0][j - 1]] == last; j--);

	for (i = 0; i <= j; i++) {
		BitstreamPutBits(matrix[scan_tables[0][i]], 8,pCodec);
	}

	if (j < 63) {
		BitstreamPutBits(0, 8,pCodec);
	}
}

void BitstreamWriteShortHeader(MBParam * pParam,
						const FRAMEINFO * frame,
						int vop_coded,FTMCP100_CODEC *pCodec)
{
	uint32_t a;

	BitstreamPad(pCodec);
	BitstreamPutBits(VIDO_SHORT_HEADER, 22,pCodec);
	a = pParam->temporal_ref;
	BitstreamPutBits(a, 8,pCodec);
	a++;
	a &= 0xff;
	pParam->temporal_ref = a;
	WRITE_MARKER();

	if (pParam->width == 128)
		BitstreamPutBits(1, 7,pCodec);			//  source_format
	else if (pParam->width == 176)
		BitstreamPutBits(2, 7,pCodec);			//  source_format
	else if (pParam->width == 352)
		BitstreamPutBits(3, 7,pCodec);			//  source_format
	else if (pParam->width == 704)
		BitstreamPutBits(4, 7,pCodec);			//  source_format
	else if (pParam->width == 1408)
		BitstreamPutBits(5, 7,pCodec);			//  source_format
	else
		BitstreamPutBits(5, 7,pCodec);			//  source_format

//	BitstreamPutBits(3, 7);
//	BitstreamPutBit(0);		/* zero_bit */
//	BitstreamPutBit(0);			//  split_screen_indicator
//	BitstreamPutBit(0);			//  document_camera_indicator
//	BitstreamPutBit(0);			//  full_picture_freeze_release
//	BitstreamPutBits(2, 3);			//  source_format

	BitstreamPutBit(vop_coded,pCodec);  //  picture_coding_type
	BitstreamPutBits(0, 4,pCodec);			//  four_reserved_zero_bits
	BitstreamPutBits(frame->quant, 5,pCodec);	/* quantizer */
	BitstreamPutBit(0,pCodec);			//  zero_bit
	BitstreamPutBit(0,pCodec);			//  pei

}


/*
	write vol header
*/
void
BitstreamWriteVolHeader(const MBParam * pParam,
						const FRAMEINFO * frame,FTMCP100_CODEC *pCodec)
{
	// video object_start_code & vo_id
	BitstreamPad(pCodec);
	BitstreamPutBits(VO_START_CODE, 27,pCodec);
	BitstreamPutBits(0, 5,pCodec);

	// video_object_layer_start_code & vol_id
	BitstreamPutBits(VOL_START_CODE, 28,pCodec);

	BitstreamPutBits(0, 14,pCodec);
//	BitstreamPutBits(bs, 0, 4);
//	BitstreamPutBit(bs, 0);		// random_accessible_vol
//	BitstreamPutBits(bs, 0, 8);	// video_object_type_indication
//	BitstreamPutBit(bs, 0);		// is_object_layer_identified (0=not given)

	BitstreamPutBits(216, 11,pCodec);
//	BitstreamPutBits(bs, 1, 4);	// aspect_ratio_info (1=1:1)
//	BitstreamPutBit(bs, 1);	// vol_control_parameters
//	BitstreamPutBits(bs, 1, 2);	// chroma_format 1="4:2:0"
//	BitstreamPutBit(bs, 1);	// low_delay
//	BitstreamPutBit(bs, 0);	// vbv_parameters (0=not given)
//	BitstreamPutBits(bs, 0, 2);	// video_object_layer_shape (0=rectangular)

	WRITE_MARKER();

	/*
	 * time_increment_resolution; ignored by current decore versions
	 *  eg. 2fps     res=2       inc=1
	 *      25fps    res=25      inc=1
	 *      29.97fps res=30000   inc=1001
	 */
	BitstreamPutBits(pParam->fbase, 16,pCodec);


	WRITE_MARKER();

	BitstreamPutBit(1,pCodec);		// fixed_vop_rate = 1
	
	// The following line was the bug of xvid version 0.9 and was fixed
	// on 07-15-2005.We should send the (pParam->fbase-1) value to 
	// calculate the minimum number of bits representing the range.
	//BitstreamPutBits(pParam->fincr, log2bin(pParam->fbase),pCodec);	// fixed_vop_time_increment
	BitstreamPutBits(pParam->fincr, MAX(log2bin(pParam->fbase-1),1),pCodec);	// fixed_vop_time_increment

	WRITE_MARKER();
	BitstreamPutBits(pParam->width, 13,pCodec);	// width
	WRITE_MARKER();
	BitstreamPutBits(pParam->height, 13,pCodec);	// height
	WRITE_MARKER();

	BitstreamPutBit(frame->global_flags & Faraday_INTERLACING,pCodec);	// interlace
	BitstreamPutBits(4, 3,pCodec);

//	BitstreamPutBit(bs, 1);		// obmc_disable (overlapped block motion compensation)
//	BitstreamPutBit(bs, 0);		// sprite_enable
//	BitstreamPutBit(bs, 0);		// not_in_bit

	// quant_type   0=h.263  1=mpeg4(quantizer tables)
	BitstreamPutBit(pParam->m_quant_type,pCodec);

	if (pParam->m_quant_type) {
		BitstreamPutBit(get_intra_matrix_status(),pCodec);	// load_intra_quant_mat
		if (get_intra_matrix_status()) {
			bs_put_matrix(get_intra_matrix(),pCodec);
		}

		BitstreamPutBit(get_inter_matrix_status(),pCodec);	// load_inter_quant_mat
		if (get_inter_matrix_status()) {
			bs_put_matrix(get_inter_matrix(),pCodec);
		}
	}

	if (pParam->resyn)
	  BitstreamPutBits(8, 4,pCodec);
	else
	  BitstreamPutBits(12, 4,pCodec);

//	BitstreamPutBit(bs, 1);		// complexity_estimation_disable
//	BitstreamPutBit(bs, 1);		// resync_marker_disable
//	BitstreamPutBit(bs, 0);		// data_partitioned
//	BitstreamPutBit(bs, 0);		// scalability
}


/*
  write vop header

  NOTE: doesnt handle bother with time_base & time_inc
  time_base = n seconds since last resync (eg. last iframe)
  time_inc = nth of a second since last resync
  (decoder uses these values to determine precise time since last resync)
*/
void
BitstreamWriteVopHeader(const MBParam * pParam,
						const FRAMEINFO * frame,
						int vop_coded,FTMCP100_CODEC *pCodec)
{
	uint32_t i;

	BitstreamPad(pCodec);
	BitstreamPutBits(VOP_START_CODE0, 16,pCodec);
	BitstreamPutBits(VOP_START_CODE1, 16,pCodec);

	BitstreamPutBits(frame->coding_type, 2,pCodec);

	// time_base = 0  write n x PutBit(1), PutBit(0)
	for (i = frame->seconds; i > 0 ; i--) {
		BitstreamPutBit(1,pCodec);
	}
	BitstreamPutBit(0,pCodec);

	WRITE_MARKER();

	// time_increment: value=nth_of_sec, nbits = log2(resolution)
	BitstreamPutBits(frame->ticks, log2bin(pParam->fbase),pCodec);

	WRITE_MARKER();

	if (!vop_coded) {
		BitstreamPutBits(0, 1,pCodec);
		return;
	}

	BitstreamPutBits(1, 1,pCodec);	// vop_coded

	if (frame->coding_type == P_VOP)
		BitstreamPutBits(frame->rounding_type, 1,pCodec);

	BitstreamPutBits(0, 3,pCodec);	// intra_dc_vlc_threshold

	BitstreamPutBits(frame->quant, 5,pCodec);	// quantizer

	if (frame->coding_type != I_VOP)
		BitstreamPutBits(frame->fcode, 3,pCodec);	// forward_fixed_code

	if (frame->coding_type == B_VOP)
		BitstreamPutBits(frame->bcode, 3,pCodec);	// backward_fixed_code

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
自拍偷自拍亚洲精品播放| 成人午夜激情片| 国产精品一线二线三线精华| 粗大黑人巨茎大战欧美成人| 91麻豆精品秘密| 777精品伊人久久久久大香线蕉| 精品剧情在线观看| 国产精品蜜臀在线观看| 亚洲成人激情自拍| 国产尤物一区二区在线| 91色婷婷久久久久合中文| 5858s免费视频成人| 中文幕一区二区三区久久蜜桃| 亚洲免费观看视频| 麻豆精品视频在线观看免费| 99re免费视频精品全部| 制服丝袜一区二区三区| 国产精品久久久久久亚洲毛片| 亚洲亚洲人成综合网络| 国产真实乱对白精彩久久| 色天使色偷偷av一区二区| 日韩欧美一区二区免费| 中文字幕一区二区三区视频| 日本欧美一区二区| 99视频在线精品| 精品久久久久久久久久久久久久久 | 日韩一区二区免费在线电影| 国产精品系列在线| 日本va欧美va瓶| 色婷婷av一区二区| wwwwww.欧美系列| 性久久久久久久久| av电影在线不卡| 久久色中文字幕| 五月综合激情网| 91丝袜高跟美女视频| 精品久久久久久久久久久久久久久久久| 亚洲欧美成人一区二区三区| 国产一区91精品张津瑜| 欧美一区二区三区小说| 亚洲图片你懂的| 国产xxx精品视频大全| 日韩一级片网址| 亚洲综合图片区| 99精品视频在线观看| 久久久国产精华| 日本系列欧美系列| 欧洲色大大久久| 国产精品久久福利| 国产一区二区成人久久免费影院 | 性久久久久久久| 91影视在线播放| 国产情人综合久久777777| 裸体一区二区三区| 欧美精品v日韩精品v韩国精品v| 亚洲天堂网中文字| 成人久久18免费网站麻豆| 26uuu国产电影一区二区| 蜜臀va亚洲va欧美va天堂| 欧美最猛黑人xxxxx猛交| 亚洲品质自拍视频| 91女人视频在线观看| 国产精品乱人伦一区二区| 国产精品1区2区3区| 2024国产精品| 国产在线精品免费| 精品久久久久久最新网址| 日韩成人dvd| 欧美一区二区视频免费观看| 日韩国产欧美在线播放| 7777精品伊人久久久大香线蕉经典版下载 | 日本欧美一区二区| 91精品综合久久久久久| 亚洲成人激情av| 欧美日韩一本到| 日日摸夜夜添夜夜添国产精品| 欧美日韩中文精品| 亚洲成人免费影院| 在线91免费看| 久久99精品国产麻豆不卡| 精品欧美久久久| 国产一区二区三区精品视频| 久久久综合九色合综国产精品| 国产麻豆精品视频| 欧美激情一二三区| 99re热这里只有精品免费视频| 亚洲精品老司机| 欧美日韩国产在线观看| 日韩不卡免费视频| 日韩欧美在线综合网| 麻豆国产精品视频| 国产欧美日韩卡一| 91在线视频观看| 亚洲成人在线免费| 日韩欧美电影在线| 国产成人精品亚洲日本在线桃色| 中文av字幕一区| 欧美在线观看你懂的| 日本在线不卡一区| 国产喷白浆一区二区三区| 91在线小视频| 日产国产欧美视频一区精品| 久久综合色播五月| 99精品欧美一区| 天天影视色香欲综合网老头| 精品成人a区在线观看| 成人h精品动漫一区二区三区| 一区二区激情视频| 日韩一区二区精品| 成熟亚洲日本毛茸茸凸凹| 一区二区三区四区不卡视频| 日韩欧美一卡二卡| 99久久精品国产网站| 午夜欧美视频在线观看| 欧美精品一区在线观看| 99久久777色| 麻豆久久久久久| 亚洲人成7777| 精品久久久久99| 色综合网色综合| 日本vs亚洲vs韩国一区三区二区 | 色欧美日韩亚洲| 秋霞电影网一区二区| 欧美国产1区2区| 欧美日韩国产综合视频在线观看 | 中文字幕乱码亚洲精品一区| 在线视频国产一区| 美腿丝袜亚洲三区| 亚洲欧美日韩电影| 欧美精品一区视频| 欧美天堂一区二区三区| 国产精品乡下勾搭老头1| 亚洲国产成人高清精品| 久久久午夜电影| 欧美日韩一区二区三区视频| 国产精品88av| 日韩主播视频在线| 中文字幕佐山爱一区二区免费| 欧美成人乱码一区二区三区| 色天天综合久久久久综合片| 国产一区二区影院| 五月婷婷欧美视频| ㊣最新国产の精品bt伙计久久| 日韩三级在线免费观看| 色噜噜久久综合| 粉嫩aⅴ一区二区三区四区五区| 日本美女一区二区三区视频| 亚洲视频在线一区| 国产亚洲欧美一区在线观看| 欧美日韩午夜精品| av在线这里只有精品| 精品一区二区三区香蕉蜜桃 | 欧美另类一区二区三区| 99久久伊人精品| 国产精品香蕉一区二区三区| 日韩成人av影视| 亚洲午夜精品在线| 亚洲人成亚洲人成在线观看图片| 国产喂奶挤奶一区二区三区| 欧美一级免费观看| 欧美系列一区二区| 国产日韩精品一区二区三区| 欧美一区二区不卡视频| 在线观看精品一区| 在线免费精品视频| 99r国产精品| 东方欧美亚洲色图在线| 国产一区二区毛片| 精品一二三四区| 免费看欧美美女黄的网站| 午夜精品一区二区三区电影天堂| 亚洲精品一二三| 国产精品国产a| 日本一区二区三区四区| 久久男人中文字幕资源站| 日韩欧美一二三四区| 制服视频三区第一页精品| 精品视频在线免费看| 欧洲生活片亚洲生活在线观看| 色网综合在线观看| 97久久超碰国产精品| 99精品视频一区二区三区| av电影在线观看完整版一区二区| 国产91丝袜在线18| 成人小视频在线| 成人av在线资源| 91色九色蝌蚪| 欧美日韩中文精品| 欧美日韩精品是欧美日韩精品| 色婷婷综合中文久久一本| 色综合久久天天| 在线看不卡av| 精品视频色一区| 91精品国产综合久久香蕉麻豆| 在线成人av影院| 日韩精品一区二区在线观看| xfplay精品久久| 国产精品美女久久久久aⅴ国产馆| 国产精品国产自产拍高清av王其| 成人欧美一区二区三区|