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

📄 encoder.h

📁 MPEG 2的音频编码软件。喜欢多媒体的开发人员可以看看。
💻 H
📖 第 1 页 / 共 2 页
字号:
extern void 	   II_scale_factor_calc1 (double (*sb_sample)[3][12][SBLIMIT], unsigned int (*scalar)[3][SBLIMIT],
					int sblimit, int dim);
extern void        pick_scale (unsigned int (*scalar)[3][SBLIMIT], frame_params *fr_ps, double (*max_sc)[SBLIMIT],
					int cha_sw, int aug_cha_sw, int aiff);
extern void        put_scale (unsigned int (*scalar)[3][SBLIMIT], frame_params *fr_ps, double (*max_sc)[SBLIMIT]);
extern void        II_transmission_pattern (unsigned int (*scalar)[3][SBLIMIT], unsigned int (*scfsi)[SBLIMIT],
					frame_params *fr_ps);

extern void II_encode_scale (unsigned int (*bit_alloc)[SBLIMIT],
			     unsigned int (*scfsi)[SBLIMIT],
			     unsigned int (*scalar)[3][SBLIMIT],
			     unsigned int lfe_alloc, 
			     unsigned int lfe_scalar, 
			     frame_params *fr_ps,
			     Bit_stream_struc *bs,
			     int *l,
			     int *z);

extern void        I_encode_scale (unsigned int (*scalar)[3][SBLIMIT], unsigned int (*bit_alloc)[SBLIMIT],
				    frame_params *fr_ps, Bit_stream_struc *bs);
extern int         II_bits_for_nonoise (double (*perm_smr)[SBLIMIT], unsigned int (*scfsi)[SBLIMIT],
				    frame_params *fr_ps, int a, int b, int *aiff);

extern void	   II_main_bit_allocation (double (*perm_smr)[SBLIMIT],
					   double (*ltmin)[SBLIMIT],
					   unsigned int (*scfsi)[SBLIMIT],
					   unsigned int (*bit_alloc)[SBLIMIT],
					   int *adb,
					   frame_params *fr_ps,
					   int *aiff,
					   double (*sb_sample)[3][12][SBLIMIT],
					   unsigned int (*scalar)[3][SBLIMIT],
					   double (*max_sc)[SBLIMIT],
					   double (*buffer)[1152],
					   double (*spiki)[SBLIMIT],
					   double (*joint_sample)[3][12][SBLIMIT],
					   unsigned int (*j_scale)[3][SBLIMIT], 
					   int dyn_cr, 
					   int aug_dyn_cr, 
					   unsigned int (*scfsi_dyn)[SBLIMIT], 
					   unsigned int (*scalar_dyn)[3][SBLIMIT]);

extern int         II_a_bit_allocation (double (*perm_smr)[SBLIMIT],
					unsigned int (*scfsi)[SBLIMIT],
					unsigned int (*bit_alloc)[SBLIMIT],
					int *adb,
					frame_params *fr_ps,
					int *aiff);

extern int         I_bits_for_nonoise (double (*perm_smr)[SBLIMIT], frame_params *fr_ps);
extern void        I_main_bit_allocation (double (*perm_smr)[SBLIMIT], unsigned int (*bit_alloc)[SBLIMIT],
					  int *adb, frame_params *fr_ps);
extern int         I_a_bit_allocation (double (*perm_smr)[SBLIMIT], unsigned int (*bit_alloc)[SBLIMIT],
				       int *adb, frame_params *fr_ps);
extern void        I_subband_quantization (unsigned int (*scalar)[3][SBLIMIT],
					   double (*sb_samples)[3][12][SBLIMIT],
					   unsigned int (*j_scale)[3][SBLIMIT],
					   double (*j_samps)[3][12][SBLIMIT],
					   unsigned int (*bit_alloc)[SBLIMIT],
					   unsigned int (*sbband)[3][12][SBLIMIT],
					   frame_params *fr_ps);
extern void        II_subband_quantization (unsigned int (*scalar)[3][SBLIMIT],
					    double (*sb_samples)[3][12][SBLIMIT],
					    unsigned int (*j_scale)[3][SBLIMIT],
					    double (*j_samps)[3][12][SBLIMIT],
					    unsigned int (*bit_alloc)[SBLIMIT],
					    unsigned int (*sbband)[3][12][SBLIMIT],
					    frame_params *fr_ps);
extern void        II_subband_quantization_mc (unsigned int (*scalar)[3][SBLIMIT],
					       double (*sb_samples)[3][12][SBLIMIT],
					       unsigned int (*j_scale)[3][SBLIMIT],
					       double (*j_samps)[3][12][SBLIMIT],
					       unsigned int (*bit_alloc)[SBLIMIT],
					       unsigned int (*sbband)[3][12][SBLIMIT],
					       frame_params *fr_ps);
#ifdef Augmentation_7ch
extern void        II_subband_quantization_aug (unsigned int (*scalar)[3][SBLIMIT],
						double (*sb_samples)[3][12][SBLIMIT],
						unsigned int (*j_scale)[3][SBLIMIT],
						double (*j_samps)[3][12][SBLIMIT],
						unsigned int (*bit_alloc)[SBLIMIT],
						unsigned int (*sbband)[3][12][SBLIMIT],
						frame_params *fr_ps);
#endif
extern void        I_encode_bit_alloc (unsigned int (*bit_alloc)[SBLIMIT], frame_params *fr_ps, Bit_stream_struc *bs);
extern void        II_encode_bit_alloc (unsigned int (*bit_alloc)[SBLIMIT], frame_params *fr_ps, Bit_stream_struc *bs);
extern void        II_encode_bit_alloc_mc (unsigned int (*bit_alloc)[SBLIMIT], frame_params *fr_ps, Bit_stream_struc *bs);
#ifdef Augmentation_7ch
extern void        II_encode_bit_alloc_aug (unsigned int (*bit_alloc)[SBLIMIT], frame_params *fr_ps, Bit_stream_struc *bs);
#endif
extern void        I_sample_encoding (unsigned int (*sbband)[3][12][SBLIMIT],
				      unsigned int (*bit_alloc)[SBLIMIT],
				      frame_params *fr_ps,
				      Bit_stream_struc *bs);
extern void        II_sample_encoding (unsigned int (*sbband)[3][12][SBLIMIT],
				       unsigned int (*bit_alloc)[SBLIMIT],
				       frame_params *fr_ps,
				       Bit_stream_struc *bs);
extern void        II_sample_encoding_mc (unsigned int (*sbband)[3][12][SBLIMIT],
					  unsigned int lfe_sbband[12],
					  unsigned int (*bit_alloc)[SBLIMIT],
					  unsigned int lfe_alloc,
					  frame_params *fr_ps,
					  Bit_stream_struc *bs);
#ifdef Augmentation_7ch
extern void        II_sample_encoding_aug (unsigned int (*sbband)[3][12][SBLIMIT],
					   unsigned int (*bit_alloc)[SBLIMIT],
					   frame_params *fr_ps,
					   Bit_stream_struc *bs);
#endif
extern void        encode_CRC (unsigned int crc, Bit_stream_struc *bs);
extern void	   ancillary_encode (frame_params*,Bit_stream_struc*,int);

extern void	   matricing_fft (double (*buffer)[1152], double (*buffer_matr)[1152], frame_params *fr_ps);
#ifdef Augmentation_7ch
extern void	   matricing_aug_fft (double (*buffer)[1152], double (*buffer_matr)[1152], frame_params *fr_ps);

#endif
extern void        tc_alloc (frame_params *fr_ps, double (*max_sc)[SBLIMIT]);
extern int         II_bits_for_indi (double (*perm_smr)[SBLIMIT], unsigned int (*scfsi)[SBLIMIT], frame_params *fr_ps, int *a, int *b, int *aiff);
extern int         required_bits ();
extern int         max_alloc ();
 

/* The following functions are in the file "tonal.c" */

extern void        read_cbound(int lay, int freq, int crit_band, int *cbound);
extern void        read_freq_band(int *sub_size, g_ptr *ltg, int lay, int freq);
extern void        make_map(int sub_size, mask *power, g_thres *ltg);
extern double      add_db(double a, double b);
extern void        II_f_f_t(double *sample, mask *power);
extern void        II_hann_win(double *sample);
extern void        II_pick_max(mask *power, double *spike);
extern void        II_tonal_label(mask *power, int *tone);
extern void        noise_label(int crit_band, int *cbound, mask *power, int *noise, g_thres *ltg);
extern void        subsampling(mask *power, g_thres *ltg, int *tone, int *noise);
extern void        threshold(int sub_size, mask *power, g_thres *ltg, int *tone, int *noise, int bit_rate);
extern void        II_minimum_mask(int sub_size, g_thres *ltg, double *ltmin, int sblimit);
extern void        II_smr(double *ltmin, double *smr, double *spike, double *scale, int sblimit, int l, int m);
extern void        II_Psycho_One(double (*buffer)[1152], double (*scale)[SBLIMIT], double (*ltmin)[SBLIMIT], frame_params *fr_ps, double (*smr)[SBLIMIT], double (*spiki)[SBLIMIT], int aiff);
extern void        I_f_f_t(double *sample, mask *power);
extern void        I_hann_win(double *sample);
extern void        I_pick_max(mask *power, double *spike);
extern void        I_tonal_label(mask *power, int *tone);
extern void        I_minimum_mask(int sub_size, g_thres *ltg, double *ltmin);
extern void        I_smr(double *ltmin, double *spike, double *scale);
extern void        I_Psycho_One(double (*buffer)[1152], double (*scale)[SBLIMIT], double (*ltmin)[SBLIMIT], frame_params *fr_ps);
extern double      non_lin_add(double a, double b, double c);


/* The following functions are in the file "psy.c" */

extern void        psycho_anal(double *buffer, short int *savebuf, int chn, int lay, float *snrSBLIMIT, double sfreq);
extern void        read_absthr(float *absthr, long int table);


/* The following functions are in the file "subs.c" */

extern void        fft(float *x_real, float *x_imag, float *energy, float *phi);


/* The following functions are in the file "predisto.c" */

void matri (
	double (*sbs_sample)[3][12][SBLIMIT],
	frame_params *fr_ps,
	double (*sb_sample)[3][12][SBLIMIT],
	unsigned int (*scalar)[3][SBLIMIT],
	int sblimit,
	unsigned int (*scfsi)[SBLIMIT],
	unsigned int (*scfsi_dyn)[SBLIMIT],
	unsigned int (*bit_alloc)[SBLIMIT],
	unsigned int (*subband)[3][12][SBLIMIT]
);

void trans_pattern (
	unsigned int (*scalar)[3][SBLIMIT],
	unsigned int (*scfsi)[SBLIMIT],
	frame_params *fr_ps,
	unsigned int (*scfsi_dyn)[SBLIMIT]
);

void pre_quant (
	double (*sbs_sample)[3][12][SBLIMIT],
	int l,
	int m,
	double (*sb_sample)[3][12][SBLIMIT],
	unsigned int (*scalar)[3][SBLIMIT],
	unsigned int (*bit_alloc)[SBLIMIT],
	unsigned int (*subband)[3][12][SBLIMIT],
	frame_params *fr_ps
);

void II_dequantize_sample (
	unsigned int (*sample)[3][SBLIMIT],
	unsigned int (*bit_alloc)[SBLIMIT],
	double (*fraction)[3][12][SBLIMIT],
	frame_params *fr_ps,
	int l,
	int m,
	int z
);

void II_denormalize_sample (
	double (*fraction)[3][12][SBLIMIT],
	unsigned int (*scale_index)[3][SBLIMIT],
	frame_params *fr_ps,
	int x,
	int l,
	int m,
	int z
);

void scale_factor_calc (
	unsigned int (*scalar)[3][SBLIMIT],
	int sblimit,
	int l,
	int m,
	int z,
	double (*sb_sample)[3][12][SBLIMIT]
);

void predistortion (
		    double (*sb_sample)[3][12][32], 
		    unsigned int (*scalar)[3][32], 
		    unsigned int (*bit_alloc)[32], 
		    unsigned int (*subband)[3][12][32], 
		    frame_params *fr_ps, 
		    double (*perm_smr)[32], 
		    unsigned int (*scfsi)[32], 
		    int *adb, 
		    unsigned int (*scfsi_dyn)[32]
		    );

/* The following functions are in the file "dyn_cross.c" */

void take_dyn_cross (
	int		dyn_cr,	
	frame_params	*fr_ps,  		    
	double		sb_sample_sum[5][3][SCALE_BLOCK][SBLIMIT], 	    
    	unsigned int	scalar_sum[][3][SBLIMIT], 			
	unsigned int	scfsi_sum[][SBLIMIT],  				
	unsigned int	scfsi_dyn[][SBLIMIT],  				
	double		sb_sample[CHANMAX3][3][SCALE_BLOCK][SBLIMIT],	
	unsigned int	scalar[][3][SBLIMIT], 				
	unsigned int	scfsi[][SBLIMIT]
	);
	
#ifdef Augmentation_7ch
void take_dyn_cross_aug (
	int		aug_dyn_cr,	
	frame_params	*fr_ps,  		    
	double		sb_sample_sum[5][3][SCALE_BLOCK][SBLIMIT], 	    
    	unsigned int	scalar_sum[][3][SBLIMIT], 			
	unsigned int	scfsi_sum[][SBLIMIT],  				
	unsigned int	scfsi_dyn[][SBLIMIT],  				
	double		sb_sample[CHANMAX3][3][SCALE_BLOCK][SBLIMIT],	
	unsigned int	scalar[][3][SBLIMIT], 				
	unsigned int	scfsi[][SBLIMIT]
	);
#endif
	
void trans_chan (frame_params *fr_ps);
#ifdef Augmentation_7ch
void trans_chan_aug (frame_params *fr_ps);
#endif
	 				
void combine (frame_params *fr_ps, double sb_sample[CHANMAX3][3][SCALE_BLOCK][SBLIMIT],
	      double sb_sample_sum[5][3][SCALE_BLOCK][SBLIMIT]);
#ifdef Augmentation_7ch
void combine_aug (frame_params *fr_ps, double sb_sample[CHANMAX3][3][SCALE_BLOCK][SBLIMIT],
		  double sb_sample_sum[5][3][SCALE_BLOCK][SBLIMIT]);
#endif
	
void dyn_bal (
	unsigned int	scfsi[CHANMAX3][SBLIMIT],  
	int		sbgr,			    
	frame_params	*fr_ps,
	int		min_ch,			    
	int		min_sb,			   
	int		*seli,			    
	int		*scale
	);
	
#ifdef Augmentation_7ch
void dyn_bal_aug (
	unsigned int	scfsi[CHANMAX3][SBLIMIT],  
	int		sbgr,			    
	frame_params	*fr_ps,
	int		min_ch,			    
	int		min_sb,			   
	int		*seli,			    
	int		*scale
	);
#endif

void choose_dyn (
	frame_params	*fr_ps, 
	int		min_ch,				
	int		min_sb,				
	int		sbgr, 				
	unsigned int	bit_alloc[CHANMAX3][SBLIMIT]
	);	
				    
#ifdef Augmentation_7ch
void choose_dyn_aug (
	frame_params	*fr_ps, 
	int		min_ch,				
	int		min_sb,				
	int		sbgr, 				
	unsigned int	bit_alloc[CHANMAX3][SBLIMIT]
	);	
#endif
			    
void scfsi_calc_dyn (
	unsigned int	scalar_dyn[][3][SBLIMIT],   
	int		ch, 			    
	int		sblimit,		    
	unsigned int	scfsi_dyn[][SBLIMIT]
	);
	 	    
void scfsi_calc (
	unsigned int	scalar[][3][SBLIMIT], 	
	int		ch, 			
	int		sblimit,		
	unsigned int	scfsi[][SBLIMIT]
	);
	 	
void scf_calc (
	double		sample[][3][SCALE_BLOCK][SBLIMIT], 
	int		sblimit,		
	int		ch,			
	unsigned int	scf[][3][SBLIMIT]
	);	


/* The following functions are in the file "lfe.c" */

extern void        lfe_filter(double**,double[12]);
extern void        lf_scalefactor(double[12],unsigned int*);
extern void        II_encode_lfe_scale(unsigned int, Bit_stream_struc*);
extern void        lfe_allocation(unsigned int*,int*);
extern void        II_lfe_quantisation(unsigned int,double[12],
                                       unsigned int, unsigned int[12],
                                       frame_params*);
extern void        II_encode_lfe_alloc(unsigned int, frame_params*, Bit_stream_struc*);
extern void        II_lfe_sample_encoding(unsigned int[12],
                                       unsigned int, frame_params*,
                                       Bit_stream_struc*);

⌨️ 快捷键说明

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