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

📄 adf_00.cc

📁 这是一个从音频信号里提取特征参量的程序
💻 CC
字号:
// file: $isip/class/mmedia/AudioFile/adf_00.cc// version: $Id: adf_00.cc,v 1.12 2002/06/17 19:42:32 gao Exp $//// isip include files//#include "AudioFile.h" // method: destructor//// arguments: none//// return: none//// this is the default destructor for the AudioFile class//AudioFile::~AudioFile() {  if (sof_d != (Sof*)NULL) {    delete sof_d;  }  if (backup_config_d != (AudioFile*)NULL) {    delete backup_config_d;  }  if (io_buf_d != (byte*)NULL) {    scratch_mgr_d.releaseBlock(io_buf_d);  }    // reset the data members (and close files)  //  clear(Integral::RETAIN);    // exit gracefully  //}// method: default constructor//// arguments://  FILE_TYPE type: (input) type of file//  FILE_FORMAT fformat: (input) file format//// return: none//// this is the default constructor for the AudioFile class//AudioFile::AudioFile(FILE_TYPE ftype_a,		     FILE_FORMAT fformat_a) {  // initialize class data  //  file_type_d = ftype_a;  file_format_d = fformat_a;  compression_type_d = DEF_COMP_TYPE;  amplitude_range_d = DEF_AMPLITUDE_RANGE;    sample_freq_d = DEF_SAMPLE_FREQ;  sample_num_bytes_d = DEF_SAMPLE_NUM_BYTES;  num_channels_d = DEF_NUM_CHANNELS;  sample_precision_d = DEF_SAMPLE_PRECISION;  // set the max_sample_val  //  setSamplePrecision(sample_precision_d);    no_data_d = true;  sof_d = (Sof*)NULL;  tag_d = DEF_TAG;  sof_length_pos_d = -1;  samples_written_d = 0;    buffers_d.setLength((long)num_channels_d);  buf_end_samp_d.setLength((long)num_channels_d);  Long num((long)-1);  buf_end_samp_d.assign(num);  end_of_file_d = false;    ma_mem_d.setLength((long)num_channels_d);  ar_mem_d.setLength((long)num_channels_d);  io_buf_d = (byte*)NULL;  backup_config_d = (AudioFile*)NULL;    // initialize filters to do nothing, just pass samples straight  // through  //  setMaCoeff(DEF_MA_COEFF);  setArCoeff(DEF_AR_COEFF);    // set the capacity of each channel's buffer  //  setBlockSize(DEF_BLOCK_SIZE);  setBufferSize(DEF_BUF_SIZE);    // exit gracefully  //}// method: copy constructor//// arguments://  const AudioFile& arg: (input) the AudioFile to copy//// return: none//// this is the copy constructor for the AudioFile class//AudioFile::AudioFile(const AudioFile& arg_a) {    // initialize class data  //  file_type_d = DEF_FILE_TYPE;  file_format_d = DEF_FILE_FORMAT;  compression_type_d = DEF_COMP_TYPE;  amplitude_range_d = DEF_AMPLITUDE_RANGE;    sample_freq_d = DEF_SAMPLE_FREQ;  sample_num_bytes_d = DEF_SAMPLE_NUM_BYTES;  num_channels_d = DEF_NUM_CHANNELS;  sample_precision_d = DEF_SAMPLE_PRECISION;  // set the max_sample_val  //  setSamplePrecision(sample_precision_d);  block_size_d = DEF_BLOCK_SIZE;  buf_size_d = DEF_BUF_SIZE;    no_data_d = true;  sof_d = (Sof*)NULL;  sof_length_pos_d = -1;  samples_written_d = 0;  end_of_file_d = false;    backup_config_d = (AudioFile*)NULL;    io_buf_d = (byte*)NULL;  buffers_d.setLength((long)num_channels_d);  buf_end_samp_d.setLength((long)num_channels_d);  Long num((long)-1);  buf_end_samp_d.assign(num);  // call the assign method to copy the AudioFile  //  assign(arg_a);    // exit gracefully  //}// method: constructor//// arguments://  FILE_TYPE file_type: (input) the file type//  FILE_FORMAT file_format: (input) file format//  double sample_frequency: (input) the sample frequency//  long sample_num_bytes: (input) the number of bytes per sample //  long num_channels: (input) the number of channels//// return: none//// this is the default constructor for the AudioFile class//AudioFile::AudioFile(FILE_TYPE file_type_a,		     FILE_FORMAT file_format_a,		     double sample_frequency_a,		     long sample_num_bytes_a,		     long num_channels_a) {  // initialize class data  //  file_type_d = file_type_a;  file_format_d = file_format_a;  compression_type_d = DEF_COMP_TYPE;  amplitude_range_d = DEF_AMPLITUDE_RANGE;    sample_freq_d = sample_frequency_a;  sample_num_bytes_d = sample_num_bytes_a;  num_channels_d = num_channels_a;  sample_precision_d = DEF_SAMPLE_PRECISION;  // set the max_sample_val  //  setSamplePrecision(sample_precision_d);    no_data_d = true;  sof_d = (Sof*)NULL;  sof_length_pos_d = -1;  samples_written_d = 0;  end_of_file_d = false;    backup_config_d = (AudioFile*)NULL;    buffers_d.setLength((long)num_channels_d);  buf_end_samp_d.setLength((long)num_channels_d);  Long num((long)-1);  buf_end_samp_d.assign(num);    ma_mem_d.setLength((long)num_channels_d);  ar_mem_d.setLength((long)num_channels_d);  io_buf_d = (byte*)NULL;    // initialize filters to do nothing, just pass samples straight  // through  //  setMaCoeff(DEF_MA_COEFF);  setArCoeff(DEF_AR_COEFF);    // set the capacity of each channel's buffer  //  setBlockSize(DEF_BLOCK_SIZE);  setBufferSize(DEF_BUF_SIZE);    // exit gracefully  //}// method: assign//// arguments://  const AudioFile& copy_file: (input) the AudioFile to assign//// return: a boolean value indicating status//// this is the copy assign method//boolean AudioFile::assign(const AudioFile& copy_file_a) {    // copy the file parameters  //  file_type_d = copy_file_a.file_type_d;  file_format_d = copy_file_a.file_format_d;    compression_type_d = copy_file_a.compression_type_d;  amplitude_range_d = copy_file_a.amplitude_range_d;    sample_freq_d = copy_file_a.sample_freq_d;  sample_num_bytes_d = copy_file_a.sample_num_bytes_d;  sample_precision_d = copy_file_a.sample_precision_d;  num_channels_d = copy_file_a.num_channels_d;  byte_mode_d = copy_file_a.byte_mode_d;    max_sample_val_d = copy_file_a.max_sample_val_d;    block_size_d = copy_file_a.block_size_d;  buf_size_d = copy_file_a.buf_size_d;  ma_coeff_d.assign(copy_file_a.ma_coeff_d);  ar_coeff_d.assign(copy_file_a.ar_coeff_d);  tag_d.assign(copy_file_a.tag_d);  id_d.assign(copy_file_a.id_d);    // this resets all buffers and allocates them to be the proper  // capacities  //  setNumChannels(num_channels_d);    // exit gracefully  //  return true;}// method: eq//// arguments://  const AudioFile& arg: (input) the AudioFile to compare//// return: a boolean value indicating status//// this method compares two AudioFile objects for equivalence//boolean AudioFile::eq(const AudioFile& arg_a) const {  // compare the file parameters  //  if (file_type_d != arg_a.file_type_d) {    return false;  }  if (file_format_d != arg_a.file_format_d) {    return false;  }    if (compression_type_d != arg_a.compression_type_d) {    return false;  }    if (!amplitude_range_d.almostEqual(arg_a.amplitude_range_d)) {    return false;  }    if (!sample_freq_d.almostEqual(arg_a.sample_freq_d)) {    return false;  }    if (sample_num_bytes_d != arg_a.sample_num_bytes_d) {    return false;  }    if (sample_precision_d != arg_a.sample_precision_d) {    return false;  }   if (num_channels_d != arg_a.num_channels_d) {    return false;  }    if (block_size_d != arg_a.block_size_d) {    return false;  }  if (buf_size_d != arg_a.buf_size_d) {    return false;  }  if (!ma_coeff_d.almostEqual(arg_a.ma_coeff_d)) {    return false;  }   if (!ar_coeff_d.almostEqual(arg_a.ar_coeff_d)) {    return false;  }   if (!id_d.eq(arg_a.id_d)) {    return false;  }    if (tag_d != arg_a.tag_d) {    return false;  }     // they are equal, exit gracefully  //  return true;}//-----------------------------------------------------------------------------//// we define non-integral constants in the default constructor////-----------------------------------------------------------------------------// constants: class name//const String AudioFile::CLASS_NAME(L"AudioFile");// constants: i/o related//const String AudioFile::PARAM_BYTE_ORDER(L"byte_order");const String AudioFile::PARAM_FILE_TYPE(L"file_type");const String AudioFile::PARAM_FILE_FORMAT(L"file_format");const String AudioFile::PARAM_DATA_TYPE(L"data_type");const String AudioFile::PARAM_COMP_TYPE(L"compression_type");const String AudioFile::PARAM_RANGE(L"amplitude_range");const String AudioFile::PARAM_DATA(L"data");const String AudioFile::PARAM_TAG(L"tag");const String AudioFile::PARAM_SAMPLE_FREQUENCY(L"sample_frequency");const String AudioFile::PARAM_SAMPLE_NUM_BYTES(L"sample_num_bytes");const String AudioFile::PARAM_SAMPLE_PRECISION(L"sample_precision");const String AudioFile::PARAM_NUM_CHANNELS(L"num_channels");const String AudioFile::PARAM_BLOCK_SIZE(L"block_size");const String AudioFile::PARAM_BUF_SIZE(L"buf_size");const String AudioFile::PARAM_ID(L"id");const String AudioFile::PARAM_MA_COEFF(L"ma_coeff");const String AudioFile::PARAM_AR_COEFF(L"ar_coeff");// static instantiations: namemaps for enumerations//NameMap AudioFile::FILE_TYPE_MAP(L"TEXT, BINARY");NameMap AudioFile::FILE_FORMAT_MAP(L"SOF, RAW, WAV, SPHERE");NameMap AudioFile::DATA_TYPE_MAP(L"SAMPLED_DATA, FEATURES");NameMap AudioFile::COMP_TYPE_MAP(L"LINEAR, ULAW, ALAW");NameMap AudioFile::SAMPLE_PRECISION_MAP(L"NONE, USE_SIZE, EIGHT_BITS, TWELVE_BITS, SIXTEEN_BITS, TWENTY_BITS, TWENTY_FOUR_BITS, THIRTY_TWO_BITSNONE");NameMap AudioFile::BMODE_MAP(L"NATIVE, SWAP, BIG_ENDIAN, LITTLE_ENDIAN");// constants: default values for class data//const VectorFloat AudioFile::DEF_MA_COEFF(L"1.0");const VectorFloat AudioFile::DEF_AR_COEFF(L"1.0");// static instantiations: memory managers and debug level//Integral::DEBUG AudioFile::debug_level_d = Integral::NONE;MemoryManager AudioFile::mgr_d(sizeof(AudioFile), AudioFile::name());MemoryManager AudioFile::scratch_mgr_d(sizeof(byte));

⌨️ 快捷键说明

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