• 7471阅读
  • 0回复

linux下dev-dsp的问题 [复制链接]

上一主题 下一主题
离线ppbbcc
 
只看楼主 倒序阅读 楼主  发表于: 2007-02-07
各位大虾,我在学着写一个WAV文件播放程序是候遇到了一系列问题:

1。首先是/dev/dsp文件打不开,但我看了/dev下面dsp确实存在,我用xmms放了一下MP3,确认能正确播放,有声音,过了一段时间大约10分钟左右,/dev/dsp又可以打开了,不知道是为什么!!!

2,打开了dsp后,播放WAV文件,是杂音,发现好象是参数的设置有问题,部分代码如下:

qDebug ("Header.BitRes= %d ,Header.Frequency =%d ,channels = %d" , Header.BitRes ,Header.Frequency, Header.Channels) ;

if ( (dspfd = open ("/dev/dsp" , O_RDWR)) < 0)
    QMessageBox::message("Help", "help for this data5") ;

if ( ioctl ( dspfd, SOUND_PCM_WRITE_BITS, &Header.BitRes ) == -1)
  QMessageBox::message("Erro", "SOUND_PCM_WRITE_BITS is Fault") ;

if ( ioctl ( dspfd, SOUND_PCM_WRITE_CHANNELS, &Header.Channels ) == -1)
  QMessageBox::message("Erro", "SOUND_PCM_WRITE_CHANNELS is Fault") ;

if ( ioctl ( dspfd, SOUND_PCM_WRITE_RATE, &Header.Frequency ) == -1)
  QMessageBox::message("Erro", "SOUND_PCM_WRITE_RATE is Fault") ;
 
qDebug ("Header.BitRes= %d ,Header.Frequency =%d ,channels = %d" , Header.BitRes ,Header.Frequency, Header.Channels) ;

write ( dspfd , wavdata ,sizeof(wavdata) ) ;

两个qDebug的输出如下:

Header.BitRes= 8 ,Header.Frequency =16000 ,channels = 1

Header.BitRes= 16 ,Header.Frequency =48000 ,channels = 2

发现 IOCTL后,参数都被它该了,说明设置不成功,请问这个是什么问题。。。。请大家指点迷
津!!

致版主:我不知道这个问题应该发到哪个版面,如果不当话,请帮忙移到合适的版面,谢谢!
[ 此贴被ppbbcc在2007-02-07 11:09重新编辑 ]
快速回复
限100 字节
 
上一个 下一个