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

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

?? multplex.c

?? mp3解碼程序vc++環境下運行
?? C
?? 第 1 頁 / 共 2 頁
字號:
	    queue_buffer (buffer, *bytes_left, &video_au->DTS);
	    video_au->length -= *bytes_left;
	    *picture_start = FALSE;
	} else
	if (video_au->length == *bytes_left)
	{
	    queue_buffer (buffer, *bytes_left, &video_au->DTS);
#ifdef TIMER
            gettimeofday (&tp_start,NULL);
#endif 
	    i=fread (video_au, sizeof(Vaunit_struc), 1, vunits_info);
#ifdef TIMER
            gettimeofday (&tp_end,NULL);
            total_sec  += (tp_end.tv_sec - tp_start.tv_sec);
            total_usec += (tp_end.tv_usec - tp_start.tv_usec);
#endif
	    if (i != 1)
	    {
		empty_vaunit_struc (video_au);
		//status_message(STATUS_VIDEO_END);
		return;
	    }
	    *picture_start = TRUE;
	    add_to_timecode (SCR_delay, &video_au->DTS);
	    add_to_timecode (SCR_delay, &video_au->PTS);
	};

}


/******************************************************************
	Output_Video
	從視頻流中產生Pack/Sys_Header/Packet信息
******************************************************************/

void output_video (SCR, SCR_delay, vunits_info, istream_v, ostream,
		   pack, sys_header, sector, buffer, video_au,
		   picture_start, bytes_output, mux_rate,
		   audio_buffer_size, video_buffer_size,
		   packet_data_size, marker_pack, which_streams)

Timecode_struc *SCR;
Timecode_struc *SCR_delay;
FILE *vunits_info;
FILE *istream_v;
FILE *ostream;
Pack_struc *pack;
Sys_header_struc *sys_header;
Sector_struc *sector;
Buffer_struc *buffer;
Vaunit_struc *video_au;
unsigned char *picture_start;
unsigned int  *bytes_output;
unsigned int mux_rate;
unsigned long audio_buffer_size;
unsigned long video_buffer_size;
unsigned long packet_data_size;
unsigned char marker_pack;
unsigned int which_streams;

{

    unsigned int bytes_left;
    unsigned int temp;
    Pack_struc *pack_ptr;
    Sys_header_struc *sys_header_ptr;
    unsigned char timestamps;


    if (marker_pack)
    {
    	create_pack (pack, SCR, mux_rate);
    	create_sys_header (sys_header, mux_rate, 1, 1, 1, 1, 1, 1,
			AUDIO_STR_0, 0, audio_buffer_size/128,
			VIDEO_STR_0, 1, video_buffer_size/1024, which_streams );
	pack_ptr = pack;
	sys_header_ptr = sys_header;
    } else
    {
	pack_ptr = NULL;
	sys_header_ptr = NULL;
    }

    if (*picture_start)
    {
	if (video_au->type == BFRAME)
	    timestamps=TIMESTAMPS_PTS;
	else
	    timestamps=TIMESTAMPS_PTS_DTS;

	create_sector (sector, pack_ptr, sys_header_ptr,
			packet_data_size+PACKET_HEADER_SIZE+AFTER_PACKET_LENGTH,
			istream_v, VIDEO_STR_0, 1, video_buffer_size/1024,
			TRUE, &video_au->PTS, &video_au->DTS,
		        timestamps, which_streams );

	bytes_left = sector->length_of_packet_data;

	next_video_access_unit (buffer, video_au, &bytes_left, vunits_info,
				picture_start, SCR_delay);

    }
    else if (!(*picture_start) && (video_au->length >= packet_data_size))
    {
	create_sector (sector, pack_ptr, sys_header_ptr,
			packet_data_size+PACKET_HEADER_SIZE+AFTER_PACKET_LENGTH,
			istream_v, VIDEO_STR_0, 1, video_buffer_size/1024,
			TRUE, NULL, NULL,
			TIMESTAMPS_NO, which_streams );

	bytes_left = sector->length_of_packet_data;

	next_video_access_unit (buffer, video_au, &bytes_left, vunits_info,
				picture_start, SCR_delay);

    }

    else if (!(*picture_start) && (video_au->length < packet_data_size))
    {
	temp = video_au->length;
	queue_buffer (buffer, video_au->length, &video_au->DTS);


#ifdef TIMER
            gettimeofday (&tp_start,NULL);
#endif 
	if (fread (video_au, sizeof(Vaunit_struc), 1, vunits_info)==1)
	{
	    if (video_au->type == BFRAME)
		timestamps=TIMESTAMPS_PTS;
	    else
		timestamps=TIMESTAMPS_PTS_DTS;

	    *picture_start = TRUE;
	    add_to_timecode (SCR_delay, &video_au->DTS);
	    add_to_timecode (SCR_delay, &video_au->PTS);
	    create_sector (sector, pack_ptr, sys_header_ptr,
			packet_data_size+PACKET_HEADER_SIZE+AFTER_PACKET_LENGTH,
			istream_v, VIDEO_STR_0, 1, video_buffer_size/1024,
			TRUE, &video_au->PTS, &video_au->DTS,
			timestamps, which_streams );
	bytes_left = sector->length_of_packet_data - temp;

	next_video_access_unit (buffer, video_au, &bytes_left, vunits_info,
				picture_start, SCR_delay);
	} else
	{
	    empty_vaunit_struc (video_au);
	    create_sector (sector, pack_ptr, sys_header_ptr,
			packet_data_size+PACKET_HEADER_SIZE+AFTER_PACKET_LENGTH,
			istream_v, VIDEO_STR_0, 1, video_buffer_size/1024,
			TRUE, NULL, NULL,
			TIMESTAMPS_NO, which_streams );
	};
#ifdef TIMER
            gettimeofday (&tp_end,NULL);
            total_sec  += (tp_end.tv_sec - tp_start.tv_sec);
            total_usec += (tp_end.tv_usec - tp_start.tv_usec);
#endif

    }


#ifdef TIMER
            gettimeofday (&tp_start,NULL);
#endif 
    fwrite (sector->buf, sector->length_of_sector, 1, ostream);
#ifdef TIMER
            gettimeofday (&tp_end,NULL);
            total_sec  += (tp_end.tv_sec - tp_start.tv_sec);
             total_usec += (tp_end.tv_usec - tp_start.tv_usec);
#endif
    *bytes_output += sector->length_of_sector;
	
}


/******************************************************************
	Next_Audio_Access_Unit
	從臨時文件中獲取存儲單元的信息

******************************************************************/

void next_audio_access_unit (buffer, audio_au, bytes_left, aunits_info,
			audio_frame_start, SCR_delay)
Buffer_struc *buffer;
Aaunit_struc *audio_au;
unsigned int *bytes_left;
FILE *aunits_info;
unsigned char *audio_frame_start;
Timecode_struc *SCR_delay;

{

	int i;

	if (*bytes_left == 0)
	    return;

	while (audio_au->length < *bytes_left)
	{
	    queue_buffer (buffer, audio_au->length, &audio_au->PTS);
	    *bytes_left -= audio_au->length;
#ifdef TIMER
            gettimeofday (&tp_start,NULL);
#endif 
	    i=fread (audio_au, sizeof(Aaunit_struc), 1, aunits_info);
#ifdef TIMER
            gettimeofday (&tp_end,NULL);
            total_sec  += (tp_end.tv_sec - tp_start.tv_sec);
            total_usec += (tp_end.tv_usec - tp_start.tv_usec);
#endif
	    if (i != 1)
	    {
		empty_aaunit_struc (audio_au);
		//status_message(STATUS_AUDIO_END);
		return;
	    }
	    *audio_frame_start = TRUE;
	    add_to_timecode (SCR_delay, &audio_au->PTS);
	};

	if (audio_au->length > *bytes_left)
	{
	    queue_buffer (buffer, *bytes_left, &audio_au->PTS);
	    audio_au->length -= *bytes_left;
	    *audio_frame_start = FALSE;
	} else
	if (audio_au->length == *bytes_left)
	{
	    queue_buffer (buffer, *bytes_left, &audio_au->PTS);
#ifdef TIMER
            gettimeofday (&tp_start,NULL);
#endif 
	    i=fread (audio_au, sizeof(Aaunit_struc), 1, aunits_info);
#ifdef TIMER
            gettimeofday (&tp_end,NULL);
            total_sec  += (tp_end.tv_sec - tp_start.tv_sec);
            total_usec += (tp_end.tv_usec - tp_start.tv_usec);
#endif
	    if (i != 1)
	    {
		empty_aaunit_struc (audio_au);
		//status_message(STATUS_AUDIO_END);
		return;
	    }
	    *audio_frame_start = TRUE;
	    add_to_timecode (SCR_delay, &audio_au->PTS);
	};

}

/******************************************************************
	Output_Audio
	從音頻流中獲取Pack/Sys Header/Packet信息
	
******************************************************************/

void output_audio (SCR, SCR_delay, aunits_info, istream_a, ostream,
		   pack, sys_header, sector, buffer, audio_au,
		   audio_frame_start, bytes_output, mux_rate,
		   audio_buffer_size, video_buffer_size,
		   packet_data_size, marker_pack, which_streams)

Timecode_struc *SCR;
Timecode_struc *SCR_delay;
FILE *aunits_info;
FILE *istream_a;
FILE *ostream;
Pack_struc *pack;
Sys_header_struc *sys_header;
Sector_struc *sector;
Buffer_struc *buffer;
Aaunit_struc *audio_au;
unsigned char *audio_frame_start;
unsigned int  *bytes_output;
unsigned int mux_rate;
unsigned long audio_buffer_size;
unsigned long video_buffer_size;
unsigned long packet_data_size;
unsigned char marker_pack;
unsigned int which_streams;

{

    unsigned int bytes_left;
    unsigned int temp;
    Pack_struc *pack_ptr;
    Sys_header_struc *sys_header_ptr;

    if (marker_pack)
    {
    	create_pack (pack, SCR, mux_rate);
    	create_sys_header (sys_header, mux_rate, 1, 1, 1, 1, 1, 1,
			AUDIO_STR_0, 0, audio_buffer_size/128,
			VIDEO_STR_0, 1, video_buffer_size/1024, which_streams );
	pack_ptr = pack;
	sys_header_ptr = sys_header;
    }
    else
    {
	pack_ptr = NULL;
	sys_header_ptr = NULL;
    }

    if (*audio_frame_start)
    {
	create_sector (sector, pack_ptr, sys_header_ptr,
			packet_data_size+PACKET_HEADER_SIZE+AFTER_PACKET_LENGTH,
			istream_a, AUDIO_STR_0, 0, audio_buffer_size/128,
			TRUE, &audio_au->PTS, NULL,
			TIMESTAMPS_PTS, which_streams);

	bytes_left = sector->length_of_packet_data;

	next_audio_access_unit (buffer, audio_au, &bytes_left, aunits_info,
				audio_frame_start, SCR_delay);
    }

    else if (!(*audio_frame_start) && (audio_au->length >= packet_data_size))
    {
	create_sector (sector, pack_ptr, sys_header_ptr,
			packet_data_size+PACKET_HEADER_SIZE+AFTER_PACKET_LENGTH,
			istream_a, AUDIO_STR_0, 0, audio_buffer_size/128,
			TRUE, NULL, NULL,
			TIMESTAMPS_NO, which_streams );

	bytes_left = sector->length_of_packet_data;

	next_audio_access_unit (buffer, audio_au, &bytes_left, aunits_info,
				audio_frame_start, SCR_delay);
    }

    else if (!(*audio_frame_start) && (audio_au->length < packet_data_size))
    {
	temp = audio_au->length;
	queue_buffer (buffer, audio_au->length, &audio_au->PTS);


#ifdef TIMER
            gettimeofday (&tp_start,NULL);
#endif 
	if (fread (audio_au, sizeof(Aaunit_struc), 1, aunits_info)==1)
	{
	    *audio_frame_start = TRUE;
	    add_to_timecode (SCR_delay, &audio_au->PTS);
	    create_sector (sector, pack_ptr, sys_header_ptr,
			packet_data_size+PACKET_HEADER_SIZE+AFTER_PACKET_LENGTH,
			istream_a, AUDIO_STR_0, 0, audio_buffer_size/128,
			TRUE, &audio_au->PTS, NULL,
			TIMESTAMPS_PTS, which_streams );

	bytes_left = sector->length_of_packet_data - temp;

	next_audio_access_unit (buffer, audio_au, &bytes_left, aunits_info,
				audio_frame_start, SCR_delay);
	} else
	{
	    //status_message(STATUS_AUDIO_END);
	    empty_aaunit_struc (audio_au);
	    create_sector (sector, pack_ptr, sys_header_ptr,
			packet_data_size+PACKET_HEADER_SIZE+AFTER_PACKET_LENGTH,
			istream_a, AUDIO_STR_0, 0, audio_buffer_size/128,
			TRUE, NULL, NULL,
			TIMESTAMPS_NO, which_streams );
	};
#ifdef TIMER
            gettimeofday (&tp_end,NULL);
            total_sec  += (tp_end.tv_sec - tp_start.tv_sec);
            total_usec += (tp_end.tv_usec - tp_start.tv_usec);
#endif


    }
#ifdef TIMER
            gettimeofday (&tp_start,NULL);
#endif 
    fwrite (sector->buf, sector->length_of_sector, 1, ostream);
#ifdef TIMER
            gettimeofday (&tp_end,NULL);
            total_sec  += (tp_end.tv_sec - tp_start.tv_sec);
            total_usec += (tp_end.tv_usec - tp_start.tv_usec);
#endif
    *bytes_output += sector->length_of_sector;

	
}

/******************************************************************
	Output_Padding
	為填充流產生Pack/Sys Header/Packet信息
******************************************************************/

void output_padding (SCR,  ostream,
		   pack, sys_header, sector, bytes_output, mux_rate,
		   audio_buffer_size, video_buffer_size,
		   packet_data_size, marker_pack, which_streams)

Timecode_struc *SCR;
FILE *ostream;
Pack_struc *pack;
Sys_header_struc *sys_header;
Sector_struc *sector;
unsigned int  *bytes_output;
unsigned int mux_rate;
unsigned long audio_buffer_size;
unsigned long video_buffer_size;
unsigned long packet_data_size;
unsigned char marker_pack;
unsigned int which_streams;

{
    //unsigned int temp;
    Pack_struc *pack_ptr;
    Sys_header_struc *sys_header_ptr;

    if (marker_pack)
    {
    	create_pack (pack, SCR, mux_rate);

    	create_sys_header (sys_header, mux_rate, 1, 1, 1, 1, 1, 1,
			AUDIO_STR_0, 0, audio_buffer_size/128,
			VIDEO_STR_0, 1, video_buffer_size/1024, which_streams );
	pack_ptr = pack;
	sys_header_ptr = sys_header;
    }
    else
    {
	pack_ptr = NULL;
	sys_header_ptr = NULL;
    }

    create_sector (sector, pack_ptr, sys_header_ptr,
		packet_data_size+PACKET_HEADER_SIZE+AFTER_PACKET_LENGTH,
		NULL, PADDING_STR, 0, 0,
		FALSE, NULL, NULL,
		TIMESTAMPS_NO, which_streams );

#ifdef TIMER
            gettimeofday (&tp_start,NULL);
#endif 
    fwrite (sector->buf, sector->length_of_sector*sizeof (unsigned char), 1,
	    ostream);
#ifdef TIMER
            gettimeofday (&tp_end,NULL);
            total_sec  += (tp_end.tv_sec - tp_start.tv_sec);
            total_usec += (tp_end.tv_usec - tp_start.tv_usec);
#endif
    *bytes_output += sector->length_of_sector;
	
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品福利一区二区三区| 国内成人免费视频| 久久女同精品一区二区| 久久久久国产免费免费| 亚洲一二三区视频在线观看| 国产激情91久久精品导航 | 色偷偷成人一区二区三区91| 欧洲av在线精品| 国产视频一区在线播放| 一区二区三区在线观看视频 | av网站免费线看精品| 日韩视频永久免费| 亚洲自拍偷拍图区| 91蜜桃网址入口| 国产欧美一区二区在线| 全国精品久久少妇| 欧美三级乱人伦电影| 国产精品三级在线观看| 久久国产福利国产秒拍| 911精品国产一区二区在线| 自拍偷自拍亚洲精品播放| 国产精品99精品久久免费| 91麻豆精品国产91久久久资源速度| 国产精品国产三级国产普通话99 | 成人精品国产一区二区4080| 精品国产精品网麻豆系列| 午夜精品久久久久久久久| 色就色 综合激情| 亚洲欧美日韩成人高清在线一区| 成人av电影在线观看| 国产女主播一区| 国产精品一区二区你懂的| 精品国产露脸精彩对白| 久久激情五月激情| 日韩欧美专区在线| 国产又黄又大久久| 国产日产欧美一区二区视频| 国产剧情一区二区| 国产精品久久久久aaaa| 不卡的电视剧免费网站有什么| 欧美高清在线精品一区| av一区二区三区四区| 亚洲免费观看高清完整版在线观看 | 蜜桃视频免费观看一区| 欧美一区二区三区日韩| 青青草一区二区三区| 69堂成人精品免费视频| 午夜激情久久久| 欧美图区在线视频| 日韩精品一区二区三区蜜臀 | 天天射综合影视| caoporen国产精品视频| 亚洲国产激情av| 国产成人小视频| 中文字幕第一区综合| 成人h动漫精品| 亚洲欧美激情视频在线观看一区二区三区 | 亚洲午夜羞羞片| 欧美日韩国产综合一区二区| 一区二区三区四区av| 欧美婷婷六月丁香综合色| 亚洲123区在线观看| 91精品国产91综合久久蜜臀| 日韩av不卡在线观看| 欧美一区二区三区小说| 日本在线播放一区二区三区| 欧美一卡在线观看| 久久成人免费网站| 精品国产a毛片| 成人性视频免费网站| 亚洲视频 欧洲视频| 欧美日韩亚州综合| 日本午夜精品视频在线观看 | 国模冰冰炮一区二区| 久久久精品中文字幕麻豆发布| 国产精品亚洲专一区二区三区| 欧美韩国一区二区| 日本乱人伦一区| 免费观看一级欧美片| 久久久久久久久一| 91极品视觉盛宴| 另类综合日韩欧美亚洲| 国产精品三级视频| 欧美精品九九99久久| 石原莉奈在线亚洲三区| 中文av一区二区| 精品视频一区二区不卡| 国产自产2019最新不卡| 一区二区三区在线免费| 日韩免费电影网站| aaa亚洲精品一二三区| 日韩二区在线观看| 日韩美女视频一区| 精品对白一区国产伦| 色悠悠久久综合| 国内精品嫩模私拍在线| 亚洲免费在线视频| 欧美激情在线观看视频免费| 91精品综合久久久久久| www.99精品| 国产一区亚洲一区| 亚洲成人免费电影| 国产精品久久久久7777按摩| 91精品国产综合久久久久久漫画| av在线播放不卡| 狠狠色丁香久久婷婷综| 亚洲 欧美综合在线网络| 国产精品毛片大码女人| 日本高清不卡视频| 色婷婷久久久综合中文字幕| 国产凹凸在线观看一区二区| 蓝色福利精品导航| 五月婷婷激情综合| 亚洲色图视频网站| 中日韩av电影| 久久久99精品久久| 欧美精品一区二区三区在线 | 久久久久久日产精品| 欧美成人精品1314www| 欧美亚洲动漫精品| 99视频有精品| 欧美性受xxxx黑人xyx| 日本伦理一区二区| 91久久香蕉国产日韩欧美9色| 不卡大黄网站免费看| 国产大陆a不卡| 国产成人免费在线视频| 国产一区二区三区四区五区美女 | 午夜精品久久久| 亚洲卡通欧美制服中文| 中文字幕一区二区三区在线不卡 | 欧美日韩一级片在线观看| 色网站国产精品| 欧美性受xxxx黑人xyx性爽| 色吊一区二区三区| 欧美亚洲综合在线| 欧美精品久久久久久久久老牛影院| 欧美日韩精品综合在线| 3d成人h动漫网站入口| 欧美高清一级片在线| 91精品国产综合久久福利软件| 欧美一区二区三区精品| 日韩一区二区三| 久久久99久久| 亚洲欧美视频在线观看视频| 亚洲愉拍自拍另类高清精品| 午夜精品国产更新| 国产乱人伦偷精品视频免下载| 日本 国产 欧美色综合| 91麻豆精品国产91久久久资源速度 | 国产自产高清不卡| 福利电影一区二区| 91蜜桃在线观看| 欧美日韩二区三区| 欧美嫩在线观看| 久久精品亚洲麻豆av一区二区| 国产欧美日韩精品一区| 亚洲色图制服诱惑| 青草av.久久免费一区| 国产精品资源在线观看| 91视频精品在这里| 欧美一区二区日韩| 国产片一区二区三区| 亚洲国产裸拍裸体视频在线观看乱了 | 亚洲国产日韩a在线播放性色| 青青草国产精品亚洲专区无| 国产成人av一区二区| 色狠狠一区二区三区香蕉| 欧洲精品视频在线观看| 日本一区二区三区在线观看| 一区二区三区美女| 国产福利一区二区三区视频在线 | 欧美亚洲一区二区在线| 精品久久国产老人久久综合| 亚洲欧美另类在线| 激情都市一区二区| 欧美日韩一二三| 国产精品久久久久久妇女6080| 麻豆成人综合网| 色八戒一区二区三区| 久久蜜桃av一区二区天堂 | 国产女主播在线一区二区| 亚洲一区二区精品久久av| 国产一区二区精品在线观看| 在线观看视频一区二区欧美日韩| 日韩免费成人网| 亚洲一区二区三区四区在线观看| 国产综合色产在线精品| 欧美精品1区2区3区| 午夜精品久久久久久久99樱桃| 国产成人自拍网| 91麻豆精品国产91久久久使用方法 | 综合久久国产九一剧情麻豆| 久久99久久久欧美国产| 欧美日韩另类一区| 午夜亚洲福利老司机| 91视频.com| 亚洲天天做日日做天天谢日日欢| 韩国一区二区三区| 日韩亚洲欧美一区|