[LAD] using libsndfile to write signed short

2014-09-25 Thread Joël Krähemann

Does someone know about writing WAV using libsndfile?
My file becomes 174M big as using sf_writef_short() within 8s

please take a look at

http://ags.sf.net



___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] using libsndfile to write signed short

2014-09-25 Thread Harry van Haaren
On Thu, Sep 25, 2014 at 8:50 PM, Joël Krähemann weedli...@gmail.com wrote:
 Does someone know about writing WAV using libsndfile?
 My file becomes 174M big as using sf_writef_short() within 8s

Are you sure you're only writing each sample once? Sounds like there's
an error in writing nframe samples for each sample or something.

Its pretty easy: and there's a brilliant to-the-point blog post on
using C++ interface (sndfile.hh) here:
http://parumi.wordpress.com/2007/12/16/how-to-write-wav-files-in-c-using-libsndfile/

If there's still issues, please pastebin some code, or ask a more
specific question :)

HTH, -Harry
___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] using libsndfile to write signed short

2014-09-25 Thread Joël Krähemann

On Thu, 2014-09-25 at 21:02 +0100, Harry van Haaren wrote:
 On Thu, Sep 25, 2014 at 8:50 PM, Joël Krähemann weedli...@gmail.com wrote:
  Does someone know about writing WAV using libsndfile?
  My file becomes 174M big as using sf_writef_short() within 8s
 
 Are you sure you're only writing each sample once? Sounds like there's
 an error in writing nframe samples for each sample or something.
 
 Its pretty easy: and there's a brilliant to-the-point blog post on
 using C++ interface (sndfile.hh) here:
 http://parumi.wordpress.com/2007/12/16/how-to-write-wav-files-in-c-using-libsndfile/
 
 If there's still issues, please pastebin some code, or ask a more
 specific question :)
 
 HTH, -Harry

There probably only those three functions involved:

void
ags_export_output_launch(AgsTask *task)
{
  AgsExportOutput *export_output;
  AgsExportThread *export_thread;
  AgsDevout *devout;
  AgsAudioFile *audio_file;
  gchar *filename;

  export_output = AGS_EXPORT_OUTPUT(task);
  devout = export_output-devout;
  export_thread = export_output-export_thread;
  filename = export_output-filename;

  /* open read/write audio file */
  audio_file = ags_audio_file_new(filename,
  devout,
  0, devout-dsp_channels);

  audio_file-samplerate = (int) devout-frequency;
  audio_file-channels = devout-dsp_channels;
  //  audio_file-format = devout-bits;

 
  audio_file-frames = export_output-frames;

  ags_audio_file_rw_open(audio_file,
 TRUE);


  g_message(export output);

  /* start export thread */
  g_object_set(G_OBJECT(export_thread),
   audio-file\0, audio_file,
   NULL);
  ags_thread_start(export_thread);
}


void
ags_export_thread_run(AgsThread *thread)
{
  AgsExportThread *export_thread;
  AgsDevout *devout;

  export_thread = AGS_EXPORT_THREAD(thread);

  devout =  thread-devout;

  if((AGS_DEVOUT_BUFFER1  (devout-flags)) != 0){
ags_audio_file_write(export_thread-audio_file,
 devout-buffer[0], devout-buffer_size);
  }else if((AGS_DEVOUT_BUFFER2  (devout-flags)) != 0){
ags_audio_file_write(export_thread-audio_file,
 devout-buffer[1], devout-buffer_size);
  }else if((AGS_DEVOUT_BUFFER3  (devout-flags)) != 0){
ags_audio_file_write(export_thread-audio_file,
 devout-buffer[2], devout-buffer_size);
  }else if((AGS_DEVOUT_BUFFER0  (devout-flags)) != 0){
ags_audio_file_write(export_thread-audio_file,
 devout-buffer[3], devout-buffer_size1);
  }
}

void
ags_sndfile_write(AgsPlayable *playable, signed short *buffer, guint
buffer_length)
{
  AgsSndfile *sndfile;
  sf_count_t multi_frames, retval;

  sndfile = AGS_SNDFILE(playable);

  multi_frames = buffer_length;
  retval = sf_write_short(sndfile-file, buffer, multi_frames);

  if(retval  multi_frames){
//sf_seek(sndfile-file, (multi_frames - retval),
SEEK_CUR);  

   
  }
}


___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev