sgopen.h
上传用户:tsjrly
上传日期:2021-02-19
资源大小:107k
文件大小:10k
源码类别:

语音压缩

开发平台:

C/C++

  1. /*==========================================================================
  2. *
  3. *  SUNGRAPH OPEN FILE AND DEFINE VARIABLE 
  4. *
  5. *===========================================================================
  6. *
  7. * *** SUNGRAPH FILES AND VARIABLES
  8. *
  9. * ifile.spd    input file
  10. *
  11. * ifile_ofile.sg_data    input and output file 
  12. *    'ifile' 'ifile_hp' 'ofile_npf' 'ofile_pf'
  13. *    'ofile_hpf'
  14. *
  15. * channel.sg_data    4800 bps bit stream
  16. *    'stream'
  17. *
  18. * stream_error.sg_data    4800 bps bit stream with errors
  19. *    'stream' 'stream_error' 'stream_error_s' 
  20. *    'error'
  21. *
  22. * lsp1.sg_data    line spectral pairs file on a frame basis
  23. *    comparing unquantized and quantized
  24. *      'lsp 1' 'lsp 2' ... 'lsp10' ...
  25. *    'qlsp 1' ...  'qlsp10'
  26. *    'qslsp 1' ... 'qslsp10'
  27. *
  28. * lsp2.sg_data    line spectral pairs file on a subframe
  29. *    basis comparing analysis and synthesis
  30. *    'lsp_analy 1' 'lsp_analy 2' ...
  31. *    'lsp_synth 1' 'lsp_synth 2' ...
  32. *
  33. * pitch.sg_data     pitch variables 
  34. *     'match' 'tau' tau_synth' 'ir'
  35. *     'gain' 'qgain' 'qgain_synth'
  36. *
  37. * constrain.sg_data    constrained excitation data
  38. *    'gain', 'ccor', 'dbcon'
  39. *
  40. * codebook.sg_data    codebook variables
  41. *    'match' 'index' 'index_synth' 'exc' 'ir'
  42. *    'gain' 'qgain' 'qgain_synth'
  43. *
  44. * error.sg_data     error signals
  45. *     'fndpp_e0' 'fndpp_v0' 'fndex_e0'
  46. *
  47. * rc.sg_data     reflection coeficients
  48. *     'rc 1' 'rc2' ... 'rc10' ...
  49. *
  50. *=======================================================================*/
  51.   /* *** open files and define variables in sungraph format */  
  52.     
  53.     
  54.   /* * disable disk_io auto error reporting */  
  55.     
  56.   disk_io_erh(0);  
  57.     
  58.   /* * open input speech file */  
  59.     
  60.   input_fid = open_var_channel(ifile,"speech_data");  
  61.   if (input_fid < 0) 
  62.     read_error(input_fid, "open input_fid");
  63.     
  64.   /* * open input_output speech file (4 variables) */  
  65.     
  66.      
  67.   ifile_ofile_fid = open_file("ifile_ofile", 1);  
  68.   if (ifile_ofile_fid < 0)  
  69.     write_error(ifile_ofile_fid, "open ifile_ofile_fid");  
  70.     
  71.   /* * define input_output speech variables */  
  72.     
  73.   ifile_vid = def_variable(ifile_ofile_fid, "ifile", R4, ll, &s_zero);  
  74.   if (ifile_vid < 0)  
  75.     write_error(ifile_vid, "define ifile_vid");  
  76.   ifile_hp_vid = def_variable(ifile_ofile_fid, "ifile_hp", R4, ll, &f_zero);  
  77.   if (ifile_hp_vid < 0)  
  78.     write_error(ifile_hp_vid, "define ifile_hp_vid"); 
  79.  
  80.   ofile_npf_vid = def_variable(ifile_ofile_fid, "ofile_npf",I2,ll,&s_zero);  
  81.   if (ofile_npf_vid < 0)  
  82.     write_error(ofile_npf_vid, "define ofile_npf_vid");  
  83.   ofile_pf_vid = def_variable(ifile_ofile_fid, "ofile_pf", I2, ll, &s_zero);  
  84.   if (ofile_pf_vid < 0)  
  85.     write_error(ofile_pf_vid, "define ofile_pf_vid");  
  86.   ofile_hpf_vid = def_variable(ifile_ofile_fid, "ofile_hpf", I2, ll, &s_zero);  
  87.   if (ofile_hpf_vid < 0)  
  88.     write_error(ofile_hpf_vid, "define ofile_hpf_vid");
  89.         
  90.   /* * open channel file */  
  91.     
  92.   channel_fid = open_file("channel", 1);  
  93.   if (channel_fid < 0)  
  94.     write_error(channel_fid, "open channel_fid");  
  95.     
  96.   /* * define channel variable */  
  97.       
  98.   channel_vid = def_variable(channel_fid, "stream", 1, STREAMBITS, &s_zero);  
  99.   if (channel_vid < 0)  
  100.     write_error(channel_vid, "define channel_vid");  
  101.     
  102.   /* * open stream_error file */  
  103.       
  104.   stream_error_fid = open_file("stream_error", 1);  
  105.   if (stream_error_fid < 0)  
  106.     write_error(stream_error_fid, "open stream_error_fid");  
  107.     
  108.   /* * define stream_error variables */  
  109.       
  110.   stream_vid = def_variable(stream_error_fid, 
  111.                           "stream", 1, STREAMBITS, &s_zero);  
  112.   if (stream_vid < 0)  
  113.     write_error(stream_vid, "define stream_vid");  
  114.   stream_error_vid = def_variable(stream_error_fid, 
  115.                          "stream_error", 1, STREAMBITS, &s_zero);  
  116.   if (stream_error_vid < 0)  
  117.     write_error(stream_error_vid, "define stream_error_vid"); 
  118.  
  119.   stream_error_s_vid = def_variable(stream_error_fid,
  120.                          "stream_error_s", 1, STREAMBITS, &s_zero);  
  121.   if (stream_error_s_vid < 0)  
  122.     write_error(stream_error_s_vid, "define stream_error_s_vid");  
  123.   bit_error_vid = def_variable(stream_error_fid,
  124.                          "bit_error", 1, STREAMBITS, &s_zero);  
  125.   if (bit_error_vid < 0)  
  126.     write_error(bit_error_vid, "define bit_error_vid");  
  127.     
  128.   /* * open lsp1 file (number of variables  =  order) */  
  129.       
  130.   lsp1_fid = open_file("lsp1", 1);  
  131.   if (lsp1_fid < 0)  
  132.     write_error(lsp1_fid, "open lsp1_fid");  
  133.    
  134.   /* * define lsp and qlsp variables  */  
  135.       
  136.   for (i = 0; i < no; i++)  
  137.   {  
  138.     sprintf(str,"lsp%2d",i+1);  
  139.     lsp_vid[i] = def_variable(lsp1_fid, str, R4, 1, &f_zero);  
  140.     if (lsp_vid[i] < 0)  
  141.       write_error(lsp_vid[i], "define lsp_vid");  
  142.     sprintf(str,"qlsp%2d",i+1);  
  143.     qlsp_vid[i] = def_variable(lsp1_fid, str, R4, 1, &f_zero);  
  144.     if (qlsp_vid[i] < 0)  
  145.       write_error(qlsp_vid[i], "define qlsp_vid");  
  146.   }  
  147.     
  148.   /* * open lsp2 file (number of variables  =  order) */  
  149.       
  150.   lsp2_fid = open_file("lsp2" ,1);  
  151.   if (lsp2_fid < 0)  
  152.     write_error(lsp2_fid, "open lsp2_fid");  
  153.     
  154.   /* * define qlsp variables */  
  155.       
  156.   for (i = 0; i < no; i++)  
  157.   {  
  158.     sprintf(str,"lsp_analy%2d",i+1);  
  159.     lsp_analy_vid[i] = def_variable(lsp2_fid, str, R4, nn, &f_zero);  
  160.     if (lsp_analy_vid[i] < 0)  
  161.       write_error(lsp_analy_vid[i], "define lsp_analy_vid");  
  162.     sprintf(str,"lsp_synth%2d",i+1);  
  163.     lsp_synth_vid[i] = def_variable(lsp2_fid, str, R4, nn, &f_zero);  
  164.     if (lsp_synth_vid[i] < 0)  
  165.       write_error(lsp_synth_vid[i], "define lsp_synth_vid");  
  166.   }  
  167.    
  168.   /* *open pitch file */  
  169.       
  170.   pitch_fid = open_file("pitch", 1);  
  171.   if (pitch_fid < 0)  
  172.     write_error(pitch_fid, "open pitch_fid");  
  173.     
  174.   /* *define pitch variables */  
  175.       
  176.   pitch_match_vid = def_variable(pitch_fid,
  177.       "match", R4, nn*plevel1, &f_zero);  
  178.   if (pitch_match_vid < 0)  
  179.     write_error(pitch_match_vid, "define pitch_match_vid");  
  180.   pitch_tau_vid = def_variable(pitch_fid,
  181.       "tau" , R4, nn, &s_zero);  
  182.   if (pitch_tau_vid < 0)  
  183.     write_error(pitch_tau_vid, "define pitch_tau_vid");  
  184.   pitch_tau_synth_vid = def_variable(pitch_fid,
  185.       "tau_synth", R4, nn, &s_zero);  
  186.   if (pitch_tau_synth_vid < 0)  
  187.     write_error (pitch_tau_synth_vid,"define pitch_tau_synth_vid"); 
  188.  
  189.   pitch_gain_vid = def_variable(pitch_fid,
  190.       "gain", R4, nn, &f_zero);  
  191.   if (pitch_gain_vid < 0)  
  192.     write_error(pitch_gain_vid, "define pitch_gain_vid");  
  193.   pitch_qgain_vid = def_variable(pitch_fid,
  194.       "qgain", R4, nn, &f_zero);  
  195.   if (pitch_qgain_vid < 0)  
  196.     write_error(pitch_qgain_vid, "define pitch_qgain_vid");  
  197.   pitch_qgain_synth_vid = def_variable(pitch_fid,
  198.       "qgain_synth", R4, nn, &f_zero);  
  199.   if (pitch_qgain_synth_vid < 0)  
  200.     write_error(pitch_qgain_synth_vid, "define pitch_qgain_synth_vid");  
  201.   pitch_ir_vid = def_variable(pitch_fid,
  202.       "ir", R4, ll, &f_zero);  
  203.   if (pitch_ir_vid < 0)  
  204.     write_error(pitch_ir_vid, "define pitch_ir_vid");  
  205.     
  206.   /*  *open constrain file */
  207.   constrain_fid = open_file("constrain", 1);
  208.   if (constrain_fid < 0)
  209.     write_error(constrain_fid, "open constrain_fid");
  210.   /*  *define constrain variables */
  211.   gain_vid = def_variable(constrain_fid, "gain", R4, nn, &f_zero);
  212.   if (gain_vid < 0)
  213.     write_error(gain_vid, "define gain_vid");
  214.   ccor_vid = def_variable(constrain_fid, "ccor", R4, nn, &s_zero);
  215.   if (ccor_vid < 0)
  216.     write_error(ccor_vid, "define ccor_vid");
  217.   dbcon_vid = def_variable(constrain_fid, "dbcon", R4, nn, &s_zero);
  218.   if (dbcon_vid < 0)
  219.     write_error(dbcon_vid, "define dbcon_vid");
  220.   /* *open codebook file */  
  221.       
  222.   cb_fid = open_file("codebook", 1);  
  223.   if (cb_fid < 0)  
  224.     write_error(cb_fid, "open cb_fid");  
  225.       
  226.   /* *define codebook variables */  
  227.       
  228.   cb_match_vid = def_variable(cb_fid, "match", R4, nn*ncsize, &f_zero);  
  229.   if (cb_match_vid < 0)  
  230.     write_error(cb_match_vid, "define cb_match_vid");  
  231.   cb_index_vid = def_variable(cb_fid, "index", 2, nn, &s_zero);  
  232.   if (cb_index_vid < 0)  
  233.     write_error(cb_index_vid, "define cb_index_vid");  
  234.   cb_index_synth_vid = def_variable(cb_fid, "index_synth", 2, nn, &s_zero);  
  235.   if (cb_index_synth_vid < 0)  
  236.     write_error(cb_index_synth_vid, "define cb_index_synth_vid"); 
  237.  
  238.   cb_gain_vid = def_variable(cb_fid, "gain", R4, nn, &f_zero);  
  239.   if (cb_gain_vid < 0)  
  240.     write_error(cb_gain_vid, "define cb_gain_vid"); 
  241.  
  242.   cb_qgain_vid = def_variable(cb_fid, "qgain", R4, nn, &f_zero);  
  243.   if (cb_qgain_vid < 0)  
  244.     write_error(cb_qgain_vid, "define cb_qgain_vid"); 
  245.  
  246.   cb_qgain_synth_vid = def_variable(cb_fid, "qgain_synth", R4, nn, &f_zero);  
  247.   if (cb_qgain_synth_vid < 0)  
  248.     write_error(cb_qgain_synth_vid, "define cb_qgain_synth_vid");  
  249.   cb_exc_vid = def_variable(cb_fid, "exc", R4, ll, &f_zero);  
  250.   if (cb_exc_vid < 0)  
  251.     write_error (cb_exc_vid, "define cb_exc_vid");  
  252.   cb_ir_vid = def_variable(cb_fid, "ir", R4, ll, &f_zero);  
  253.   if (cb_ir_vid < 0)  
  254.     write_error(cb_ir_vid, "define cb_ir_vid"); 
  255.  
  256.    /* *open error file */  
  257.       
  258.   error_fid = open_file("error", 1);  
  259.   if (error_fid < 0)  
  260.     write_error(error_fid, "open error_fid");  
  261.     
  262.   /* *define error variables */  
  263.       
  264.   fndpp_v0_vid = def_variable(error_fid, "fndpp_v0", R4, ll, &f_zero);  
  265.   if (fndpp_v0_vid < 0)  
  266.     write_error(fndpp_v0_vid, "define fndpp_v0_vid");  
  267.   fndpp_e0_vid = def_variable(error_fid, "fndpp_e0", R4, ll, &f_zero);  
  268.   if (fndpp_e0_vid < 0)  
  269.     write_error(fndpp_e0_vid, "define fndpp_e0_vid");  
  270.   fndex_e0_vid = def_variable(error_fid, "fndex_e0", R4, ll, &f_zero);  
  271.   if (fndex_e0_vid < 0)  
  272.     write_error(fndex_e0_vid, "define fndex_e0_vid");  
  273.     
  274.   /* *open reflection coefficient file */  
  275.       
  276.   rc_fid = open_file("rc", 1);  
  277.   if (rc_fid < 0)  
  278.     write_error(rc_fid, "open rc_fid");  
  279.     
  280.   /* *define rc variables */  
  281.       
  282.   for (i = 0; i < no; i++)  
  283.   {  
  284.     sprintf(str,"rc%2d",i+1);  
  285.     rc_vid[i] = def_variable(rc_fid, str, R4, 1, &f_zero);  
  286.      if (rc_vid[i] < 0)  
  287.        write_error(rc_vid[i], "define rc_vid");  
  288.   }