应该是从文件读到内存; 另外,我今天下午在运行程序时发现声音根本不能从话筒读入,因为插上话筒后,耳机中能听到讲话声,但缓冲区中的数据仍为未插话筒时的值.所以我想是不是也有可能驱动程序写错了(程序是从网上找的一个适合与多操作系统的,我又改了一下)8 K: h& B! p+ C: c' B5 b
这是程序:
; X$ X" [" v- W( p( o6 bfd = open(DEV_AUDIO, O_RDONLY);! T& ^' P6 ~% b9 S5 R- `- g
ioctl(fd, SNDCTL_DSP_RESET, NULL);9 f; ^. w+ A. Y# i1 w$ a. u$ j$ m
/* Set the input source; the default is the microphone. */ 7 Y1 k6 ]9 P8 Q3 ^ M
fd_mixer = open("/dev/mixer", O_WRONLY); / |- K: x9 a: ]% n% M
/* Set the input source; the default is the microphone. */
& }2 I) h: @. u( f# F fd_mixer = open("/dev/mixer", O_WRONLY); - ^7 C2 `- j: P& ?
ioctl(fd_mixer, SOUND_MIXER_WRITE_RECSRC, &dev_mask);
1 s$ w2 [' v/ Y: }/ {$ o! o# |6 rioctl(fd_mixer, SOUND_MIXER_READ_RECSRC, &dev_mask);/ q2 l. `9 _1 z9 R( Q7 h( ?
close(fd_mixer);8 Y9 m+ c' o, \! M. C
ioctl(fd, SNDCTL_DSP_SPEED, & sampleRate);* Y: {0 s0 Q% g( I" P, e" ^
ioctl(fd,SOUND_MIXER_READ_RECMASK,&dev_mask);" \7 V* g1 n# i' B' [/ O9 `9 u
ioctl(fd, SOUND_MIXER_WRITE_RECSRC, &dev_mask);
- q' N; I, S* a4 ~1 F7 L, L# Rioctl(fd, SOUND_MIXER_READ_RECSRC, &dev_mask);
+ v+ v* U" S; B+ A6 J8 x read函数调用:
+ }: Z+ x' s8 J* s6 L, R: V0 Cread(fd, &((char *) buffer)[1 + TEST ], numberOfSamples - TEST ) ; : x+ S2 N o3 Y# \( N
不知上面代码有无问题,请帮我看一下,万谢!