Go to the documentation of this file.
13 QString idTag(
":WHEREID");
14 QString query(
"id = " + idTag);
26 const QString& name) :
42 QString profileTag(
":SETPROFILE");
43 QString nameTag(
":SETNAME");
44 QString valueTag(
":SETVALUE");
46 QString query(
"profile = " + profileTag +
", name = " + nameTag
47 +
", value = " + valueTag);
58 QString profileTag(
":WHEREPROFILE");
59 QString nameTag(
":WHERENAME");
61 QString query(
"profile = " + profileTag +
" AND name = " + nameTag);
88 setLabel(QObject::tr(
"MP3 quality"));
90 setHelpText(QObject::tr(
"The higher the slider number, the lower the "
91 "quality of the audio. Better quality audio (lower "
92 "numbers) requires more CPU."));
103 setLabel(QObject::tr(
"Volume (%)"));
105 setHelpText(QObject::tr(
"Recording volume of the capture card."));
115 setLabel(QObject::tr(
"Sampling rate"));
116 setHelpText(QObject::tr(
"Sets the audio sampling rate for your DSP. "
117 "Ensure that you choose a sampling rate appropriate "
118 "for your device. btaudio may only allow 32000."));
125 for (
uint i = 0; analog && (i <
m_rates.size()); i++)
150 const QString& value = QString(),
153 QString val = value.isEmpty() ? label : value;
154 uint rate = val.toUInt();
161 LOG(VB_GENERAL, LOG_ERR, QString(
"SampleRate: ") +
162 QString(
"Attempted to add a rate %1 Hz, which is "
163 "not in the list of allowed rates.").arg(rate));
175 bool layer1,
bool layer2,
bool layer3) :
188 uint allowed_cnt = 0;
193 if (1 == allowed_cnt)
260 setHelpText(QObject::tr(
"Sets the audio bitrate"));
288 setHelpText(QObject::tr(
"Sets the audio bitrate"));
316 setHelpText(QObject::tr(
"Sets the audio bitrate"));
328 setLabel(QObject::tr(
"Volume (%)"));
330 setHelpText(QObject::tr(
"Volume of the recording "));
338 bool layer1,
bool layer2,
bool layer3,
341 const std::array<const QString,3> layers {
"Layer I",
"Layer II",
"Layer III", };
343 setLabel(QObject::tr(
"Bitrate Settings"));
345 auto *audType =
new MPEG2audType(parent, layer1, layer2, layer3);
353 uint desired_layer = std::max(std::min(3U, default_layer), 1U) - 1;
354 int which = audType->getValueIndex(layers[desired_layer]);
356 audType->setValue(which);
366 setLabel(QObject::tr(
"SAP/Bilingual"));
374 "Chooses the language(s) to record when "
375 "two languages are broadcast. Only Layer II "
376 "supports the recording of two languages (Dual)."
377 "Requires ivtv 0.4.0 or later."));
385 const QString& setting =
"mpeg2bitratemode") :
389 setLabel(QObject::tr(
"Bitrate Mode"));
405 setName(QObject::tr(
"Audio Quality"));
410 QString label(
"MP3");
415 label =
"MPEG-2 Hardware Encoder";
423 label =
"Uncompressed";
447 for (
const auto & option : qAsConst(
options))
451 for (
const auto & Imenu : qAsConst(option.m_menu))
453 if (!Imenu.isEmpty())
461 for (
const auto & option : qAsConst(
options))
468 else if (option.m_category ==
474 else if (option.m_category ==
486 for (
const auto & Imenu : qAsConst(option.m_menu))
488 if (Imenu.indexOf(
"Layer III") >= 0)
490 else if (Imenu.indexOf(
"Layer II") >= 0)
492 else if (Imenu.indexOf(
"Layer I") >= 0)
496 if (layer1 || layer2 || layer3)
521 if (!groupType.isNull())
523 if (groupType ==
"MPEG")
525 else if (groupType ==
"HDPVR")
530 else if (groupType.startsWith(
"V4L2:"))
574 setLabel(QObject::tr(
"RTjpeg Quality"));
576 setHelpText(QObject::tr(
"Higher is better quality."));
587 setLabel(QObject::tr(
"Luma filter"));
600 setLabel(QObject::tr(
"Chroma filter"));
613 setLabel(QObject::tr(
"Bitrate (kb/s)"));
615 setHelpText(QObject::tr(
"Bitrate in kilobits/second. As a guide, "
616 "2200 kb/s is approximately 1 GB/hr."));
627 setLabel(QObject::tr(
"Scale bitrate for frame size"));
629 setHelpText(QObject::tr(
"If set, the bitrate specified will be used "
630 "for 640x480. If other resolutions are used, the "
631 "bitrate will be scaled appropriately."));
642 setLabel(QObject::tr(
"Minimum quality"));
644 setHelpText(QObject::tr(
"Modifying the default may have severe "
656 setLabel(QObject::tr(
"Maximum quality"));
658 setHelpText(QObject::tr(
"Modifying the default may have severe "
671 setLabel(QObject::tr(
"Max quality difference between frames"));
673 setHelpText(QObject::tr(
"Modifying the default may have severe "
685 setLabel(QObject::tr(
"Enable interlaced DCT encoding"));
687 setHelpText(QObject::tr(
"If set, the MPEG4 encoder will use "
688 "interlaced DCT encoding. You may want this when encoding "
689 "interlaced video; however, this is experimental and may "
690 "cause damaged video."));
701 setLabel(QObject::tr(
"Enable interlaced motion estimation"));
703 setHelpText(QObject::tr(
"If set, the MPEG4 encoder will use "
704 "interlaced motion estimation. You may want this when "
705 "encoding interlaced video; however, this is experimental "
706 "and may cause damaged video."));
717 setLabel(QObject::tr(
"Enable high-quality encoding"));
719 setHelpText(QObject::tr(
"If set, the MPEG4 encoder will use "
720 "'high-quality' encoding options. This requires much "
721 "more processing, but can result in better video."));
732 setLabel(QObject::tr(
"Enable 4MV encoding"));
734 setHelpText(QObject::tr(
"If set, the MPEG4 encoder will use '4MV' "
735 "motion-vector encoding. This requires "
736 "much more processing, but can result in better "
737 "video. It is highly recommended that the HQ option is "
738 "enabled if 4MV is enabled."));
750 setLabel(QObject::tr(
"Number of threads"));
753 QObject::tr(
"Threads to use for software encoding.") +
" " +
754 QObject::tr(
"Set to a value less than or equal to the "
755 "number of processors on the backend that "
756 "will be doing the encoding."));
764 const QString& setting =
"mpeg2bitrate",
765 uint min_br = 1000,
uint max_br = 16000,
766 uint default_br = 4500,
uint increment = 100,
767 QString label = QString()) :
772 label = QObject::tr(
"Avg. Bitrate (kb/s)");
776 "Average bitrate in kilobits/second. As a guide, "
777 "2200 kb/s is approximately 1 GB/hour."));
785 const QString& setting =
"mpeg2maxbitrate",
786 uint min_br = 1000,
uint max_br = 16000,
787 uint default_br = 6000,
uint increment = 100,
788 QString label = QString()) :
793 label = QObject::tr(
"Max. Bitrate (kb/s)");
796 setHelpText(QObject::tr(
"Maximum bitrate in kilobits/second. "
797 "As a guide, 2200 kb/s is approximately 1 GB/hour."));
809 if (maxopt > 8) maxopt = 8;
811 setLabel(QObject::tr(
"Stream Type"));
813 const std::array<const QString,9>
options {
"MPEG-2 PS",
"MPEG-2 TS",
814 "MPEG-1 VCD",
"PES AV",
816 "DVD",
"DVD-Special 1",
"DVD-Special 2" };
818 for (
uint idx = minopt; idx <= maxopt; ++idx)
822 setHelpText(QObject::tr(
"Sets the type of stream generated by "
835 if (maxopt > 3) maxopt = 3;
837 setLabel(QObject::tr(
"Aspect Ratio"));
839 const std::array<const QString,4>
options { QObject::tr(
"Square"),
"4:3",
842 for (
uint idx = minopt; idx <= maxopt; ++idx)
846 setHelpText(QObject::tr(
"Sets the aspect ratio of stream generated "
871 setLabel(QObject::tr(
"Horizontal Decimation"));
886 setLabel(QObject::tr(
"Vertical Decimation"));
901 setName(QObject::tr(
"Video Compression"));
906 QString label(
"RTjpeg");
923 #ifdef USING_FFMPEG_THREADS
935 #ifdef USING_FFMPEG_THREADS
939 label =
"Hardware MJPEG";
944 label =
"MPEG-2 Hardware Encoder";
950 label =
"MPEG-4 AVC Hardware Encoder";
952 h0->setLabel(QObject::tr(
"Low Resolution"));
954 1000, 13500, 4500, 500));
956 1100, 20200, 6000, 500));
960 h1->setLabel(QObject::tr(
"Medium Resolution"));
962 1000, 13500, 9000, 500));
964 1100, 20200, 11000, 500));
968 h2->setLabel(QObject::tr(
"High Resolution"));
970 1000, 13500, 13500, 500));
972 1100, 20200, 20200, 500));
986 for (
const auto & option : qAsConst(
options))
990 for (
const auto & Imenu : qAsConst(option.m_menu))
992 if (!Imenu.isEmpty())
1013 option.m_defaultValue));
1021 option.m_defaultValue));
1023 else if (option.m_category ==
1029 "low_mpegbitratemode"));
1031 "medium_mpegbitratemode"));
1033 "medium_mpegbitratemode"));
1042 bit_low->setLabel(QObject::tr(
"Low Resolution"));
1044 "low_mpegavgbitrate",
1045 option.m_minimum / 1000,
1046 option.m_maximum / 1000,
1047 option.m_defaultValue / 1000,
1048 option.m_step / 1000));
1050 bit_medium->setLabel(QObject::
1051 tr(
"Medium Resolution"));
1053 "medium_mpegavgbitrate",
1054 option.m_minimum / 1000,
1055 option.m_maximum / 1000,
1056 option.m_defaultValue / 1000,
1057 option.m_step / 1000));
1059 bit_high->setLabel(QObject::
1060 tr(
"High Resolution"));
1062 "high_mpegavgbitrate",
1063 option.m_minimum / 1000,
1064 option.m_maximum / 1000,
1065 option.m_defaultValue / 1000,
1066 option.m_step / 1000));
1070 bit_low->setLabel(QObject::tr(
"Bitrate"));
1073 option.m_minimum / 1000,
1074 option.m_maximum / 1000,
1075 option.m_defaultValue / 1000,
1076 option.m_step / 1000));
1079 else if (option.m_category ==
1085 "low_mpegpeakbitrate",
1086 option.m_minimum / 1000,
1087 option.m_maximum / 1000,
1088 option.m_defaultValue / 1000,
1089 option.m_step / 1000));
1091 "medium_mpegpeakbitrate",
1092 option.m_minimum / 1000,
1093 option.m_maximum / 1000,
1094 option.m_defaultValue / 1000,
1095 option.m_step / 1000));
1097 "high_mpegpeakbitrate",
1098 option.m_minimum / 1000,
1099 option.m_maximum / 1000,
1100 option.m_defaultValue / 1000,
1101 option.m_step / 1000));
1107 option.m_minimum / 1000,
1108 option.m_maximum / 1000,
1109 option.m_defaultValue / 1000,
1110 option.m_step / 1000));
1132 #endif // USING_V4L2
1137 if (!groupType.isNull())
1139 if (groupType ==
"HDPVR")
1141 else if (groupType.startsWith(
"V4L2:"))
1146 else if (groupType ==
"MPEG")
1148 else if (groupType ==
"MJPEG")
1150 else if (groupType ==
"GO7007")
1184 setLabel(QObject::tr(
"Enable auto-transcode after recording"));
1186 setHelpText(QObject::tr(
"Automatically transcode when a recording is "
1187 "made using this profile and the recording's "
1188 "schedule is configured to allow transcoding."));
1199 setLabel(QObject::tr(
"Resize video while transcoding"));
1201 setHelpText(QObject::tr(
"Allows the transcoder to "
1202 "resize the video during transcoding."));
1213 setLabel(QObject::tr(
"Lossless transcoding"));
1215 setHelpText(QObject::tr(
"Only reencode where absolutely needed "
1216 "(normally only around cutpoints). Otherwise "
1217 "keep audio and video formats identical to "
1218 "the source. This should result in the "
1219 "highest quality, but won't save as much "
1230 setLabel(QObject::tr(
"Recording Type"));
1232 QString msg = QObject::tr(
1233 "This option allows you to filter out unwanted streams. "
1234 "'Normal' will record all relevant streams including "
1235 "interactive television data. 'TV Only' will record only "
1236 "audio, video and subtitle streams. ");
1252 setLabel(QObject::tr(
"Record Full TS?"));
1254 QString msg = QObject::tr(
1255 "If set, extra files will be created for each recording with "
1256 "the name of the recording followed by '.ts.raw'. "
1257 "These extra files represent the full contents of the transport "
1258 "stream used to generate the recording. (For debugging purposes)");
1274 setLabel(QObject::tr(
"Custom filters"));
1275 setHelpText(QObject::tr(
"Filters used when transcoding with this "
1276 "profile. This value must be blank to perform "
1277 "lossless transcoding. Format: "
1278 "[[<filter>=<options>,]...]"
1291 bool transcoding =
false) :
1294 transcoding ? QObject::tr(
"Auto") : QString()),
1300 QString
help = (transcoding) ?
1301 QObject::tr(
"If the width is set to 'Auto', the width "
1302 "will be calculated based on the height and "
1303 "the recording's physical aspect ratio.") :
1304 QObject::tr(
"Width to use for encoding. "
1305 "Note: PVR-x50 cards may produce ghosting if "
1306 "this is not set to 720 or 768 for NTSC and "
1307 "PAL, respectively.");
1317 uint defaultheight,
uint maxheight,
1318 bool transcoding =
false):
1321 transcoding ? QObject::tr(
"Auto") : QString()),
1327 QString
help = (transcoding) ?
1328 QObject::tr(
"If the height is set to 'Auto', the height "
1329 "will be calculated based on the width and "
1330 "the recording's physical aspect ratio.") :
1331 QObject::tr(
"Height to use for encoding. "
1332 "Note: PVR-x50 cards may produce ghosting if "
1333 "this is not set to 480 or 576 for NTSC and "
1334 "PAL, respectively.");
1341 const QString& tvFormat,
const QString& profName)
1343 setLabel(QObject::tr(
"Image size"));
1345 QSize defaultsize(768, 576);
1346 QSize maxsize(768, 576);
1347 bool transcoding = profName.startsWith(
"Transcoders");
1348 bool ivtv = profName.startsWith(
"IVTV MPEG-2 Encoders");
1352 maxsize = QSize(1920, 1088);
1353 if (tvFormat.toLower() ==
"ntsc" || tvFormat.toLower() ==
"atsc")
1354 defaultsize = QSize(480, 480);
1356 defaultsize = QSize(480, 576);
1358 else if (tvFormat.startsWith(
"ntsc", Qt::CaseInsensitive))
1360 maxsize = QSize(720, 480);
1361 defaultsize = (ivtv) ? QSize(720, 480) : QSize(480, 480);
1363 else if (tvFormat.toLower() ==
"atsc")
1365 maxsize = QSize(1920, 1088);
1366 defaultsize = QSize(1920, 1088);
1370 maxsize = QSize(768, 576);
1371 defaultsize = (ivtv) ? QSize(720, 576) : QSize(480, 576);
1375 maxsize.width(), transcoding));
1377 maxsize.height(), transcoding));
1384 m_name(new
Name(*this)),
1385 m_profileName(profName)
1397 if (!profName.isEmpty())
1399 if (profName.startsWith(
"Transcoders"))
1453 "SELECT cardtype, profilegroups.name "
1454 "FROM profilegroups, recordingprofiles "
1455 "WHERE profilegroups.id = recordingprofiles.profilegroup AND "
1456 " recordingprofiles.id = :PROFILEID");
1457 result.
bindValue(
":PROFILEID", profileId);
1465 else if (result.
next())
1468 name = result.
value(1).toString();
1477 if (!val.trimmed().isEmpty())
1489 const QString &videodev)
1492 QString cardtype = card;
1496 if (cardtype ==
"V4L2ENC")
1508 "SELECT recordingprofiles.id, profilegroups.hostname, "
1509 " profilegroups.is_default "
1510 "FROM recordingprofiles, profilegroups "
1511 "WHERE profilegroups.id = recordingprofiles.profilegroup AND "
1512 " profilegroups.cardtype = :CARDTYPE AND "
1513 " recordingprofiles.name = :NAME");
1514 result.
bindValue(
":CARDTYPE", cardtype);
1523 while (result.
next())
1527 profileId = result.
value(0).toUInt();
1529 else if (result.
value(2).toInt() == 1)
1531 profileId = result.
value(0).toUInt();
1549 "SELECT recordingprofiles.id, cardtype "
1550 "FROM recordingprofiles, profilegroups "
1551 "WHERE recordingprofiles.profilegroup = profilegroups.id AND "
1552 " profilegroups.name = :GROUPNAME AND "
1553 " recordingprofiles.name = :NAME");
1565 uint profileId = result.
value(0).toUInt();
1566 QString
type = result.
value(1).toString();
1576 const QString &name)
1586 if (
type.startsWith(
"V4L2:"))
1589 if (!devices.isEmpty())
1591 for (
const auto & device : qAsConst(devices))
1607 if (
type !=
"HDPVR" &&
1659 m_group(id), m_labelName(
std::move(profName))
1679 tr(
"Enter the name of the new profile"));
1681 if (settingdialog->Create())
1689 delete settingdialog;
1697 "INSERT INTO recordingprofiles "
1698 "(name, videocodec, audiocodec, profilegroup) "
1700 "(:NAME, :VIDEOCODEC, :AUDIOCODEC, :PROFILEGROUP);");
1702 query.
bindValue(
":VIDEOCODEC",
"MPEG-4");
1713 "FROM recordingprofiles "
1714 "WHERE name = :NAME AND profilegroup = :PROFILEGROUP;");
1737 bool foldautodetect)
1753 "FROM recordingprofiles "
1754 "WHERE profilegroup = :GROUP "
1771 profile->setLabel(QObject::tr(
"Autodetect"));
1777 QString name = result.
value(0).toString();
1778 QString
id = result.
value(1).toString();
1782 if (name ==
"RTjpeg/MPEG4" || name ==
"MPEG2")
1784 if (!foldautodetect)
1789 profile->loadByID(
id.toInt());
1797 profile->loadByID(
id.toInt());
1805 profile->loadByID(
id.toInt());
1809 while (result.
next());
1814 QMap<int, QString> profiles;
1826 "FROM recordingprofiles "
1827 "WHERE profilegroup = :GROUPID "
1838 LOG(VB_GENERAL, LOG_WARNING,
1839 "RecordingProfile::fillselections, Warning: "
1840 "Failed to locate recording id for recording group.");
1847 profiles[id] = QObject::tr(
"Transcode using Autodetect");
1852 QString name = query.
value(0).toString();
1853 int id = query.
value(1).toInt();
1858 if (name !=
"RTjpeg/MPEG4" && name !=
"MPEG2")
1860 QString lbl = QObject::tr(
"Transcode using \"%1\"").arg(name);
1866 QString lbl = QObject::tr(
"Record using the \"%1\" profile").arg(name);
1868 }
while (query.
next());
1882 "SELECT profilegroups.cardtype "
1883 "FROM profilegroups, recordingprofiles "
1884 "WHERE profilegroups.id = recordingprofiles.profilegroup AND "
1885 " recordingprofiles.id = :ID");
1890 else if (result.
next())
1891 return result.
value(0).toString();
1901 "FROM recordingprofiles "
1908 else if (result.
next())
1909 return result.
value(0).toString();
1924 "FROM recordingprofiles "
QMap< QString, QVariant > MSqlBindings
typedef for a map of string -> string bindings for generic queries.
TranscodeLossless(const RecordingProfile &parent)
MPEG2AudioBitrateSettings(const RecordingProfile &parent, bool layer1, bool layer2, bool layer3, uint default_layer)
QMap< uint, bool > m_allowedRate
bool next(void)
Wrap QSqlQuery::next() so we can display the query results.
QSqlQuery wrapper that fetches a DB connection from the connection pool.
HardwareMJPEGVDecimation(const RecordingProfile &parent)
virtual void setName(const QString &name)
const std::array< QString, 4 > kAvailProfiles
MPEG2audBitrateL2(const RecordingProfile &parent)
RecordFullTSStream(const RecordingProfile &parent)
virtual void setValue(const QString &newValue)
AudioCompressionSettings * m_audioSettings
MPEG2audBitrateL3(const RecordingProfile &parent)
QMap< category_t, DriverOption > Options
MPEG4MinQuality(const RecordingProfile &parent)
static QStringList GetVideoDevices(const QString &rawtype, QString hostname=QString())
Returns the videodevices of the matching inputs, duplicates removed.
QString DriverName(void) const
const RecordingProfile & m_parent
AudioCodecName(const RecordingProfile &parent)
MPEG2Language(const RecordingProfile &parent)
TranscodeFilters * m_trFilters
void ShowNewProfileDialog() const
virtual bool loadByGroup(const QString &name, const QString &group)
void addSelection(const QString &label, const QString &value=QString(), bool select=false)
TranscodeResize(const RecordingProfile &parent)
QVariant value(int i) const
static QMap< int, QString > GetTranscodingProfiles()
QString GetWhereClause(MSqlBindings &bindings) const override
bool exec(void)
Wrap QSqlQuery::exec() so we can display SQL.
const RecordingProfile & m_parent
AverageBitrate(const RecordingProfile &parent, const QString &setting="mpeg2bitrate", uint min_br=1000, uint max_br=16000, uint default_br=4500, uint increment=100, QString label=QString())
MPEG4bitrate(const RecordingProfile &parent)
virtual void clearSettings()
virtual void loadByID(int id)
virtual QString GetDBValue(void) const =0
#define LOG(_MASK_, _LEVEL_, _QSTRING_)
~RecordingProfile(void) override
QString GetWhereClause(MSqlBindings &bindings) const override
HardwareMJPEGQuality(const RecordingProfile &parent)
void addTargetedChild(const QString &value, StandardSetting *setting)
QString getName(void) const
void deleteEntry(void) override
SampleRate(const RecordingProfile &parent, bool analog=true)
AudioCodecName * m_codecName
VideoCompressionSettings * m_videoSettings
ScaleBitrate(const RecordingProfile &parent)
void settingsChanged(StandardSetting *selectedSetting=nullptr)
virtual void addChild(StandardSetting *child)
MPEG2streamType(const RecordingProfile &parent, uint minopt=0, uint maxopt=8, uint defopt=0)
BTTVVolume(const RecordingProfile &parent)
RecordingProfile(const QString &profName=QString())
static bool IsEncoder(const QString &rawtype)
bool UserAdjustableResolution(void) const
std::vector< uint > m_rates
QString groupType(void) const
MPEG2audType(const RecordingProfile &parent, bool layer1, bool layer2, bool layer3)
static MSqlQueryInfo InitCon(ConnectionReuse _reuse=kNormalConnection)
Only use this in combination with MSqlQuery constructor.
TranscodeLossless * m_trLossless
static void DBError(const QString &where, const MSqlQuery &query)
TranscodeResize * m_trResize
CodecParamStorage(StandardSetting *_setting, const RecordingProfile &parentProfile, const QString &name)
AudioCompressionSettings(const RecordingProfile &parentProfile, V4L2util *v4l2)
virtual void setHelpText(const QString &str)
MPEG4OptionIDCT(const RecordingProfile &parent)
int getValueIndex(const QString &value) const
static const uint kTranscoderAutodetect
sentinel value
MPEG4OptionIME(const RecordingProfile &parent)
virtual QString getValue(void) const
MPEG4OptionVHQ(const RecordingProfile &parent)
void CreateNewProfile(const QString &profName)
TranscodeFilters(const RecordingProfile &parent)
QString GetSetClause(MSqlBindings &bindings) const override
MPEG4MaxQuality(const RecordingProfile &parent)
MythCoreContext * gCoreContext
This global variable contains the MythCoreContext instance for the app.
MPEG2audBitrateL1(const RecordingProfile &parent)
void ResizeTranscode(const QString &val)
AutoTranscode(const RecordingProfile &parent)
RTjpegLumaFilter(const RecordingProfile &parent)
virtual void setLabel(QString str)
void valueChanged(const QString &newValue)
int getProfileNum(void) const
MPEG4Option4MV(const RecordingProfile &parent)
virtual void setEnabled(bool enabled)
void selectCodecs(const QString &groupType)
void addSelection(const QString &label, QString value=QString(), bool select=false)
virtual void CompleteLoad(int profileId, const QString &type, const QString &name)
Width(const RecordingProfile &parent, uint defaultwidth, uint maxwidth, bool transcoding=false)
MPEG2audVolume(const RecordingProfile &parent)
void bindValue(const QString &placeholder, const QVariant &val)
Add a single binding.
VideoCodecName(const RecordingProfile &parent)
MPEG2aspectRatio(const RecordingProfile &parent, uint minopt=0, uint maxopt=8, uint defopt=0)
virtual bool loadByType(const QString &name, const QString &cardtype, const QString &videodev)
bool GetOptions(DriverOption::Options &options)
EncodingThreadCount(const RecordingProfile &parent)
HardwareMJPEGHDecimation(const RecordingProfile &parent)
VideoCodecName * m_codecName
void selectCodecs(const QString &groupType)
MythMainWindow * GetMythMainWindow(void)
static bool IsTunerSharingCapable(const QString &rawtype)
MPEG4QualDiff(const RecordingProfile &parent)
VideoCompressionSettings(const RecordingProfile &parentProfile, V4L2util *v4l2)
MythScreenStack * GetStack(const QString &Stackname)
QString ProfileName(void) const
RTjpegQuality(const RecordingProfile &parent)
void FiltersChanged(const QString &val)
QString GetHostName(void)
static bool IsEITCapable(const QString &rawtype)
RecordingTypeStream(const RecordingProfile &parent)
static QMap< int, QString > GetProfiles(RecProfileGroup group=AllGroups)
const RecordingProfile & m_parent
BitrateMode(const RecordingProfile &parent, const QString &setting="mpeg2bitratemode")
Dialog prompting the user to enter a text string.
const RecordingProfile & m_parent
RTjpegChromaFilter(const RecordingProfile &parent)
PeakBitrate(const RecordingProfile &parent, const QString &setting="mpeg2maxbitrate", uint min_br=1000, uint max_br=16000, uint default_br=6000, uint increment=100, QString label=QString())
void setValue(const QString &newValue) override
RecordingProfileEditor(int id, QString profName)
virtual void AddScreen(MythScreenType *screen, bool allowFade=true)
static void fillSelections(GroupSetting *setting, int group, bool foldautodetect=false)
MP3Quality(const RecordingProfile &parent)
void setValue(int value) override
Height(const RecordingProfile &parent, uint defaultheight, uint maxheight, bool transcoding=false)
bool canDelete(void) override
void SetLosslessTranscode(const QString &val)
ImageSize(const RecordingProfile &parent, const QString &tvFormat, const QString &profName)
QString GetSetting(const QString &key, const QString &defaultval="")
bool prepare(const QString &query)
QSqlQuery::prepare() is not thread safe in Qt <= 3.3.2.