first commit

This commit is contained in:
wdp
2024-12-15 20:42:32 +08:00
commit 986b2fca12
586 changed files with 154149 additions and 0 deletions

View File

@@ -0,0 +1,178 @@
/***************************************************************************************
*
* 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();
}