/*************************************************************************************** * * 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 #include /**************************************************************************************/ 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 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(); }