X-Git-Url: https://hackdaworld.org/gitweb/?a=blobdiff_plain;f=audio%2Faudio.c;h=8402af5b1490aaca449575022184dc563656b5be;hb=HEAD;hp=9c8ca4a8e5984eeb1d039519a993eeb869940489;hpb=24edc387e6e88c32c6142f397ee891746eed62e3;p=my-code%2Fapi.git diff --git a/audio/audio.c b/audio/audio.c index 9c8ca4a..8402af5 100644 --- a/audio/audio.c +++ b/audio/audio.c @@ -6,22 +6,24 @@ #include "audio.h" -int audio_init(t_audio *audio) { +int audio_init(t_audio *audio,int outfd) { - puts("[audio] initializing audio ..."); + audio->outfd=outfd; - if((audio->dsp_fd=open(audio->dsp_dev,O_RDWR))==-1) { - perror("[audio] open call"); + dprintf(outfd,"[audio] initializing audio ...\n"); + + if((audio->dsp_fd=open(audio->dsp_dev,O_RDWR))<0) { + dprintf(audio->outfd,"[audio] open call"); return A_ERROR; } if(ioctl(audio->dsp_fd,SNDCTL_DSP_GETCAPS,&(audio->dsp_cap))==-1) { - perror("[audio] ioctl call"); + dprintf(audio->outfd,"[audio] ioctl call"); return A_ERROR; } if(!(audio->dsp_cap&DSP_CAP_DUPLEX)) { - puts("[audio] no duplex support"); + dprintf(audio->outfd,"[audio] no duplex support\n"); return A_ERROR; } @@ -32,39 +34,39 @@ int audio_setup(t_audio *audio) { int tmp; - puts("[audio] setting up sound device & allocating record/playback buffer"); + dprintf(audio->outfd,"[audio] setting up sound device & allocating record/playback buffer\n"); tmp=audio->fmt; if(ioctl(audio->dsp_fd,SNDCTL_DSP_SETFMT,&tmp)==-1) { - perror("[audio] ioctl call (SNDCTL_DSP_SETFMT)"); + dprintf(audio->outfd,"[audio] ioctl call (SNDCTL_DSP_SETFMT)"); return A_ERROR; } if(tmp!=audio->fmt) { - puts("[audio] FMT not supported"); + dprintf(audio->outfd,"[audio] fmt (%d) not supported\n",tmp); return A_ERROR; } tmp=audio->speed; if(ioctl(audio->dsp_fd,SNDCTL_DSP_SPEED,&tmp)==-1) { - perror("[audio] ioctl call (SNDCTL_DSP_SPEED)"); + dprintf(audio->outfd,"[audio] ioctl call (SNDCTL_DSP_SPEED)"); return A_ERROR; } if(tmp!=audio->speed) { - puts("[audio] SPEED not supported"); + dprintf(audio->outfd,"[audio] speed (%d) not supported\n",tmp); return A_ERROR; } if(ioctl(audio->dsp_fd,SNDCTL_DSP_GETBLKSIZE,&(audio->blksize))==-1) { - perror("[audio] ioctl call (SNDCTL_DSP_GETBLKSIZE)"); + dprintf(audio->outfd,"[audio] ioctl call (SNDCTL_DSP_GETBLKSIZE)"); return A_ERROR; } if((audio->play_data=(unsigned char *)malloc(audio->blksize))==NULL) { - perror("[audio] malloc call"); + dprintf(audio->outfd,"[audio] malloc call"); return A_ERROR; } if((audio->rec_data=(unsigned char *)malloc(audio->blksize))==NULL) { - perror("[audio] malloc call"); + dprintf(audio->outfd,"[audio] malloc call"); return A_ERROR; } @@ -73,13 +75,13 @@ int audio_setup(t_audio *audio) { int audio_shutdown(t_audio *audio) { - puts("[audio] shutdown"); + dprintf(audio->outfd,"[audio] shutdown\n"); free(audio->play_data); free(audio->rec_data); if(close(audio->dsp_fd)==-1) { - perror("[audio] close call"); + dprintf(audio->outfd,"[audio] close call"); return A_ERROR; } @@ -95,7 +97,7 @@ int audio_play(t_audio *audio,int len) { while(left) { if((count=write(audio->dsp_fd,audio->play_data+len-left,left))==-1) { - perror("[audio] write call"); + dprintf(audio->outfd,"[audio] write call"); return A_ERROR; } left-=count; @@ -113,7 +115,7 @@ int audio_record(t_audio *audio,int len) { while(left) { if((count=read(audio->dsp_fd,audio->rec_data+len-left,left))==-1) { - perror("[audio] read call"); + dprintf(audio->outfd,"[audio] read call"); return A_ERROR; } left-=count;