kopia lustrzana https://github.com/xdsopl/qsstv
160 wiersze
6.2 KiB
C++
160 wiersze
6.2 KiB
C++
/**************************************************************************
|
|
* Copyright (C) 2000-2019 by Johan Maes *
|
|
* on4qz@telenet.be *
|
|
* http://users.telenet.be/on4qz *
|
|
* *
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
* This program is distributed in the hope that it will be useful, *
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
* GNU General Public License for more details. *
|
|
* *
|
|
* You should have received a copy of the GNU General Public License *
|
|
* along with this program; if not, write to the *
|
|
* Free Software Foundation, Inc., *
|
|
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
|
***************************************************************************/
|
|
|
|
#include "soundconfig.h"
|
|
#include "ui_soundconfig.h"
|
|
#include "configparams.h"
|
|
#include "supportfunctions.h"
|
|
#include "soundalsa.h"
|
|
|
|
#include <QSettings>
|
|
|
|
#include <math.h>
|
|
|
|
int samplingrate;
|
|
double rxClock;
|
|
double txClock;
|
|
bool pulseSelected;
|
|
bool alsaSelected;
|
|
bool swapChannel;
|
|
bool pttToneOtherChannel;
|
|
QString inputAudioDevice;
|
|
QString outputAudioDevice;
|
|
soundBase::edataSrc soundRoutingInput;
|
|
soundBase::edataDst soundRoutingOutput;
|
|
|
|
quint32 recordingSize;
|
|
|
|
|
|
|
|
soundConfig::soundConfig(QWidget *parent) : baseConfig(parent), ui(new Ui::soundConfig)
|
|
{
|
|
QStringList inputPCMList, outputPCMList;
|
|
ui->setupUi(this);
|
|
getCardList(inputPCMList, outputPCMList);
|
|
ui->inputPCMNameComboBox->addItems(inputPCMList);
|
|
ui->outputPCMNameComboBox->addItems(outputPCMList);
|
|
}
|
|
|
|
|
|
soundConfig::~soundConfig()
|
|
{
|
|
delete ui;
|
|
}
|
|
|
|
void soundConfig::readSettings()
|
|
{
|
|
QSettings qSettings;
|
|
qSettings.beginGroup("SOUND");
|
|
rxClock=qSettings.value("rxclock",BASESAMPLERATE).toDouble();
|
|
txClock=qSettings.value("txclock",BASESAMPLERATE).toDouble();
|
|
if(fabs(1-rxClock/BASESAMPLERATE)>0.002) rxClock=BASESAMPLERATE;
|
|
if(fabs(1-txClock/BASESAMPLERATE)>0.002) txClock=BASESAMPLERATE;
|
|
samplingrate=BASESAMPLERATE;
|
|
inputAudioDevice=qSettings.value("inputAudioDevice","default").toString();
|
|
outputAudioDevice=qSettings.value("outputAudioDevice","default").toString();
|
|
alsaSelected=qSettings.value("alsaSelected",false).toBool();
|
|
pulseSelected=qSettings.value("pulseSelected",false).toBool();
|
|
swapChannel=qSettings.value("swapChannel",false).toBool();
|
|
pttToneOtherChannel=qSettings.value("pttToneOtherChannel",false).toBool();
|
|
soundRoutingInput= (soundBase::edataSrc)qSettings.value("soundRoutingInput", 0 ).toInt();
|
|
soundRoutingOutput= (soundBase::edataDst)qSettings.value("soundRoutingOutput", 0 ).toInt();
|
|
recordingSize= qSettings.value("recordingSize", 100 ).toInt();
|
|
qSettings.endGroup();
|
|
setParams();
|
|
}
|
|
|
|
void soundConfig::writeSettings()
|
|
{
|
|
QSettings qSettings;
|
|
getParams();
|
|
qSettings.beginGroup("SOUND");
|
|
qSettings.setValue("rxclock",rxClock);
|
|
qSettings.setValue("txclock",txClock);
|
|
qSettings.setValue("inputAudioDevice",inputAudioDevice);
|
|
qSettings.setValue("outputAudioDevice",outputAudioDevice);
|
|
qSettings.setValue("alsaSelected",alsaSelected);
|
|
qSettings.setValue("pulseSelected",pulseSelected);
|
|
qSettings.setValue("swapChannel",swapChannel);
|
|
qSettings.setValue("pttToneOtherChannel",pttToneOtherChannel);
|
|
qSettings.setValue ("soundRoutingInput", soundRoutingInput );
|
|
qSettings.setValue ("soundRoutingOutput",soundRoutingOutput );
|
|
qSettings.setValue ("recordingSize",recordingSize );
|
|
qSettings.endGroup();
|
|
}
|
|
|
|
|
|
void soundConfig::setParams()
|
|
{
|
|
setValue(rxClock,ui->inputClockLineEdit,9);
|
|
setValue(txClock,ui->outputClockLineEdit,9);
|
|
setValue(inputAudioDevice,ui->inputPCMNameComboBox);
|
|
setValue(outputAudioDevice,ui->outputPCMNameComboBox);
|
|
setValue(alsaSelected,ui->alsaRadioButton);
|
|
setValue(pulseSelected,ui->pulseRadioButton);
|
|
setValue(swapChannel,ui->swapChannelCheckBox);
|
|
setValue(pttToneOtherChannel,ui->pttToneCheckBox);
|
|
if(soundRoutingInput==soundBase::SNDINCARD) ui->inFromCard->setChecked(true);
|
|
else if (soundRoutingInput==soundBase::SNDINFROMFILE) ui->inFromFile->setChecked(true);
|
|
else ui->inRecordFromCard->setChecked(true);
|
|
|
|
if(soundRoutingOutput==soundBase::SNDOUTCARD) ui->outToCard->setChecked(true);
|
|
else ui->outRecord->setChecked(true);
|
|
setValue(recordingSize,ui->mbSpinBox);
|
|
}
|
|
|
|
void soundConfig::getParams()
|
|
{
|
|
QString inputAudioDeviceCopy=inputAudioDevice;
|
|
QString outputAudioDeviceCopy=outputAudioDevice;
|
|
bool alsaSelectedCopy=alsaSelected;
|
|
|
|
|
|
soundBase::edataSrc soundRoutingInputCopy=soundRoutingInput;
|
|
soundBase::edataDst soundRoutingOutputCopy=soundRoutingOutput;
|
|
|
|
getValue(rxClock,ui->inputClockLineEdit);
|
|
getValue(txClock,ui->inputClockLineEdit);
|
|
getValue(inputAudioDevice,ui->inputPCMNameComboBox);
|
|
getValue(outputAudioDevice,ui->outputPCMNameComboBox);
|
|
getValue(alsaSelected,ui->alsaRadioButton);
|
|
getValue(pulseSelected,ui->pulseRadioButton);
|
|
getValue(swapChannel,ui->swapChannelCheckBox);
|
|
getValue(pttToneOtherChannel,ui->pttToneCheckBox);
|
|
|
|
if (ui->inFromCard->isChecked()) soundRoutingInput=soundBase::SNDINCARD;
|
|
else if(ui->inFromFile->isChecked()) soundRoutingInput=soundBase::SNDINFROMFILE;
|
|
else soundRoutingInput=soundBase::SNDINCARDTOFILE;
|
|
|
|
if (ui->outToCard->isChecked()) soundRoutingOutput=soundBase::SNDOUTCARD;
|
|
else soundRoutingOutput=soundBase::SNDOUTTOFILE;
|
|
getValue(recordingSize,ui->mbSpinBox);
|
|
changed=false;
|
|
if(inputAudioDeviceCopy!=inputAudioDevice
|
|
|| outputAudioDeviceCopy!=outputAudioDevice
|
|
|| soundRoutingInputCopy!=soundRoutingInput
|
|
|| soundRoutingOutputCopy!=soundRoutingOutput
|
|
|| alsaSelectedCopy!=alsaSelected)
|
|
{
|
|
changed=true;
|
|
}
|
|
}
|