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

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

?? mp4_header.c

?? MPEG4的壓縮和解壓縮代碼
?? C
字號:
/**************************************************************************
 *                                                                        *
 * This code has been developed by Andrea Graziani. This software is an   *
 * implementation of a part of one or more MPEG-4 Video tools as          *
 * specified in ISO/IEC 14496-2 standard.  Those intending to use this    *
 * software module in hardware or software products are advised that its  *
 * use may infringe existing patents or copyrights, and any such use      *
 * would be at such party's own risk.  The original developer of this     *
 * software module and his/her company, and subsequent editors and their  *
 * companies (including Project Mayo), will have no liability for use of  *
 * this software or modifications or derivatives thereof.                 *
 *                                                                        *
 * Project Mayo gives users of the Codec a license to this software       *
 * module or modifications thereof for use in hardware or software        *
 * products claiming conformance to the MPEG-4 Video Standard as          *
 * described in the Open DivX license.                                    *
 *                                                                        *
 * The complete Open DivX license can be found at                         *
 * http://www.projectmayo.com/opendivx/license.php                        *
 *                                                                        *
 **************************************************************************/
/**
*  Copyright (C) 2001 - Project Mayo
 *
 * Andrea Graziani (Ag)
 *
 * DivX Advanced Research Center <darc@projectmayo.com>
*
**/
// mp4_header.c //

#include <stdlib.h>
#include <math.h>

#include "mp4_vars.h"

#include "getbits.h"
#include "debug.h"
#include "mp4_header.h"

/**
 *
**/

void next_start_code();

/***/

int getvolhdr()
{
	if (showbits(27) == VO_START_CODE)
	{
		getbits(27); // start_code
		getbits(5); // vo_id

		if (getbits(28) != VOL_START_CODE)
		{
			exit(101);
		}
		mp4_state->hdr.ident = getbits(4); // vol_id
		mp4_state->hdr.random_accessible_vol = getbits(1);
		mp4_state->hdr.type_indication = getbits(8); 
		mp4_state->hdr.is_object_layer_identifier = getbits(1);

		if (mp4_state->hdr.is_object_layer_identifier) {
			mp4_state->hdr.visual_object_layer_verid = getbits(4);
			mp4_state->hdr.visual_object_layer_priority = getbits(3);
		} 
		else {
			mp4_state->hdr.visual_object_layer_verid = 1;
			mp4_state->hdr.visual_object_layer_priority = 1;
		}
		mp4_state->hdr.aspect_ratio_info = getbits(4);
		mp4_state->hdr.vol_control_parameters = getbits(1);
		if (mp4_state->hdr.vol_control_parameters) {
			mp4_state->hdr.chroma_format = getbits(2);
			mp4_state->hdr.low_delay = getbits(1);
			mp4_state->hdr.vbv_parameters = getbits(1);
			if (mp4_state->hdr.vbv_parameters) {
				mp4_state->hdr.first_half_bit_rate = getbits(15);
				getbits1(); // marker
				mp4_state->hdr.latter_half_bit_rate = getbits(15);
				getbits1(); // marker
				mp4_state->hdr.first_half_vbv_buffer_size = getbits(15);
				getbits1(); // marker
				mp4_state->hdr.latter_half_vbv_buffer_size = getbits(3);
				mp4_state->hdr.first_half_vbv_occupancy = getbits(11);
				getbits1(); // marker
				mp4_state->hdr.latter_half_vbv_occupancy = getbits(15);
				getbits1(); // marker
			}
		}
		mp4_state->hdr.shape = getbits(2);
		getbits1(); // marker
		mp4_state->hdr.time_increment_resolution = getbits(16);
		getbits1(); // marker
		mp4_state->hdr.fixed_vop_rate = getbits(1);

		if (mp4_state->hdr.fixed_vop_rate) {
			int bits = (int) ceil(log((double)mp4_state->hdr.time_increment_resolution)/log(2.0));
			if (bits < 1) 
				bits = 1;
			mp4_state->hdr.fixed_vop_time_increment = getbits(bits);
		}
		
		if (mp4_state->hdr.shape != BINARY_SHAPE_ONLY)  
		{
			if(mp4_state->hdr.shape == 0)
			{
				getbits1(); // marker
				mp4_state->hdr.width = getbits(13);
				getbits1(); // marker
				mp4_state->hdr.height = getbits(13);
				getbits1(); // marker
			}

			mp4_state->hdr.interlaced = getbits(1);
			mp4_state->hdr.obmc_disable = getbits(1);
			
			if (mp4_state->hdr.visual_object_layer_verid == 1) {
				mp4_state->hdr.sprite_usage = getbits(1);
			} 
			else {
				mp4_state->hdr.sprite_usage = getbits(2);
			}
			
			mp4_state->hdr.not_8_bit = getbits(1);
			if (mp4_state->hdr.not_8_bit) 
			{
				mp4_state->hdr.quant_precision = getbits(4);
				mp4_state->hdr.bits_per_pixel = getbits(4);
			}
			else 
			{
				mp4_state->hdr.quant_precision = 5;
				mp4_state->hdr.bits_per_pixel = 8;
			}

			if (mp4_state->hdr.shape == GRAY_SCALE) {
				exit(102);
			}

			mp4_state->hdr.quant_type = getbits(1); // quant type

			if (mp4_state->hdr.quant_type) 
			{
				mp4_state->hdr.load_intra_quant_matrix = getbits(1);
				if (mp4_state->hdr.load_intra_quant_matrix) {
					// load intra quant matrix
					unsigned int val;
					int i, k = 0;
					do {
						k++;
						val = getbits(8);
						mp4_tables->intra_quant_matrix[mp4_tables->zig_zag_scan[k]] = val;
					} while ((k < 64) && (val != 0));
					for (i = k; i < 64; i++) {
						mp4_tables->intra_quant_matrix[mp4_tables->zig_zag_scan[i]] =
							mp4_tables->intra_quant_matrix[mp4_tables->zig_zag_scan[k-1]];
					}
				}
				mp4_state->hdr.load_nonintra_quant_matrix = getbits(1);
				if (mp4_state->hdr.load_nonintra_quant_matrix) {
					// load nonintra quant matrix
					unsigned int val;
					int i, k = 0;
					do {
						k++;
						val = getbits(8);
						mp4_tables->nonintra_quant_matrix[mp4_tables->zig_zag_scan[k]] = val;
					} while ((k < 64) && (val != 0));
					for (i = k; i < 64; i++) {
						mp4_tables->nonintra_quant_matrix[mp4_tables->zig_zag_scan[i]] =
							mp4_tables->nonintra_quant_matrix[mp4_tables->zig_zag_scan[k-1]];
					}
				}
			}

			if (mp4_state->hdr.visual_object_layer_verid/*ident*/ != 1) {
				mp4_state->hdr.quarter_pixel = getbits(1);
			} else {
				mp4_state->hdr.quarter_pixel = 0;
			}

			mp4_state->hdr.complexity_estimation_disable = getbits(1);
			mp4_state->hdr.error_res_disable = getbits(1);
			mp4_state->hdr.data_partitioning = getbits(1);
			if (mp4_state->hdr.data_partitioning) {
				exit(102);
			}	  
			else {
				mp4_state->hdr.error_res_disable = 1;
			}
			
			mp4_state->hdr.intra_acdc_pred_disable = 0;
			mp4_state->hdr.scalability = getbits(1);

			if (mp4_state->hdr.scalability)	{
				exit(103);
			}
			
			// next_start_code();

			if (showbits(32) == USER_DATA_START_CODE) {
				exit(104);
			}
    } 

		return 1;
  }
  
  return 0; // no VO start code
}

/***/

int getgophdr()
{
	if (nextbits(32) == GOP_START_CODE) // [Ag][Review] possible bug, it's not possible to read 32 bits
	{
		getbits(32); 

		mp4_state->hdr.time_code = getbits(18);
		mp4_state->hdr.closed_gov = getbits(1);
		mp4_state->hdr.broken_link = getbits(1);
	}

	return 1;
}

/***/

int getvophdr()
{
	next_start_code();
	if(getbits(32) != (int) VOP_START_CODE)
  {
		_Print("Vop start_code NOT found\n");
		return 0;
  }

	mp4_state->hdr.prediction_type = getbits(2);

	while (getbits(1) == 1) // temporal time base
  {
		mp4_state->hdr.time_base++;
  }
	getbits1(); // marker bit
	{
		int bits = (int) ceil(log(mp4_state->hdr.time_increment_resolution)/log(2.0));
		if (bits < 1) bits = 1;
		
		mp4_state->hdr.time_inc = getbits(bits); // vop_time_increment (1-16 bits)
	}

	getbits1(); // marker bit
	mp4_state->hdr.vop_coded = getbits(1);
	if (mp4_state->hdr.vop_coded == 0) 
	{
		next_start_code();
		return 1;
	}  

	if ((mp4_state->hdr.shape != BINARY_SHAPE_ONLY) &&
		(mp4_state->hdr.prediction_type == P_VOP)) 
	{
		mp4_state->hdr.rounding_type = getbits(1);
	} else {
		mp4_state->hdr.rounding_type = 0;
	}
	
	if (mp4_state->hdr.shape != RECTANGULAR)
	{
		if (! (mp4_state->hdr.sprite_usage == STATIC_SPRITE && 
			mp4_state->hdr.prediction_type==I_VOP) )
		{
			mp4_state->hdr.width = getbits(13);
			getbits1();
			mp4_state->hdr.height = getbits(13);
			getbits1();
			mp4_state->hdr.hor_spat_ref = getbits(13);
			getbits1();
			mp4_state->hdr.ver_spat_ref = getbits(13);
			getbits1(); // corr
		}
		
		mp4_state->hdr.change_CR_disable = getbits(1);
		
		mp4_state->hdr.constant_alpha = getbits(1);
		if (mp4_state->hdr.constant_alpha) {
			mp4_state->hdr.constant_alpha_value = getbits(8);
		}
  }

	if (! (mp4_state->hdr.complexity_estimation_disable)) {
		exit(108);
	}

	if (mp4_state->hdr.shape != BINARY_SHAPE_ONLY)  
  { 
		mp4_state->hdr.intra_dc_vlc_thr = getbits(3);
		if (mp4_state->hdr.interlaced) {
			exit(109);
		}
  }
	
	if (mp4_state->hdr.shape != BINARY_SHAPE_ONLY) 
  { 
		mp4_state->hdr.quantizer = getbits(mp4_state->hdr.quant_precision); // vop quant

		if (mp4_state->hdr.prediction_type != I_VOP) 
		{
			mp4_state->hdr.fcode_for = getbits(3); 
		}
		
		if (! mp4_state->hdr.scalability) {
			if (mp4_state->hdr.shape && mp4_state->hdr.prediction_type!=I_VOP)
				mp4_state->hdr.shape_coding_type = getbits(1); // vop shape coding type

			/* motion_shape_texture() */
		}
	} 
	
	return 1;
}

/***/

int __inline nextbits(int nbit)
{
	return showbits(nbit);
}

/***/

// Purpose: look nbit forward for an alignement
int __inline bytealigned(int nbit) 
{
	return (((ld->bitcnt + nbit) % 8) == 0);
}

/***/

void __inline next_start_code()
{
	if (mp4_state->juice_flag)
	{
//		juice_flag = 0; // [Review][Ag] before juice needed this changed only first time
		if (! bytealigned(0))
		{
			getbits(1);

			// bytealign
			while (! bytealigned(0)) {
				flushbits(1);
			}
		}
	}
	else
	{
		getbits(1);

		// bytealign
		while (! bytealigned(0)) {
			flushbits(1);
		}
	}
}

/***/

int __inline nextbits_bytealigned(int nbit)
{
	int code;
	int skipcnt = 0;

	if (bytealigned(skipcnt))
	{
		// stuffing bits
		if (showbits(8) == 127) {
			skipcnt += 8;
		}
	}
	else
	{
		// bytealign
		while (! bytealigned(skipcnt)) {
			skipcnt += 1;
		}
	}

	code = showbits(nbit + skipcnt);
	return ((code << skipcnt) >> skipcnt);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
白白色亚洲国产精品| 久久人人97超碰com| 亚洲精品一区二区三区香蕉| 国产精品久久久久aaaa| 麻豆国产精品视频| 欧美系列亚洲系列| 国产精品家庭影院| 国产一区欧美日韩| 日韩亚洲国产中文字幕欧美| 亚洲一区二区三区四区不卡| 波多野结衣精品在线| 久久久久99精品国产片| 日本强好片久久久久久aaa| 色又黄又爽网站www久久| 国产欧美日韩一区二区三区在线观看| 亚洲午夜久久久| 91在线观看美女| 国产精品福利一区二区三区| 国产馆精品极品| 精品免费日韩av| 看电影不卡的网站| 欧美夫妻性生活| 亚洲成人你懂的| 欧美亚洲国产一区二区三区 | 亚洲欧美一区二区三区久本道91| 久久99精品久久久久久久久久久久| 欧美日韩成人在线| 婷婷成人激情在线网| 欧美肥妇毛茸茸| 日韩电影一区二区三区| 欧美久久久影院| 日韩和欧美一区二区三区| 欧美麻豆精品久久久久久| 天堂av在线一区| 欧美精品第一页| 捆绑变态av一区二区三区 | 欧美色综合久久| 亚洲综合一二区| 欧美艳星brazzers| 日日夜夜一区二区| 日韩欧美亚洲一区二区| 激情深爱一区二区| 国产日产欧产精品推荐色| 国产999精品久久| 中文字幕在线观看不卡视频| 99re亚洲国产精品| 亚洲国产aⅴ天堂久久| 欧美一级专区免费大片| 久久成人免费网| 中文字幕不卡的av| 色婷婷综合久久久| 爽好久久久欧美精品| 2023国产精品视频| 91亚洲精华国产精华精华液| 亚洲成国产人片在线观看| 日韩欧美中文字幕公布| 成人网页在线观看| 一区二区三区日韩| 日韩欧美中文字幕一区| www.日本不卡| 亚洲超丰满肉感bbw| 26uuuu精品一区二区| 91蝌蚪国产九色| 看国产成人h片视频| 中文字幕亚洲一区二区va在线| 欧美性大战久久久久久久蜜臀| 美女性感视频久久| 中文字幕在线不卡| 制服丝袜av成人在线看| 成人性视频免费网站| 亚洲bt欧美bt精品777| 久久免费午夜影院| 欧美三电影在线| 国产白丝网站精品污在线入口| 亚洲激情图片qvod| 国产午夜精品福利| 欧美情侣在线播放| 成人av资源下载| 蜜桃久久精品一区二区| 亚洲欧美一区二区三区久本道91| 日韩精品一区二区三区在线 | kk眼镜猥琐国模调教系列一区二区| 亚洲最新在线观看| 国产精品视频一二三区| 欧美精选一区二区| 91国偷自产一区二区三区成为亚洲经典 | 色婷婷综合久久久久中文| 九九热在线视频观看这里只有精品| 亚洲精品免费电影| 亚洲国产成人一区二区三区| 日韩欧美亚洲另类制服综合在线| 欧美亚州韩日在线看免费版国语版| 国产精品69毛片高清亚洲| 免费精品视频在线| 午夜在线成人av| 亚洲综合色噜噜狠狠| 国产精品美女久久久久久| 精品不卡在线视频| 欧美一级黄色大片| 欧美巨大另类极品videosbest| 91传媒视频在线播放| 99久精品国产| 91老司机福利 在线| 99久久亚洲一区二区三区青草| 国产不卡在线播放| 高清国产一区二区三区| 国产精品系列在线播放| 极品少妇一区二区| 狠狠色丁香九九婷婷综合五月| 亚洲成av人片观看| 日韩国产欧美在线视频| 亚欧色一区w666天堂| 亚洲成人动漫一区| 无吗不卡中文字幕| 日韩国产精品大片| 毛片av中文字幕一区二区| 日韩二区三区在线观看| 美女一区二区三区| 国产在线精品免费av| 狠狠色丁香婷综合久久| 国产盗摄视频一区二区三区| 国产成人久久精品77777最新版本| 国产精品亚洲а∨天堂免在线| 国产成人鲁色资源国产91色综| 成人一道本在线| 色中色一区二区| 欧美日韩国产高清一区二区三区 | 午夜视频在线观看一区二区| 性欧美疯狂xxxxbbbb| 日本美女一区二区三区视频| 日本欧美久久久久免费播放网| 久久99久久久久| 国产精品1区二区.| 91亚洲午夜精品久久久久久| 欧美性淫爽ww久久久久无| 日韩一区二区三区四区| 精品嫩草影院久久| 中文字幕人成不卡一区| 午夜精品免费在线| 国产一区二区伦理片| 99久久免费精品| 欧美精品日日鲁夜夜添| 精品国精品国产| 亚洲欧洲av在线| 日韩1区2区3区| 成人午夜电影久久影院| 欧美性猛交xxxx乱大交退制版| 日韩一区二区电影网| 中文字幕第一区二区| 天堂午夜影视日韩欧美一区二区| 国产在线精品一区在线观看麻豆| 99久久综合狠狠综合久久| 8x8x8国产精品| 国产精品素人一区二区| 视频一区二区国产| www.欧美色图| 精品国产一二三区| 一区二区三区欧美视频| 国产伦精一区二区三区| 欧美亚洲动漫制服丝袜| 国产视频一区在线观看| 天天色 色综合| 91麻豆精品一区二区三区| 欧美成人vps| 亚洲综合色自拍一区| 国产成人亚洲精品狼色在线| 欧美日韩国产免费一区二区 | 亚洲精品一区二区三区在线观看| 亚洲免费观看高清完整| 韩国毛片一区二区三区| 欧美视频一区二区三区四区| 欧美国产日本韩| 国产在线麻豆精品观看| 欧美日韩一区在线观看| 亚洲欧洲性图库| 从欧美一区二区三区| 日韩精品一区二区三区视频| 亚洲最新视频在线播放| 99riav一区二区三区| 久久九九99视频| 韩日精品视频一区| 欧美一区二区三区男人的天堂| 亚洲精品久久久久久国产精华液| 国产不卡在线播放| 久久久久97国产精华液好用吗| 免费高清成人在线| 欧美二区三区的天堂| 亚洲国产日日夜夜| 欧美亚洲一区二区在线| 亚洲欧美日韩在线不卡| 92精品国产成人观看免费 | 久久久久久久久久久久电影| 丝袜脚交一区二区| 欧美日韩一区二区三区免费看| 亚洲色图制服诱惑| 色成年激情久久综合| 一区二区视频在线| 在线观看av一区| 亚洲成在线观看| 5月丁香婷婷综合|