From 5cc91a08f6313e0b758063b7dfd31244d43eb9a0 Mon Sep 17 00:00:00 2001 From: iovar Date: Sat, 9 Dec 2006 13:25:18 +0000 Subject: minor corrections in sound handling git-svn-id: https://recordmydesktop.svn.sourceforge.net/svnroot/recordmydesktop/trunk@225 f606c939-3180-4ac9-a4b8-4b8779d57d0a --- recordmydesktop/src/capture_sound.c | 12 +++++++----- recordmydesktop/src/opendev.c | 4 ++-- 2 files changed, 9 insertions(+), 7 deletions(-) (limited to 'recordmydesktop') diff --git a/recordmydesktop/src/capture_sound.c b/recordmydesktop/src/capture_sound.c index 702d325..159ccd3 100644 --- a/recordmydesktop/src/capture_sound.c +++ b/recordmydesktop/src/capture_sound.c @@ -29,8 +29,8 @@ void *CaptureSound(ProgData *pdata){ - int frames=pdata->periodsize>>pdata->args.channels; -// fprintf(stderr,"fr %d ps %d\n",frames,pdata->periodsize);fflush(stderr); + int frames=pdata->periodsize; + int framesize=snd_pcm_format_width(SND_PCM_FORMAT_S16_LE)*pdata->args.channels; pthread_mutex_t pmut; pthread_mutex_init(&pmut,NULL); @@ -66,16 +66,18 @@ void *CaptureSound(ProgData *pdata){ //create new buffer newbuf=(SndBuffer *)malloc(sizeof(SndBuffer *)); - newbuf->data=(signed char *)malloc(pdata->periodsize); + newbuf->data=(signed char *)malloc(frames*framesize); newbuf->next=NULL; //read data into new buffer while(sretsound_handle, - newbuf->data+2*pdata->args.channels*sret, + newbuf->data+framesize*sret, frames-sret); - if(temp_sret==-EPIPE) + if(temp_sret==-EPIPE){ + fprintf(stderr,"An error occured while reading sound data:\n %s\n",snd_strerror(temp_sret)); snd_pcm_prepare(pdata->sound_handle); + } else if (temp_sret<0){ fprintf(stderr,"An error occured while reading sound data:\n %s\n",snd_strerror(temp_sret)); snd_pcm_prepare(pdata->sound_handle); diff --git a/recordmydesktop/src/opendev.c b/recordmydesktop/src/opendev.c index 7eb5d2b..9250bab 100644 --- a/recordmydesktop/src/opendev.c +++ b/recordmydesktop/src/opendev.c @@ -31,7 +31,7 @@ snd_pcm_t *OpenDev(const char *pcm_dev,unsigned int *channels,unsigned int *frequency,snd_pcm_uframes_t *periodsize,unsigned int *periodtime,int *hard_pause){ - + snd_pcm_t *mhandle; snd_pcm_hw_params_t *hwparams; unsigned int periods=2; @@ -76,7 +76,7 @@ snd_pcm_t *OpenDev(const char *pcm_dev,unsigned int *channels,unsigned int *freq fprintf(stderr, "Couldn't set periods.\n"); return NULL; } - buffsize=(exactrate*(*channels))/2; + buffsize=(exactrate)>>2; if (snd_pcm_hw_params_set_buffer_size_near(mhandle, hwparams,&buffsize)<0){ fprintf(stderr, "Couldn't set buffer size.\n"); return NULL; -- cgit v1.2.1