Написал небольшую програмку:
Код:
Определение класса
ossCtrl::ossCtrl()
{
int mixer_fd, recsrc, vol;
device="/dev/mixer";
mask=0;
log = QString::fromUtf8("Лог открытия устройства.\n");
volMic=0;
msk=SOUND_MASK_MIC;
writeLog(log,"Файл миксера = ",device);
if ((mixer_fd = open(device, O_RDWR)) == -1) {
perror(device);
return;
}
else
{
writeLog(log,"Успешно открыт файл.");
}
if (ioctl(mixer_fd, SOUND_MIXER_READ_DEVMASK, &mask) == -1) {
printf("Микшер неактивен, попробуйте другое устройство");
return;
}
else
{
writeLog(log,"Успешно прочитано mask = ",mask);
}
//ioctl(mixer_fd, SOUND_MIXER_WRITE_RECSRC, &msk);
if (ioctl(mixer_fd, SOUND_MIXER_READ_RECSRC, &recmask) == -1) {
printf("Микшер неактивен, попробуйте другое устройство");
return;
}
else
{
writeLog(log,"Успешно прочитано recmask = ",recmask);
}
ioctl(mixer_fd, SOUND_MIXER_READ_MIC, &volMic);
writeLog(log,"Уровень громкости микрофона = ",volMic);
close(mixer_fd);
}
Файл MainWindow.cpp
void MainWindow::createWidjets()
{
ossControl=new ossCtrl();
QString str = QString::fromUtf8("Проверка возможностей.\n");
//QLabel *label = new QLabel(this);
QTextEdit *label = new QTextEdit(this);
label->setFrameStyle(QFrame::Panel | QFrame::Sunken);
label->setAlignment(Qt::AlignTop | Qt::AlignLeft);
label->setEnabled ( true );
label->setGeometry ( 10, 22, 400, 300 );
if ((ossControl->recmask & SOUND_MASK_MIC) == 0 )
{
str.append(QString::fromUtf8("Запись с микрофона не поддерживается\n"));
}
else
{
str.append(QString::fromUtf8("Запись с микрофона возможна.\n"));
}
str.append(QString::number(ossControl->recmask));
label->setText(ossControl->log);
}
В логи пишет:
Лог открытия устройства.
Файл миксера = /dev/mixer
Успешно открыт файл.
Успешно прочитано mask = 153041
Успешно прочитано recmask = 0
Уровень громкости микрофона = 25700
Ошибок вроде не выдает.
В маске устройств микрофон устанавливается, а в маске записываемых устройств его нет.
Почему не работает?