179 lines
5.8 KiB
C++
179 lines
5.8 KiB
C++
/***************************************************************************************
|
|
*
|
|
* IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
|
|
*
|
|
* By downloading, copying, installing or using the software you agree to this license.
|
|
* If you do not agree to this license, do not download, install,
|
|
* copy or use the software.
|
|
*
|
|
* Copyright (C) 2014-2022, Happytimesoft Corporation, all rights reserved.
|
|
*
|
|
* Redistribution and use in binary forms, with or without modification, are permitted.
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software distributed
|
|
* under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
|
* CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
|
|
* language governing permissions and limitations under the License.
|
|
*
|
|
****************************************************************************************/
|
|
|
|
#include "MediaSetting.h"
|
|
#include "utils.h"
|
|
#include "media_format.h"
|
|
#include <QCameraInfo>
|
|
#include <QMessageBox>
|
|
|
|
/**************************************************************************************/
|
|
|
|
MediaSetting::MediaSetting(QWidget *parent) :
|
|
QDialog(parent),
|
|
ui(new Ui::MediaSetting)
|
|
{
|
|
ui->setupUi(this);
|
|
|
|
initDialog();
|
|
connSignalSlot();
|
|
|
|
showMaximized();
|
|
}
|
|
|
|
MediaSetting::~MediaSetting()
|
|
{
|
|
delete ui;
|
|
}
|
|
|
|
void MediaSetting::initDialog()
|
|
{
|
|
ui->cmbVideoCodec->addItem("H264", VIDEO_CODEC_H264);
|
|
ui->cmbVideoCodec->addItem("H265", VIDEO_CODEC_H265);
|
|
|
|
ui->cmbAudioCodec->addItem("G711A", AUDIO_CODEC_G711A);
|
|
ui->cmbAudioCodec->addItem("G711U", AUDIO_CODEC_G711U);
|
|
ui->cmbAudioCodec->addItem("AAC", AUDIO_CODEC_AAC);
|
|
|
|
ui->cmbVideoSize->addItem("default", QSize(0, 0));
|
|
ui->cmbVideoSize->addItem("1920*1080", QSize(1920, 1080));
|
|
ui->cmbVideoSize->addItem("1280*720", QSize(1280, 720));
|
|
ui->cmbVideoSize->addItem("640*480", QSize(640, 480));
|
|
|
|
ui->cmbVideoFps->addItem("30", 30);
|
|
ui->cmbVideoFps->addItem("25", 25);
|
|
ui->cmbVideoFps->addItem("20", 20);
|
|
ui->cmbVideoFps->addItem("15", 15);
|
|
ui->cmbVideoFps->addItem("10", 10);
|
|
|
|
ui->cmbVideoBps->addItem("default", 0);
|
|
ui->cmbVideoBps->addItem("4000", 4000);
|
|
ui->cmbVideoBps->addItem("3000", 3000);
|
|
ui->cmbVideoBps->addItem("2500", 2500);
|
|
ui->cmbVideoBps->addItem("2000", 2000);
|
|
ui->cmbVideoBps->addItem("1500", 1500);
|
|
ui->cmbVideoBps->addItem("1000", 1000);
|
|
ui->cmbVideoBps->addItem("800", 800);
|
|
ui->cmbVideoBps->addItem("500", 500);
|
|
ui->cmbVideoBps->addItem("300", 300);
|
|
ui->cmbVideoBps->addItem("100", 100);
|
|
|
|
ui->cmbSampleRate->addItem("8000", 8000);
|
|
ui->cmbSampleRate->addItem("11025", 11025);
|
|
ui->cmbSampleRate->addItem("12000", 12000);
|
|
ui->cmbSampleRate->addItem("16000", 16000);
|
|
ui->cmbSampleRate->addItem("22050", 22050);
|
|
ui->cmbSampleRate->addItem("24000", 24000);
|
|
ui->cmbSampleRate->addItem("32000", 32000);
|
|
ui->cmbSampleRate->addItem("44100", 44100);
|
|
ui->cmbSampleRate->addItem("48000", 48000);
|
|
|
|
ui->cmbChannel->addItem("Mono", 1);
|
|
ui->cmbChannel->addItem("Stereo", 2);
|
|
|
|
ui->cmbAudioBps->addItem("default", 0);
|
|
ui->cmbAudioBps->addItem("100", 100);
|
|
ui->cmbAudioBps->addItem("64", 64);
|
|
ui->cmbAudioBps->addItem("32", 32);
|
|
ui->cmbAudioBps->addItem("16", 16);
|
|
|
|
QList<QCameraInfo> cameras = QCameraInfo::availableCameras();
|
|
foreach (const QCameraInfo &cameraInfo, cameras)
|
|
{
|
|
ui->cmbCamera->addItem(cameraInfo.deviceName(), cameraInfo.position());
|
|
}
|
|
|
|
ui->grpVideo->setChecked(getVideoFlag());
|
|
ui->grpAudio->setChecked(getAudioFlag());
|
|
ui->cmbCamera->setCurrentIndex(getCameraIndex());
|
|
setComboItem(ui->cmbVideoCodec, getVideoCodec());
|
|
setComboItem(ui->cmbAudioCodec, getAudioCodec());
|
|
setComboItem(ui->cmbVideoSize, getResolution());
|
|
setComboItem(ui->cmbVideoFps, getFrameRate());
|
|
setComboItem(ui->cmbVideoBps, getVideoBitrate());
|
|
setComboItem(ui->cmbSampleRate, getSampleRate());
|
|
setComboItem(ui->cmbChannel, getChannel());
|
|
setComboItem(ui->cmbAudioBps, getAudioBitrate());
|
|
}
|
|
|
|
void MediaSetting::connSignalSlot()
|
|
{
|
|
connect(ui->btnCancel, SIGNAL(clicked()), this, SLOT(close()));
|
|
connect(ui->btnConfirm, SIGNAL(clicked()), this, SLOT(slotConfirm()));
|
|
}
|
|
|
|
void MediaSetting::setComboItem(QComboBox * item, QVariant data)
|
|
{
|
|
for (int i = 0; i < item->count(); i++)
|
|
{
|
|
if (item->itemData(i) == data)
|
|
{
|
|
item->setCurrentIndex(i);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
void MediaSetting::slotConfirm()
|
|
{
|
|
int video = ui->grpVideo->isChecked();
|
|
int audio = ui->grpAudio->isChecked();
|
|
|
|
if (!video && !audio)
|
|
{
|
|
QMessageBox::information(this, tr("Tips"), tr("Please check video or audio."));
|
|
return;
|
|
}
|
|
|
|
#ifdef DEMO
|
|
if (VIDEO_CODEC_H265 == ui->cmbVideoCodec->currentData().toInt())
|
|
{
|
|
ui->cmbVideoCodec->setFocus();
|
|
QMessageBox::information(this, tr("Tips"), tr("DEMO version does not support H265."));
|
|
return;
|
|
}
|
|
#endif
|
|
|
|
#ifdef DEMO
|
|
if (AUDIO_CODEC_AAC == ui->cmbAudioCodec->currentData().toInt())
|
|
{
|
|
ui->cmbAudioCodec->setFocus();
|
|
QMessageBox::information(this, tr("Tips"), tr("DEMO version does not support AAC."));
|
|
return;
|
|
}
|
|
#endif
|
|
|
|
saveVideoFlag(video);
|
|
saveVideoCodec(ui->cmbVideoCodec->currentData().toInt());
|
|
saveCameraIndex(ui->cmbCamera->currentIndex());
|
|
saveFrameRate(ui->cmbVideoFps->currentData().toInt());
|
|
saveVideoBitrate(ui->cmbVideoBps->currentData().toInt());
|
|
saveResolution(ui->cmbVideoSize->currentData().toSize());
|
|
saveAudioFlag(audio);
|
|
saveAudioCodec(ui->cmbAudioCodec->currentData().toInt());
|
|
saveSampleRate(ui->cmbSampleRate->currentData().toInt());
|
|
saveChannel(ui->cmbChannel->currentData().toInt());
|
|
saveAudioBitrate(ui->cmbAudioBps->currentData().toInt());
|
|
|
|
accept();
|
|
}
|
|
|
|
|
|
|