⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 musicin.c

📁 ISO mp3 sources (distribution 10) Layer 1/2/3, C Source, 512 k Sources of the Mpeg 1,2 layer 1,2
💻 C
📖 第 1 页 / 共 5 页
字号:
				break;		    default:    fprintf(stderr,"%s: unrec option %c\n",                                        programName, c);                                err = 1;				break;		}	    	    		if (argUsed)		{		    if (arg == token)			token = "";		/* no more from token */		    else			i++;		/* skip arg we used */		    arg = "";		    argUsed = 0;		}	    }	}	else	{	    if (original_file_name[0] == NULL_CHAR)		strcpy (original_file_name, argv[i]);	    else if (encoded_file_name[0] == NULL_CHAR)		strcpy (encoded_file_name, argv[i]);	    else	    {		fprintf (stderr, "%s: excess arg %s\n", programName, argv[i]);		err = 1;	    }	}    }    if ((info->bitrate_index = BitrateIndex (info->lay, brate)) < 0)	err = 1;    if (err || original_file_name[0] == NULL_CHAR)	usage ();  /* never returns */     if (encoded_file_name[0] == NULL_CHAR)    {	strcat (strcpy (encoded_file_name_ext, original_file_name), DFLT_EXT_EXT);	strcat (strcpy (encoded_file_name, original_file_name), DFLT_EXT);	strcat (strcpy (encoded_file_name_mpg, encoded_file_name), DFLT_EXT);    }    else    {	strcat (strcpy (encoded_file_name_ext, encoded_file_name), DFLT_EXT_EXT);	strcat (encoded_file_name, DFLT_EXT);	strcat (strcpy (encoded_file_name_mpg, encoded_file_name), DFLT_EXT);    }    if ((musicin = fopen (original_file_name, "rb")) == NULL)    {	printf ("Could not find \"%s\".\n", original_file_name);	exit (0);    }    open_bit_stream_w (&bs, encoded_file_name, BUFFER_SIZE);    if (aiff_read_headers (musicin, pcm_aiff_data, byte_per_sample) == 0)    {	int wrong_nr_channels = 0;	*aiff = 1;	if (*verbosity >= 2)	    printf (">>> Using Audio IFF sound file headers\n");	aiff_check (original_file_name, pcm_aiff_data);	if (fr_ps->config)	{	    /* check if config and number of channels is consistent */	    switch (fr_ps->config)	    {		case 100:   wrong_nr_channels = pcm_aiff_data->numChannels != 1;			    info->mode = MPG_MD_MONO;			    info->mode_ext = 0;			    break;		case 200:   wrong_nr_channels = pcm_aiff_data->numChannels - info->lfe != 2;			    fr_ps->lfe_pos = 2;			    break;		case 102:   wrong_nr_channels = pcm_aiff_data->numChannels - info->lfe != 3;			    info->mode = MPG_MD_MONO;			    info->mode_ext = 0;			    info->surround = 3; 			    fr_ps->stereomc = 2;			    fr_ps->lfe_pos = 1;			    break;		case 202:   wrong_nr_channels = pcm_aiff_data->numChannels - info->lfe != 4;			    info->surround = 3; 			    fr_ps->stereomc = 2;			    fr_ps->lfe_pos = 2;			    break;		case 210:   wrong_nr_channels = pcm_aiff_data->numChannels - info->lfe != 3;			    info->surround = 1; 			    fr_ps->stereomc = 1;			    fr_ps->lfe_pos = 2;			    break;		case 220:   wrong_nr_channels = pcm_aiff_data->numChannels - info->lfe != 4;			    info->surround = 2; 			    fr_ps->stereomc = 2;			    fr_ps->lfe_pos = 2;			    break;		case 302:   wrong_nr_channels = pcm_aiff_data->numChannels - info->lfe != 5;			    info->center = 1; 			    info->surround = 3; 			    fr_ps->stereomc = 3;			    break;		case 310:   wrong_nr_channels = pcm_aiff_data->numChannels - info->lfe != 4;			    info->center = 1; 			    info->surround = 1; 			    fr_ps->stereomc = 2;			    fr_ps->lfe_pos = 3;			    break;		case 320:   wrong_nr_channels = pcm_aiff_data->numChannels - info->lfe != 5;			    info->center = 1; 			    info->surround = 2; 			    fr_ps->stereomc = 3;			    fr_ps->lfe_pos = 3;			    break;#ifdef Augmentation_7ch		case 520:   wrong_nr_channels = pcm_aiff_data->numChannels - info->lfe != 7;			    if (ml_present)			    {				printf ("7.1 channel augmentation and multilingual cannot be combined\n");				exit (1);			    }			    fr_ps->config = 320;			    info->center = 1; 			    info->surround = 2; 			    fr_ps->stereomc = 3;			    fr_ps->stereoaug = 2;			    fr_ps->lfe_pos = 3;			    break;#endif		default:    printf ("Configuration: %d not supported\n", fr_ps->config);			    exit (1);	    }	}	else	{	    if (pcm_aiff_data->numChannels == 1)	    {		fr_ps->config = 100;		info->mode = MPG_MD_MONO;		info->mode_ext = 0;	    }	    else	    {		switch (pcm_aiff_data->numChannels - info->lfe)		{		    case 2: fr_ps->config = 200;			    fr_ps->lfe_pos = 2;			    break;		    case 3: fr_ps->config = 210;			    info->surround = 1; 			    fr_ps->stereomc = 1;			    fr_ps->lfe_pos = 2;			    break;		    case 4: fr_ps->config = 310;			    info->center = 1; 			    info->surround = 1; 			    fr_ps->stereomc = 2;			    fr_ps->lfe_pos = 3;			    break;		    case 5: fr_ps->config = 320;			    info->center = 1; 			    info->surround = 2; 			    fr_ps->stereomc = 3;			    fr_ps->lfe_pos = 3;			    break;#ifdef Augmentation_7ch		    case 7: fr_ps->config = 320;			    info->center = 1; 			    info->surround = 2; 			    fr_ps->stereomc = 3;			    fr_ps->stereoaug = 2;			    fr_ps->lfe_pos = 3;			    break;#endif		    default: wrong_nr_channels = 1;		}	    }	}		if (wrong_nr_channels)	{	    printf ("Configuration: %d lfe: %d do not match with audio channels: %d\n", 		     fr_ps->config,  info->lfe, pcm_aiff_data->numChannels);	    exit (1);	}	switch (fr_ps->config)	{	    case 100:   printf (">>> Using 1/0 configuration.\n"); 			break;	    case 200:   printf (">>> Using 2/0 configuration.\n"); 			break;	    case 102:   printf (">>> Using 1/0 + 2/0 configuration.\n"); 			break;	    case 202:   printf (">>> Using 2/0 + 2/0 configuration.\n"); 			break;	    case 210:   printf (">>> Using 2/1 configuration.\n"); 			break;	    case 220:   printf (">>> Using 2/2 configuration.\n"); 			break;	    case 302:   printf (">>> Using 3/0 + 2/0 configuration.\n"); 			break;	    case 310:   printf (">>> Using 3/1 configuration.\n"); 			break;	    case 320:   if (fr_ps->stereoaug == 0)			    printf (">>> Using 3/2 configuration.\n"); #ifdef Augmentation_7ch			else			    printf (">>> Using 5/2 configuration.\n"); #endif			break;	}	info->sampling_frequency = SmpFrqIndex ((long) pcm_aiff_data->sampleRate);	if (*verbosity >= 2)	    printf (">>> %.f Hz sampling frequency selected\n",		    pcm_aiff_data->sampleRate);	/* Determine number of samples in sound file */#ifndef MS_DOS	*num_samples = pcm_aiff_data->numChannels *		       pcm_aiff_data->numSampleFrames;#else	*num_samples = (long) (pcm_aiff_data->numChannels) *                       (long) (pcm_aiff_data->numSampleFrames);#endif	if (*cha_sw > 0)	{	    if (fr_ps->config == 320)		bool = *cha_sw > 7;	    else if (fr_ps->config == 310 && info->matrix == 2)		bool = *cha_sw > 5;	    else if (fr_ps->config == 310)		bool = *cha_sw > 4;	    else if (fr_ps->config == 220)		bool = *cha_sw > 3;	    else if (fr_ps->config == 300 || fr_ps->config == 302 || fr_ps->config == 210)		bool = *cha_sw > 2;	    else		bool = 1;	    if (bool)	    {		printf ("!!! Channel-switching mode %d cannot be used together with Configuration: %d !!!\n", *cha_sw, fr_ps->config);		exit (1);	    }	}#ifdef Augmentation_7ch	if (*aug_cha_sw > 0)	{	    if (info->aug_mtx_proc == 0 || info->aug_mtx_proc == -1)		bool = *aug_cha_sw > 7;	    else if (info->aug_mtx_proc == 1)		bool = *aug_cha_sw > 3;	    else		bool = 1;	    if (bool)	    {		printf ("!!! TCA7 mode %d cannot be used together with aug_mtx_proc: %d !!!\n",			*aug_cha_sw, info->aug_mtx_proc);		exit (1);	    }	}#endif	if (*dyn_cr > 0)	{	    if (fr_ps->config == 320)		bool = *dyn_cr > 14;	    else if (fr_ps->config == 310 || fr_ps->config == 220)		bool = *dyn_cr > 4;	    else if (fr_ps->config == 300 || fr_ps->config == 302 || fr_ps->config == 210)		bool = *dyn_cr > 1;	    else	    	bool = 1;	    if (bool)	    {		printf ("!!! Dynamic Crosstalk mode %d cannot be used for Configuration: %d !!!\n", *dyn_cr, fr_ps->config);		exit (1);	    }	    	    if (!bool && fr_ps->phantom_c)	    {	    	if (fr_ps->config == 320)		    bool = ((*dyn_cr==9) || (*dyn_cr==10) || (*dyn_cr==11) || (*dyn_cr==12) || (*dyn_cr==14));		else if (fr_ps->config == 310)		    bool = (*dyn_cr==4);		if (bool)		{		    printf ("!!! Dynamic Crosstalk mode %d cannot be used together with Phantom Coding for Configuration: %d!!!\n", *dyn_cr, fr_ps->config);		    exit (1);		}	    }	}#ifdef Augmentation_7ch	if (*aug_dyn_cr > 18)	{	    printf ("!!! Aug Dynamic Crosstalk mode %d cannot be used !!!\n", *aug_dyn_cr);	    exit (1);	}#endif    }    else    {	/* Not using Audio IFF sound file headers. */   	if (*verbosity >= 2)	    printf(" NO MULTICHANNEL CODING!!\n");	ml_present = 0;	if (fseek (musicin, 0, SEEK_SET) != 0)	{	    printf  ("Could not seek to PCM sound data in \"%s\".\n", original_file_name);	    exit (0);	} 	/* Declare sound file to have "infinite" number of samples. */	*num_samples = MAX_U_32_NUM;    }    /***************************************************************************/    /* 7/8/95 Multi lingual extension WtK                                      */    if (ml_present)    {	strcat (strcpy (multilingual_file_name, original_file_name), DFLT_ML_EXT);	if ((musicin_ml = fopen (multilingual_file_name, "rb")) == NULL) 	{	    printf ("Could not find \"%s\".\nNo MultiLingual Coding\n", multilingual_file_name);	    info->multiling_ch = 0;	}	else if (aiff_read_headers (musicin_ml, pcm_aiff_data_ml, byte_per_sample) == 0) 	{	    if (*verbosity >= 2)		printf (">>> Using Audio IFF multilingual file headers\n");	    info->multiling_ch = pcm_aiff_data_ml->numChannels;	    if (*verbosity >= 2)		printf (">>> Using %d multilingual channels\n", info->multiling_ch);	    *num_samples_ml = pcm_aiff_data_ml->numChannels *			      pcm_aiff_data_ml->numSampleFrames;	}	else     /* Not using Audio IFF sound file headers. */	{	    printf("***WARNING: Could not read ML AIFF header - No MultiLingual coding!!\n");	    info->multiling_ch = 0;	}	if (info->multiling_ch > 0)	{	    switch (SmpFrqIndex ((long) pcm_aiff_data_ml->sampleRate) - info->sampling_frequency)	    {		case 16 :   if (*verbosity >= 2)				printf ("MultiLingual is LSF coded.\n");			    info->multiling_fs = 1;			    break;		case  0 :   if (*verbosity >= 2)				printf ("MultiLingual sample rate equals that of Audio.\n");			    info->multiling_fs = 0;			    break;		default :   printf ("***WARNING: MultiLingual sample rate unequals (half) mc sample rate.\n");       			    printf ("            No MultiLingual coding!!!\n");			    info->multiling_ch = 0;			    break;	    } /*switch*/	} /*if (ml_ch>0)*/    }    else    {	info->multiling_ch = 0;    } /* if (ml_present) */    /* 7/8/95 Multi lingual extension WtK                                      */    /***************************************************************************/}/************************************************************************/*/* print_config/*/* PURPOSE:  Prints the encoding parameters used/*/************************************************************************/ voidprint_config (frame_params *fr_ps, int *psy, long unsigned int *num_samples, char *inPath, char *outPath, int *aiff){    layer *info = fr_ps->header;     printf ("Encoding configuration:\n");    if (*aiff == 1)	printf ("Layer=%s   mode=%s   extn=%d   psy model=%d\n",	        layer_names[info->lay-1], mode_names[info->mode],	        info->mode_ext, *psy);    else	printf ("Layer=%s   mode=%s   extn=%d    psy model=%d\n",

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -