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)
519 if (!groupType.isNull())
521 if (groupType ==
"MPEG")
523 else if (groupType ==
"HDPVR")
528 else if (groupType.startsWith(
"V4L2:"))
572 setLabel(QObject::tr(
"RTjpeg Quality"));
574 setHelpText(QObject::tr(
"Higher is better quality."));
585 setLabel(QObject::tr(
"Luma filter"));
598 setLabel(QObject::tr(
"Chroma filter"));
611 setLabel(QObject::tr(
"Bitrate (kb/s)"));
613 setHelpText(QObject::tr(
"Bitrate in kilobits/second. As a guide, "
614 "2200 kb/s is approximately 1 GB/hr."));
625 setLabel(QObject::tr(
"Scale bitrate for frame size"));
627 setHelpText(QObject::tr(
"If set, the bitrate specified will be used "
628 "for 640x480. If other resolutions are used, the "
629 "bitrate will be scaled appropriately."));
640 setLabel(QObject::tr(
"Minimum quality"));
642 setHelpText(QObject::tr(
"Modifying the default may have severe "
654 setLabel(QObject::tr(
"Maximum quality"));
656 setHelpText(QObject::tr(
"Modifying the default may have severe "
669 setLabel(QObject::tr(
"Max quality difference between frames"));
671 setHelpText(QObject::tr(
"Modifying the default may have severe "
683 setLabel(QObject::tr(
"Enable interlaced DCT encoding"));
685 setHelpText(QObject::tr(
"If set, the MPEG4 encoder will use "
686 "interlaced DCT encoding. You may want this when encoding "
687 "interlaced video; however, this is experimental and may "
688 "cause damaged video."));
699 setLabel(QObject::tr(
"Enable interlaced motion estimation"));
701 setHelpText(QObject::tr(
"If set, the MPEG4 encoder will use "
702 "interlaced motion estimation. You may want this when "
703 "encoding interlaced video; however, this is experimental "
704 "and may cause damaged video."));
715 setLabel(QObject::tr(
"Enable high-quality encoding"));
717 setHelpText(QObject::tr(
"If set, the MPEG4 encoder will use "
718 "'high-quality' encoding options. This requires much "
719 "more processing, but can result in better video."));
730 setLabel(QObject::tr(
"Enable 4MV encoding"));
732 setHelpText(QObject::tr(
"If set, the MPEG4 encoder will use '4MV' "
733 "motion-vector encoding. This requires "
734 "much more processing, but can result in better "
735 "video. It is highly recommended that the HQ option is "
736 "enabled if 4MV is enabled."));
748 setLabel(QObject::tr(
"Number of threads"));
751 QObject::tr(
"Threads to use for software encoding.") +
" " +
752 QObject::tr(
"Set to a value less than or equal to the "
753 "number of processors on the backend that "
754 "will be doing the encoding."));
762 const QString& setting =
"mpeg2bitrate",
763 uint min_br = 1000,
uint max_br = 16000,
764 uint default_br = 4500,
uint increment = 100,
765 QString label = QString()) :
770 label = QObject::tr(
"Avg. Bitrate (kb/s)");
774 "Average bitrate in kilobits/second. As a guide, "
775 "2200 kb/s is approximately 1 GB/hour."));
783 const QString& setting =
"mpeg2maxbitrate",
784 uint min_br = 1000,
uint max_br = 16000,
785 uint default_br = 6000,
uint increment = 100,
786 QString label = QString()) :
791 label = QObject::tr(
"Max. Bitrate (kb/s)");
794 setHelpText(QObject::tr(
"Maximum bitrate in kilobits/second. "
795 "As a guide, 2200 kb/s is approximately 1 GB/hour."));
807 if (maxopt > 8) maxopt = 8;
809 setLabel(QObject::tr(
"Stream Type"));
811 const std::array<const QString,9>
options {
"MPEG-2 PS",
"MPEG-2 TS",
812 "MPEG-1 VCD",
"PES AV",
814 "DVD",
"DVD-Special 1",
"DVD-Special 2" };
816 for (
uint idx = minopt; idx <= maxopt; ++idx)
820 setHelpText(QObject::tr(
"Sets the type of stream generated by "
833 if (maxopt > 3) maxopt = 3;
835 setLabel(QObject::tr(
"Aspect Ratio"));
837 const std::array<const QString,4>
options { QObject::tr(
"Square"),
"4:3",
840 for (
uint idx = minopt; idx <= maxopt; ++idx)
844 setHelpText(QObject::tr(
"Sets the aspect ratio of stream generated "
869 setLabel(QObject::tr(
"Horizontal Decimation"));
884 setLabel(QObject::tr(
"Vertical Decimation"));
899 setName(QObject::tr(
"Video Compression"));
904 QString label(
"RTjpeg");
921 #ifdef USING_FFMPEG_THREADS
933 #ifdef USING_FFMPEG_THREADS
937 label =
"Hardware MJPEG";
942 label =
"MPEG-2 Hardware Encoder";
948 label =
"MPEG-4 AVC Hardware Encoder";
950 h0->setLabel(QObject::tr(
"Low Resolution"));
952 1000, 13500, 4500, 500));
954 1100, 20200, 6000, 500));
958 h1->setLabel(QObject::tr(
"Medium Resolution"));
960 1000, 13500, 9000, 500));
962 1100, 20200, 11000, 500));
966 h2->setLabel(QObject::tr(
"High Resolution"));
968 1000, 13500, 13500, 500));
970 1100, 20200, 20200, 500));
984 for (
const auto & option : qAsConst(
options))
988 for (
const auto & Imenu : qAsConst(option.m_menu))
990 if (!Imenu.isEmpty())
1001 bool dynamic_res = !v4l2->UserAdjustableResolution();
1011 option.m_defaultValue));
1019 option.m_defaultValue));
1021 else if (option.m_category ==
1027 "low_mpegbitratemode"));
1029 "medium_mpegbitratemode"));
1031 "medium_mpegbitratemode"));
1040 bit_low->setLabel(QObject::tr(
"Low Resolution"));
1042 "low_mpegavgbitrate",
1043 option.m_minimum / 1000,
1044 option.m_maximum / 1000,
1045 option.m_defaultValue / 1000,
1046 option.m_step / 1000));
1048 bit_medium->setLabel(QObject::
1049 tr(
"Medium Resolution"));
1051 "medium_mpegavgbitrate",
1052 option.m_minimum / 1000,
1053 option.m_maximum / 1000,
1054 option.m_defaultValue / 1000,
1055 option.m_step / 1000));
1057 bit_high->setLabel(QObject::
1058 tr(
"High Resolution"));
1060 "high_mpegavgbitrate",
1061 option.m_minimum / 1000,
1062 option.m_maximum / 1000,
1063 option.m_defaultValue / 1000,
1064 option.m_step / 1000));
1068 bit_low->setLabel(QObject::tr(
"Bitrate"));
1071 option.m_minimum / 1000,
1072 option.m_maximum / 1000,
1073 option.m_defaultValue / 1000,
1074 option.m_step / 1000));
1077 else if (option.m_category ==
1083 "low_mpegpeakbitrate",
1084 option.m_minimum / 1000,
1085 option.m_maximum / 1000,
1086 option.m_defaultValue / 1000,
1087 option.m_step / 1000));
1089 "medium_mpegpeakbitrate",
1090 option.m_minimum / 1000,
1091 option.m_maximum / 1000,
1092 option.m_defaultValue / 1000,
1093 option.m_step / 1000));
1095 "high_mpegpeakbitrate",
1096 option.m_minimum / 1000,
1097 option.m_maximum / 1000,
1098 option.m_defaultValue / 1000,
1099 option.m_step / 1000));
1105 option.m_minimum / 1000,
1106 option.m_maximum / 1000,
1107 option.m_defaultValue / 1000,
1108 option.m_step / 1000));
1128 #endif // USING_V4L2
1133 if (!groupType.isNull())
1135 if (groupType ==
"HDPVR")
1137 else if (groupType.startsWith(
"V4L2:"))
1142 else if (groupType ==
"MPEG")
1144 else if (groupType ==
"MJPEG")
1146 else if (groupType ==
"GO7007")
1180 setLabel(QObject::tr(
"Enable auto-transcode after recording"));
1182 setHelpText(QObject::tr(
"Automatically transcode when a recording is "
1183 "made using this profile and the recording's "
1184 "schedule is configured to allow transcoding."));
1195 setLabel(QObject::tr(
"Resize video while transcoding"));
1197 setHelpText(QObject::tr(
"Allows the transcoder to "
1198 "resize the video during transcoding."));
1209 setLabel(QObject::tr(
"Lossless transcoding"));
1211 setHelpText(QObject::tr(
"Only reencode where absolutely needed "
1212 "(normally only around cutpoints). Otherwise "
1213 "keep audio and video formats identical to "
1214 "the source. This should result in the "
1215 "highest quality, but won't save as much "
1226 setLabel(QObject::tr(
"Recording Type"));
1228 QString msg = QObject::tr(
1229 "This option allows you to filter out unwanted streams. "
1230 "'Normal' will record all relevant streams including "
1231 "interactive television data. 'TV Only' will record only "
1232 "audio, video and subtitle streams. ");
1248 setLabel(QObject::tr(
"Record Full TS?"));
1250 QString msg = QObject::tr(
1251 "If set, extra files will be created for each recording with "
1252 "the name of the recording followed by '.ts.raw'. "
1253 "These extra files represent the full contents of the transport "
1254 "stream used to generate the recording. (For debugging purposes)");
1270 setLabel(QObject::tr(
"Custom filters"));
1271 setHelpText(QObject::tr(
"Filters used when transcoding with this "
1272 "profile. This value must be blank to perform "
1273 "lossless transcoding. Format: "
1274 "[[<filter>=<options>,]...]"
1287 bool transcoding =
false) :
1290 transcoding ? QObject::tr(
"Auto") : QString()),
1296 QString
help = (transcoding) ?
1297 QObject::tr(
"If the width is set to 'Auto', the width "
1298 "will be calculated based on the height and "
1299 "the recording's physical aspect ratio.") :
1300 QObject::tr(
"Width to use for encoding. "
1301 "Note: PVR-x50 cards may produce ghosting if "
1302 "this is not set to 720 or 768 for NTSC and "
1303 "PAL, respectively.");
1313 uint defaultheight,
uint maxheight,
1314 bool transcoding =
false):
1317 transcoding ? QObject::tr(
"Auto") : QString()),
1323 QString
help = (transcoding) ?
1324 QObject::tr(
"If the height is set to 'Auto', the height "
1325 "will be calculated based on the width and "
1326 "the recording's physical aspect ratio.") :
1327 QObject::tr(
"Height to use for encoding. "
1328 "Note: PVR-x50 cards may produce ghosting if "
1329 "this is not set to 480 or 576 for NTSC and "
1330 "PAL, respectively.");
1337 const QString& tvFormat,
const QString& profName)
1339 setLabel(QObject::tr(
"Image size"));
1341 QSize defaultsize(768, 576);
1342 QSize maxsize(768, 576);
1343 bool transcoding = profName.startsWith(
"Transcoders");
1344 bool ivtv = profName.startsWith(
"IVTV MPEG-2 Encoders");
1348 maxsize = QSize(1920, 1088);
1349 if (tvFormat.toLower() ==
"ntsc" || tvFormat.toLower() ==
"atsc")
1350 defaultsize = QSize(480, 480);
1352 defaultsize = QSize(480, 576);
1354 else if (tvFormat.startsWith(
"ntsc", Qt::CaseInsensitive))
1356 maxsize = QSize(720, 480);
1357 defaultsize = (ivtv) ? QSize(720, 480) : QSize(480, 480);
1359 else if (tvFormat.toLower() ==
"atsc")
1361 maxsize = QSize(1920, 1088);
1362 defaultsize = QSize(1920, 1088);
1366 maxsize = QSize(768, 576);
1367 defaultsize = (ivtv) ? QSize(720, 576) : QSize(480, 576);
1371 maxsize.width(), transcoding));
1373 maxsize.height(), transcoding));
1380 m_name(new
Name(*this)),
1381 m_profileName(profName)
1393 if (!profName.isEmpty())
1395 if (profName.startsWith(
"Transcoders"))
1449 "SELECT cardtype, profilegroups.name "
1450 "FROM profilegroups, recordingprofiles "
1451 "WHERE profilegroups.id = recordingprofiles.profilegroup AND "
1452 " recordingprofiles.id = :PROFILEID");
1453 result.
bindValue(
":PROFILEID", profileId);
1461 else if (result.
next())
1464 name = result.
value(1).toString();
1473 if (!val.trimmed().isEmpty())
1485 [[maybe_unused]]
const QString &videodev)
1488 QString cardtype = card;
1492 if (cardtype ==
"V4L2ENC")
1502 "SELECT recordingprofiles.id, profilegroups.hostname, "
1503 " profilegroups.is_default "
1504 "FROM recordingprofiles, profilegroups "
1505 "WHERE profilegroups.id = recordingprofiles.profilegroup AND "
1506 " profilegroups.cardtype = :CARDTYPE AND "
1507 " recordingprofiles.name = :NAME");
1508 result.
bindValue(
":CARDTYPE", cardtype);
1517 while (result.
next())
1521 profileId = result.
value(0).toUInt();
1523 else if (result.
value(2).toInt() == 1)
1525 profileId = result.
value(0).toUInt();
1543 "SELECT recordingprofiles.id, cardtype "
1544 "FROM recordingprofiles, profilegroups "
1545 "WHERE recordingprofiles.profilegroup = profilegroups.id AND "
1546 " profilegroups.name = :GROUPNAME AND "
1547 " recordingprofiles.name = :NAME");
1559 uint profileId = result.
value(0).toUInt();
1560 QString
type = result.
value(1).toString();
1570 const QString &name)
1580 if (
type.startsWith(
"V4L2:"))
1583 if (!devices.isEmpty())
1585 for (
const auto & device : qAsConst(devices))
1601 if (
type !=
"HDPVR" &&
1653 m_group(id), m_labelName(
std::move(profName))
1673 tr(
"Enter the name of the new profile"));
1675 if (settingdialog->Create())
1683 delete settingdialog;
1691 "INSERT INTO recordingprofiles "
1692 "(name, videocodec, audiocodec, profilegroup) "
1694 "(:NAME, :VIDEOCODEC, :AUDIOCODEC, :PROFILEGROUP);");
1696 query.
bindValue(
":VIDEOCODEC",
"MPEG-4");
1707 "FROM recordingprofiles "
1708 "WHERE name = :NAME AND profilegroup = :PROFILEGROUP;");
1731 bool foldautodetect)
1747 "FROM recordingprofiles "
1748 "WHERE profilegroup = :GROUP "
1765 profile->setLabel(QObject::tr(
"Autodetect"));
1771 QString name = result.
value(0).toString();
1772 QString
id = result.
value(1).toString();
1776 if (name ==
"RTjpeg/MPEG4" || name ==
"MPEG2")
1778 if (!foldautodetect)
1783 profile->loadByID(
id.toInt());
1791 profile->loadByID(
id.toInt());
1799 profile->loadByID(
id.toInt());
1803 while (result.
next());
1808 QMap<int, QString> profiles;
1820 "FROM recordingprofiles "
1821 "WHERE profilegroup = :GROUPID "
1832 LOG(VB_GENERAL, LOG_WARNING,
1833 "RecordingProfile::fillselections, Warning: "
1834 "Failed to locate recording id for recording group.");
1841 profiles[id] = QObject::tr(
"Transcode using Autodetect");
1846 QString name = query.
value(0).toString();
1847 int id = query.
value(1).toInt();
1852 if (name !=
"RTjpeg/MPEG4" && name !=
"MPEG2")
1854 QString lbl = QObject::tr(
"Transcode using \"%1\"").arg(name);
1860 QString lbl = QObject::tr(
"Record using the \"%1\" profile").arg(name);
1862 }
while (query.
next());
1876 "SELECT profilegroups.cardtype "
1877 "FROM profilegroups, recordingprofiles "
1878 "WHERE profilegroups.id = recordingprofiles.profilegroup AND "
1879 " recordingprofiles.id = :ID");
1884 else if (result.
next())
1885 return result.
value(0).toString();
1895 "FROM recordingprofiles "
1902 else if (result.
next())
1903 return result.
value(0).toString();
1918 "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)
virtual void setHelpText(const QString &str)
MPEG4OptionIDCT(const RecordingProfile &parent)
int getValueIndex(const QString &value) const
VideoCompressionSettings(const RecordingProfile &parentProfile, [[maybe_unused]] V4L2util *v4l2)
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)
AudioCompressionSettings(const RecordingProfile &parentProfile, [[maybe_unused]] V4L2util *v4l2)
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)
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)
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.