// Copyright (c) 2012-2017 VideoStitch SAS // Copyright (c) 2018 stitchEm #include "mjpegcodec.hpp" #include "libvideostitch/parse.hpp" MjpegCodec::MjpegCodec(QWidget *const parent) : Codec(parent), mainLayout(new QGridLayout(this)), sliderScale(new QSlider(Qt::Horizontal, this)), labelQuality(new QLabel(tr("Quality / Compression"), this)), labelTitle(new QLabel(tr("Quality scale:"), this)) {} QString MjpegCodec::getKey() const { return QStringLiteral("mjpeg"); } void MjpegCodec::setup() { mainLayout->setContentsMargins(0, 0, 0, 0); mainLayout->setSpacing(CONTROLS_SPACING); sliderScale->setMinimum(LIBAV_WRITER_MIN_QSCALE); sliderScale->setMaximum(LIBAV_WRITER_MAX_QSCALE); sliderScale->setSingleStep(1); sliderScale->setFixedWidth(CONTROL_WIDTH); labelTitle->setFixedWidth(LABEL_WIDTH); mainLayout->addWidget(labelTitle, 0, 0); mainLayout->addWidget(sliderScale, 0, 1); mainLayout->addWidget(labelQuality, 0, 2); setLayout(mainLayout); connect(sliderScale, &QSlider::sliderReleased, this, [=]() { emit valueChanged(); }); } VideoStitch::Ptv::Value *MjpegCodec::getOutputConfig() const { VideoStitch::Ptv::Value *outputConfig = VideoStitch::Ptv::Value::emptyObject(); outputConfig->get("scale")->asInt() = sliderScale->value(); return outputConfig; } bool MjpegCodec::setFromOutputConfig(const VideoStitch::Ptv::Value *config) { int scale = LIBAV_WRITER_MIN_QSCALE; if (VideoStitch::Parse::populateInt("Ptv", *config, "scale", scale, false) != VideoStitch::Parse::PopulateResult_Ok) { return false; } sliderScale->setValue(scale); return true; }