每天进步一点点。
分类: Windows平台
2014-07-05 12:07:17
typedef struct { float *data_in, *data_out ; long input_frames, output_frames ; long input_frames_used, output_frames_gen ; int end_of_input ; double src_ratio ; } SRC_DATA ;data_in : 指向输入缓冲区
input_frames : 输入缓冲区data_in的帧数. data_out : 输出缓冲区. output_frames : 输出缓冲区的最大帧数. src_ratio : output_sample_rate / input_sample_rate.output_frames_gen:返回生成的样点数
{ SRC_SINC_BEST_QUALITY = 0, SRC_SINC_MEDIUM_QUALITY = 1, SRC_SINC_FASTEST = 2, SRC_ZERO_ORDER_HOLD = 3, SRC_LINEAR = 4 } ;
SRC_SINC_BEST:带宽受限的sinc内插方法,最差的时候SNR为97db.SRC_SINC_*都是使用了同样的算法。使用的算法是参考 ,代码是自己开发的。
SRC_SINC_FASTEST:速度最快,SNR为80%带宽时97db提供了两个函数用于读取方法的名称和详细说明:SRC_ZERO_ORDER_HOLD:保持零阶的转换算法,质量比较差,速度那是亮瞎了。SRC_LINEAR :线性转换,质量很差,速度很快。const char *src_get_name (int converter_type) ; const char *src_get_description (int converter_type) ;另外四个辅助函数,用于数组里面的数据类型转换。
void src_short_to_float_array (const short *in, float *out, int len) ; void src_float_to_short_array (const float *in, short *out, int len) ; void src_int_to_float_array (const int *in, float *out, int len) ; void src_float_to_int_array (const float *in, int *out, int len) ;