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

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

?? inptstrm.c

?? mp3解碼程序vc++環(huán)境下運行
?? C
字號:

#include "mplex.h"
/*************************************************************************
   檢查MPEG數(shù)據(jù)流
*************************************************************************/

void marker_bit (bs, what)
Bit_stream_struc *bs;
unsigned int what;
{
    if (what != get1bit(bs))
    {
        printf ("\nError in MPEG stream at offset (bits) %ul: supposed marker bit not found.\n",sstell(bs));
        exit (1);
    }
}



/*************************************************************************
  檢查是否為有效的MPEG文件
*************************************************************************/

void check_files (vfile, afile, mfile, audio_file, video_file, multi_file,
		  audio_bytes, video_bytes, ptr_which_streams)
char *vfile, *afile, *mfile;
char** audio_file;
char** video_file;
char** multi_file;
unsigned int *audio_bytes;
unsigned int *video_bytes;
unsigned int *ptr_which_streams;

{
    Bit_stream_struc bs1, bs2;
    unsigned int bytes_1, bytes_2;

	if (open_file(vfile, &bytes_1) || open_file(afile, &bytes_2))
	    exit (1); 

    open_bit_stream_r (&bs1, vfile, BUFFER_SIZE);
 
	open_bit_stream_r (&bs2, afile, BUFFER_SIZE);

   

    bs1.totbit       = 32;
    bs1.buf_byte_idx = -1;
    bs1.buf_bit_idx  = 8;
    refill_buffer (&bs1);
    bs1.buf_byte_idx = bs1.buf_size-1;

	bs2.totbit       = 32;
	bs2.buf_byte_idx = -1;
	bs2.buf_bit_idx  = 8;
	refill_buffer (&bs2);
	bs2.buf_byte_idx = bs2.buf_size-1;

	*video_file = vfile;
	*video_bytes= bytes_1;
	*ptr_which_streams |= STREAMS_VIDEO;

	*ptr_which_streams |= STREAMS_AUDIO;
	*audio_file = afile;
	*audio_bytes= bytes_2;

    close_bit_stream_r (&bs1);
    close_bit_stream_r (&bs2);

	*multi_file = mfile;
		

 }

/*************************************************************************
	Get_Info_Video
	獲取視頻流信息并存儲在臨時文件中


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

void get_info_video (video_file, video_units, video_info, startup_delay, length)

char *video_file;	
char *video_units;
Video_struc *video_info;
double *startup_delay;
unsigned int length;

{
    FILE* info_file;
    Bit_stream_struc video_bs;
    unsigned int offset_bits=0;
    unsigned int stream_length=0; 
    Vaunit_struc access_unit;
    unsigned long syncword;
    unsigned long decoding_order=0;
    unsigned long group_order=0;
    unsigned long temporal_reference=0;
    double secs_per_frame=0;
    unsigned short pict_rate;
    double DTS;
    double PTS;
    int i;
    unsigned int prozent;
    unsigned int old_prozent=0;
   
    printf ("scanning Video stream for access units information.\n");
    info_file = fopen (video_units, "wb");
    open_bit_stream_r (&video_bs, video_file, BUFFER_SIZE);


    if (getbits (&video_bs, 32)==SEQUENCE_HEADER)
    {
	video_info->num_sequence++;
	video_info->horizontal_size	= getbits (&video_bs, 12);
	video_info->vertical_size	= getbits (&video_bs, 12);
	video_info->aspect_ratio	= getbits (&video_bs,  4);
	pict_rate 			= (unsigned short)getbits (&video_bs,  4);
	video_info->picture_rate	= pict_rate;
	video_info->bit_rate		= getbits (&video_bs, 18);
	marker_bit (&video_bs, 1);
	video_info->vbv_buffer_size	= getbits (&video_bs, 10);
	video_info->CSPF		= get1bit (&video_bs);

    } else
    {
	printf ("Invalid MPEG Video stream header.\n");
	exit (1);
    }

    empty_vaunit_struc (&access_unit);
    *startup_delay = 2*MAX_FFFFFFFF;

    if (pict_rate >0 && pict_rate<9)
	secs_per_frame = 1. / picture_rates[pict_rate];
    else
	secs_per_frame = 1. / 25.;	/* invalid pict_rate info */

    do {
	if (seek_sync (&video_bs, SYNCWORD_START, 24))
	{
	    syncword = (SYNCWORD_START<<8) + getbits (&video_bs, 8);
	    switch (syncword) {

		case SEQUENCE_HEADER:
		    video_info->num_sequence++;
		    break;

		case GROUP_START:
		    video_info->num_groups++;
		    group_order=0;
		    break;

		case PICTURE_START:
		    if (access_unit.type != 0)
		    {
			stream_length = sstell (&video_bs)-32;
			access_unit.length = (stream_length - offset_bits)>>3;
			offset_bits = stream_length;
		        fwrite (&access_unit, sizeof (Vaunit_struc),
			    1, info_file);
			video_info->avg_frames[access_unit.type-1]+=
			    access_unit.length;
		    }

		    temporal_reference = getbits (&video_bs, 10);
		    access_unit.type   = getbits (&video_bs, 3);

		    DTS = decoding_order * secs_per_frame*CLOCKS;
		    PTS = (temporal_reference - group_order + 1 + 
				  decoding_order) * secs_per_frame*CLOCKS;

		    *startup_delay=(PTS<*startup_delay ? PTS : *startup_delay);

		    make_timecode (DTS,&access_unit.DTS);
		    make_timecode (PTS,&access_unit.PTS);
		    decoding_order++;
		    group_order++;

		    if ((access_unit.type>0) && (access_unit.type<5))
		        video_info->num_frames[access_unit.type-1]++;

		    prozent =(int) (((float)sstell(&video_bs)/8/(float)length)*100);
		    video_info->num_pictures++;		    

		    if (prozent > old_prozent)
		    {
			printf ("Got %d picture headers. %2d%%\r",
			    video_info->num_pictures, prozent);
			fflush (stdout);
			old_prozent = prozent;
		    }

		    break;		    

		case SEQUENCE_END:
		    stream_length = sstell (&video_bs);
		    access_unit.length = (stream_length - offset_bits)>>3;
	            fwrite (&access_unit, sizeof (Vaunit_struc),
			1, info_file);
		    video_info->avg_frames[access_unit.type-1]+=
			access_unit.length;
		    offset_bits = stream_length;
		    video_info->num_seq_end++;
		    break;		    

	    }
	} else break;
    } while (!end_bs(&video_bs));


    video_info->stream_length = offset_bits >> 3;
    for (i=0; i<4; i++)
	if (video_info->num_frames[i]!=0)
	   video_info->avg_frames[i] /= video_info->num_frames[i];

    if (secs_per_frame >0.)
        video_info->comp_bit_rate = (unsigned int)ceil ((double)(video_info->stream_length)/
	(double)(video_info->num_pictures)/secs_per_frame/1250.)*25;
    else
	video_info->comp_bit_rate = 0;

    close_bit_stream_r (&video_bs);
    fclose (info_file);
   
}

/*************************************************************************
	Output_Info_Video
    輸出視頻信息

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

void output_info_video (video_info)

Video_struc *video_info;
{
printf("\n+------------------ VIDEO STREAM INFORMATION -----------------+\n");

    printf ("\nStream length  : %8u\n",video_info->stream_length);
    printf   ("Sequence start : %8u\n",video_info->num_sequence);
    printf   ("Sequence end   : %8u\n",video_info->num_seq_end);
    printf   ("No. Pictures   : %8u\n",video_info->num_pictures);
    printf   ("No. Groups     : %8u\n",video_info->num_groups);
    printf   ("No. I Frames   : %8u avg. size%6u bytes\n",
	video_info->num_frames[0],video_info->avg_frames[0]);
    printf   ("No. P Frames   : %8u avg. size%6u bytes\n",
	video_info->num_frames[1],video_info->avg_frames[1]);
    printf   ("No. B Frames   : %8u avg. size%6u bytes\n",
	video_info->num_frames[2],video_info->avg_frames[2]);
    printf   ("No. D Frames   : %8u avg. size%6u bytes\n",
	video_info->num_frames[3],video_info->avg_frames[3]);

    printf   ("Horizontal size: %8u\n",video_info->horizontal_size);
    printf   ("Vertical size  : %8u\n",video_info->vertical_size);
    printf   ("Aspect ratio   :   %1.4f ",ratio[video_info->aspect_ratio]);

    switch (video_info->aspect_ratio)
    {
	case  0: printf ("forbidden\n"); break;
	case  1: printf ("VGA etc\n"); break;
	case  3: printf ("16:9, 625 line\n"); break;
	case  6: printf ("16:9, 525 line\n"); break;
	case  8: printf ("CCIR601, 625 line\n"); break;
	case 12: printf ("CCIR601, 525 line\n"); break;
	case 15: printf ("reserved\n"); break;
	default: printf ("\n");
    }

    if (video_info->picture_rate == 0)
       printf("Picture rate   : forbidden\n");
    else if (video_info->picture_rate <9)
       printf("Picture rate   :   %2.3f frames/sec\n",
       picture_rates[video_info->picture_rate]);
    else
       printf("Picture rate   : %x reserved\n",video_info->picture_rate);

    if (video_info->bit_rate == 0x3ffff) {
       video_info->bit_rate = 0;
       printf("Bit rate       : variable\n"); }
    else if (video_info->bit_rate == 0)
	printf("Bit rate      : forbidden\n");
    else
	printf("Bit rate       : %8u bytes/sec (%7u bits/sec)\n",
	       video_info->bit_rate*50,video_info->bit_rate*400);

    printf   ("Computed rate  : %8u bytes/sec\n",video_info->comp_bit_rate*50);
    printf   ("Vbv buffer size: %8u bytes\n",video_info->vbv_buffer_size*2048);
    printf   ("CSPF           : %8u\n",video_info->CSPF);
}

/*************************************************************************
	Output_Info_Audio
	輸出音頻信息

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

void output_info_audio (audio_info)

Audio_struc *audio_info;
{
    unsigned int layer;
    unsigned long bitrate;

    layer=3-audio_info->layer;
    bitrate = bitrate_index[layer][audio_info->bit_rate];


printf("\n+------------------ AUDIO STREAM INFORMATION -----------------+\n");

    printf ("\nStream length  : %8u\n",audio_info->stream_length);
    printf   ("Syncwords      : %8u\n",audio_info->num_syncword);
    printf   ("Frames         : %8u size %6u bytes\n",
	audio_info->num_frames[0],audio_info->size_frames[0]);
    printf   ("Frames         : %8u size %6u bytes\n",
	audio_info->num_frames[1],audio_info->size_frames[1]);
    printf   ("Layer          : %8u\n",1+layer);

    if (audio_info->protection == 0) printf ("CRC checksums  :      yes\n");
    else  printf ("CRC checksums  :       no\n");

    if (audio_info->bit_rate == 0)
	printf ("Bit rate       :     free\n");
    else if (audio_info->bit_rate == 0xf)
	printf ("Bit rate       : reserved\n");
    else
	printf ("Bit rate       : %8u bytes/sec (%3u kbit/sec)\n",
		 bitrate*128, bitrate);

    if (audio_info->frequency == 3)
	printf ("Frequency      : reserved\n");
    else
	printf ("Frequency      :     %2.1f kHz\n",
		frequency[audio_info->frequency]);

    printf   ("Mode           : %8u %s\n",
	audio_info->mode,mode[audio_info->mode]);
    printf   ("Mode extension : %8u\n",audio_info->mode_extension);
    printf   ("Copyright bit  : %8u %s\n",
	audio_info->copyright,copyright[audio_info->copyright]);
    printf   ("Original/Copy  : %8u %s\n",
	audio_info->original_copy,original[audio_info->original_copy]);
    printf   ("Emphasis       : %8u %s\n",
	audio_info->emphasis,emphasis[audio_info->emphasis]);
}

/*************************************************************************
	Get_Info_Audio
	獲取音頻信息并存儲在臨時文件中。
*************************************************************************/

void get_info_audio (audio_file, audio_units, audio_info, startup_delay, length)

char *audio_file;	
char *audio_units;
Audio_struc *audio_info;
double *startup_delay;
unsigned int length;

{
    FILE* info_file;
    Bit_stream_struc audio_bs;
    unsigned int offset_bits=0;
    unsigned int stream_length=0; 
    unsigned int framesize;
    unsigned int padding_bit;
    unsigned int skip;
    unsigned int decoding_order=0;
    double PTS;
    double samples_per_second;
    Aaunit_struc access_unit;
    unsigned int i;
    unsigned int prozent;
    unsigned int old_prozent=0;
   
    printf ("\nScanning Audio stream for access units information.\n");
    info_file = fopen (audio_units, "wb");
    open_bit_stream_r (&audio_bs, audio_file, BUFFER_SIZE);

    empty_aaunit_struc (&access_unit);

    if (getbits (&audio_bs, 12)==AUDIO_SYNCWORD)
    {
	marker_bit (&audio_bs, 1);
	audio_info->num_syncword++;
	audio_info->layer 		= getbits (&audio_bs, 2);
	audio_info->protection 		= get1bit (&audio_bs);
	audio_info->bit_rate 		= getbits (&audio_bs, 4);
	audio_info->frequency 		= getbits (&audio_bs, 2);
	padding_bit=get1bit(&audio_bs);
	get1bit (&audio_bs);
	audio_info->mode 		= getbits (&audio_bs, 2);
	audio_info->mode_extension 	= getbits (&audio_bs, 2);
	audio_info->copyright 		= get1bit (&audio_bs);
	audio_info->original_copy 	= get1bit (&audio_bs);
	audio_info->emphasis		= getbits (&audio_bs, 2);

	framesize =
	    (unsigned int)(bitrate_index[3-audio_info->layer][audio_info->bit_rate] /
	    frequency[audio_info->frequency] * slots [3-audio_info->layer]);
	audio_info->size_frames[0] = framesize;
	audio_info->size_frames[1] = framesize+1;
	
	access_unit.length = audio_info->size_frames[padding_bit];

	samples_per_second = (double)frequency [audio_info->frequency];

	PTS = decoding_order * samples [3-audio_info->layer] /
	      samples_per_second * 90. + *startup_delay;
	make_timecode (PTS, &access_unit.PTS);
	decoding_order++;

	fwrite (&access_unit, sizeof (Aaunit_struc),1, info_file);
	audio_info->num_frames[padding_bit]++;

    } else
    {
	printf ("Invalid MPEG Audio stream header.\n");
	exit (1);
    }


    do {
	skip=access_unit.length-4;
	if (skip & 0x1) getbits (&audio_bs, 8);
	if (skip & 0x2) getbits (&audio_bs, 16);
	skip=skip>>2;

	for (i=0;i<skip;i++)
	{
	    getbits (&audio_bs, 32);
	}
	offset_bits = sstell(&audio_bs);
	if (getbits (&audio_bs, 12)==AUDIO_SYNCWORD)
	{
	    marker_bit (&audio_bs, 1);
	    prozent =(int) (((float) sstell(&audio_bs)/8/(float)length)*100);
	    audio_info->num_syncword++;
	    if (prozent > old_prozent)
	    {
		printf ("Got %d frame headers. %2d%%\r",
			audio_info->num_syncword,prozent);
		fflush (stdout);
		old_prozent=prozent;

	    }
	    getbits (&audio_bs, 9);

	    padding_bit=get1bit(&audio_bs);
	    access_unit.length = audio_info->size_frames[padding_bit];

	    PTS = decoding_order * samples [3-audio_info->layer] /
		samples_per_second * 90. + *startup_delay;
	    make_timecode (PTS, &access_unit.PTS);

	    decoding_order++;

	    fwrite (&access_unit, sizeof (Aaunit_struc),1, info_file);
	    audio_info->num_frames[padding_bit]++;

	    getbits (&audio_bs, 9);
	}	
	else break;
    } while (!end_bs(&audio_bs));


    audio_info->stream_length = offset_bits >> 3;
    close_bit_stream_r (&audio_bs);
    fclose (info_file);

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美刺激脚交jootjob| 色呦呦国产精品| 精品久久一区二区三区| 国精产品一区一区三区mba桃花| 欧美一卡二卡在线| 激情文学综合网| 国产精品女主播av| 91久久人澡人人添人人爽欧美 | 韩国精品一区二区| 国产三级欧美三级日产三级99| 丁香啪啪综合成人亚洲小说 | 欧美一区二区视频免费观看| 久久电影网电视剧免费观看| 国产日产欧产精品推荐色 | 欧美大度的电影原声| 成人理论电影网| 亚洲国产婷婷综合在线精品| 日韩欧美一区在线| 不卡的av电影| 强制捆绑调教一区二区| 欧美激情中文字幕一区二区| 精品视频在线免费看| 国产精品一线二线三线精华| 亚洲欧美一区二区不卡| 欧美一区二区美女| 91视频精品在这里| 久久超碰97人人做人人爱| 国产精品国产三级国产aⅴ中文 | 日韩一区欧美一区| 欧美一区二区观看视频| 99麻豆久久久国产精品免费优播| 日韩中文字幕av电影| 国产精品女主播在线观看| 制服丝袜中文字幕亚洲| 99视频一区二区三区| 老司机午夜精品| 一区二区三区成人在线视频| 国产亚洲一区二区在线观看| 欧美日韩一区二区三区在线看| 国产精品亚洲第一区在线暖暖韩国 | 日韩一区二区三区视频| 91蜜桃免费观看视频| 国产专区综合网| 日韩精品欧美成人高清一区二区| 中文字幕av一区二区三区高| 欧美一区二区三区四区久久| 在线观看一区二区精品视频| 丰满放荡岳乱妇91ww| 极品少妇xxxx精品少妇偷拍| 亚洲午夜av在线| 亚洲欧美视频在线观看| 日本一区二区三区四区在线视频| 欧美第一区第二区| 欧美三级午夜理伦三级中视频| 成人aa视频在线观看| 国产一区二区在线影院| 免费观看30秒视频久久| 视频一区二区中文字幕| 亚洲自拍偷拍欧美| 亚洲精品视频在线看| 国产精品私房写真福利视频| 国产亚洲短视频| 久久伊人蜜桃av一区二区| 欧美一区午夜精品| 欧美日韩免费在线视频| 欧美日韩一区中文字幕| 欧美午夜精品一区二区蜜桃| 日本高清不卡在线观看| 一本色道亚洲精品aⅴ| a美女胸又www黄视频久久| 国产成人午夜高潮毛片| 国产成人免费xxxxxxxx| 国产成人免费视频网站| 国产91精品一区二区麻豆亚洲| 国产一区二区导航在线播放| 国产麻豆成人精品| 国产99久久久久久免费看农村| 国产黄色成人av| 福利一区福利二区| caoporn国产一区二区| 91在线云播放| 91精品1区2区| 欧美日韩免费视频| 欧美一区二区三区四区视频| 精品国产乱码久久久久久闺蜜| 久久久久久99久久久精品网站| 久久综合av免费| 国产欧美一区二区精品性| 国产精品色噜噜| 亚洲精品一二三区| 午夜精品久久久久久久 | 一区二区三区四区高清精品免费观看| 综合久久久久综合| 亚洲国产欧美日韩另类综合 | 成人三级在线视频| 91网站在线播放| 91麻豆精品国产91久久久使用方法 | 国产乱一区二区| 成人18视频日本| 欧美色综合网站| 欧美mv日韩mv| 国产精品久久久久久久久久免费看 | 久久一留热品黄| 亚洲欧洲av在线| 日日夜夜精品视频天天综合网| 国产一区二区三区四区五区美女| 丁香另类激情小说| 欧美色网站导航| 国产偷国产偷亚洲高清人白洁| 一区二区三区日韩在线观看| 久久精品国产久精国产爱| 成人高清免费观看| 日韩一级二级三级| 中文字幕人成不卡一区| 男女性色大片免费观看一区二区| 国产精品538一区二区在线| 色噜噜狠狠成人中文综合| 欧美一区二区三区日韩视频| 国产精品精品国产色婷婷| 日韩电影免费在线看| 白白色 亚洲乱淫| 日韩精品一区二区三区视频| 亚洲桃色在线一区| 精品一区二区三区视频| 欧美亚洲国产bt| 日本一区二区视频在线观看| 日韩av电影免费观看高清完整版 | 亚洲va欧美va人人爽| 成人一区二区视频| 91精品国产乱码久久蜜臀| 中文字幕一区二区三区在线不卡| 奇米一区二区三区av| 91视频在线看| 中文字幕成人在线观看| 看片网站欧美日韩| 欧美精品久久天天躁| 亚洲靠逼com| www.在线成人| 久久久精品国产免费观看同学| 亚洲高清免费一级二级三级| 91一区在线观看| 国产女人aaa级久久久级 | 国产成人8x视频一区二区| 日韩丝袜情趣美女图片| 天堂av在线一区| 欧美在线不卡一区| 亚洲免费在线视频| 成人免费视频播放| 欧美精彩视频一区二区三区| 久久国内精品视频| 日韩欧美国产电影| 日产国产高清一区二区三区| 在线观看国产一区二区| 亚洲免费毛片网站| 99精品视频中文字幕| 亚洲欧美在线视频| 99国产精品国产精品久久| 国产精品福利一区二区三区| 成人黄色国产精品网站大全在线免费观看| 久久综合国产精品| 国产黄色精品视频| 国产欧美日韩在线视频| 国产成人综合在线播放| 久久精品亚洲精品国产欧美kt∨| 国产一区二区三区免费观看 | 国产三级久久久| 国产成人三级在线观看| 国产精品美女一区二区在线观看| 国产91在线|亚洲| 国产精品久久99| 色欧美片视频在线观看| 亚洲主播在线播放| 欧美美女一区二区三区| 免费在线观看一区二区三区| 欧美成人a在线| 国产成人av影院| 最新国产の精品合集bt伙计| 色综合久久88色综合天天 | 久久精品国产亚洲5555| 久久久综合激的五月天| kk眼镜猥琐国模调教系列一区二区| 亚洲少妇最新在线视频| 欧美色图天堂网| 久久精品国产99国产| 中文字幕不卡在线播放| 色爱区综合激月婷婷| 日本欧美一区二区| 欧美国产精品久久| 欧美性色黄大片| 国产制服丝袜一区| 亚洲另类色综合网站| 91精品中文字幕一区二区三区| 国产毛片精品国产一区二区三区| 久久精品亚洲国产奇米99| 色婷婷亚洲综合| 久久电影网站中文字幕| 亚洲天堂av一区| 精品久久久久久久久久久久久久久久久 | 精品999在线播放| 色国产精品一区在线观看|