Go to the documentation of this file.
14 QString idTag(
":WHEREID");
15 QString query(
"id = " + idTag);
27 const QString& name) :
43 QString profileTag(
":SETPROFILE");
44 QString nameTag(
":SETNAME");
45 QString valueTag(
":SETVALUE");
47 QString query(
"profile = " + profileTag +
", name = " + nameTag
48 +
", value = " + valueTag);
59 QString profileTag(
":WHEREPROFILE");
60 QString nameTag(
":WHERENAME");
62 QString query(
"profile = " + profileTag +
" AND name = " + nameTag);
89 setLabel(QObject::tr(
"MP3 quality"));
91 setHelpText(QObject::tr(
"The higher the slider number, the lower the "
92 "quality of the audio. Better quality audio (lower "
93 "numbers) requires more CPU."));
104 setLabel(QObject::tr(
"Volume (%)"));
106 setHelpText(QObject::tr(
"Recording volume of the capture card."));
116 setLabel(QObject::tr(
"Sampling rate"));
117 setHelpText(QObject::tr(
"Sets the audio sampling rate for your DSP. "
118 "Ensure that you choose a sampling rate appropriate "
119 "for your device. btaudio may only allow 32000."));
126 for (
uint i = 0; analog && (i <
m_rates.size()); i++)
151 const QString& value = QString(),
154 QString val = value.isEmpty() ? label : value;
155 uint rate = val.toUInt();
162 LOG(VB_GENERAL, LOG_ERR, QString(
"SampleRate: ") +
163 QString(
"Attempted to add a rate %1 Hz, which is "
164 "not in the list of allowed rates.").arg(rate));
176 bool layer1,
bool layer2,
bool layer3) :
189 uint allowed_cnt = 0;
194 if (1 == allowed_cnt)
267 setHelpText(QObject::tr(
"Sets the audio bitrate"));
295 setHelpText(QObject::tr(
"Sets the audio bitrate"));
323 setHelpText(QObject::tr(
"Sets the audio bitrate"));
335 setLabel(QObject::tr(
"Volume (%)"));
337 setHelpText(QObject::tr(
"Volume of the recording "));
345 bool layer1,
bool layer2,
bool layer3,
348 const std::array<const QString,3> layers {
"Layer I",
"Layer II",
"Layer III", };
350 setLabel(QObject::tr(
"Bitrate Settings"));
352 auto *audType =
new MPEG2audType(parent, layer1, layer2, layer3);
361 int which = audType->getValueIndex(layers[desired_layer]);
363 audType->setValue(which);
373 setLabel(QObject::tr(
"SAP/Bilingual"));
381 "Chooses the language(s) to record when "
382 "two languages are broadcast. Only Layer II "
383 "supports the recording of two languages (Dual)."
384 "Requires ivtv 0.4.0 or later."));
392 const QString& setting =
"mpeg2bitratemode") :
396 setLabel(QObject::tr(
"Bitrate Mode"));
413 setName(QObject::tr(
"Audio Quality"));
417 QString label(
"MP3");
422 label =
"MPEG-2 Hardware Encoder";
430 label =
"Uncompressed";
454 for (
const auto & option : std::as_const(
options))
458 for (
const auto & Imenu : std::as_const(option.m_menu))
460 if (!Imenu.isEmpty())
468 for (
const auto & option : std::as_const(
options))
475 else if (option.m_category ==
481 else if (option.m_category ==
493 for (
const auto & Imenu : std::as_const(option.m_menu))
495 if (Imenu.indexOf(
"Layer III") >= 0)
497 else if (Imenu.indexOf(
"Layer II") >= 0)
499 else if (Imenu.indexOf(
"Layer I") >= 0)
503 if (layer1 || layer2 || layer3)
526 if (!groupType.isNull())
528 if (groupType ==
"MPEG")
530 else if (groupType ==
"HDPVR")
535 else if (groupType.startsWith(
"V4L2:"))
579 setLabel(QObject::tr(
"RTjpeg Quality"));
581 setHelpText(QObject::tr(
"Higher is better quality."));
592 setLabel(QObject::tr(
"Luma filter"));
605 setLabel(QObject::tr(
"Chroma filter"));
618 setLabel(QObject::tr(
"Bitrate (kb/s)"));
620 setHelpText(QObject::tr(
"Bitrate in kilobits/second. As a guide, "
621 "2200 kb/s is approximately 1 GB/hr."));
632 setLabel(QObject::tr(
"Scale bitrate for frame size"));
634 setHelpText(QObject::tr(
"If set, the bitrate specified will be used "
635 "for 640x480. If other resolutions are used, the "
636 "bitrate will be scaled appropriately."));
647 setLabel(QObject::tr(
"Minimum quality"));
649 setHelpText(QObject::tr(
"Modifying the default may have severe "
661 setLabel(QObject::tr(
"Maximum quality"));
663 setHelpText(QObject::tr(
"Modifying the default may have severe "
676 setLabel(QObject::tr(
"Max quality difference between frames"));
678 setHelpText(QObject::tr(
"Modifying the default may have severe "
690 setLabel(QObject::tr(
"Enable interlaced DCT encoding"));
692 setHelpText(QObject::tr(
"If set, the MPEG4 encoder will use "
693 "interlaced DCT encoding. You may want this when encoding "
694 "interlaced video; however, this is experimental and may "
695 "cause damaged video."));
706 setLabel(QObject::tr(
"Enable interlaced motion estimation"));
708 setHelpText(QObject::tr(
"If set, the MPEG4 encoder will use "
709 "interlaced motion estimation. You may want this when "
710 "encoding interlaced video; however, this is experimental "
711 "and may cause damaged video."));
722 setLabel(QObject::tr(
"Enable high-quality encoding"));
724 setHelpText(QObject::tr(
"If set, the MPEG4 encoder will use "
725 "'high-quality' encoding options. This requires much "
726 "more processing, but can result in better video."));
737 setLabel(QObject::tr(
"Enable 4MV encoding"));
739 setHelpText(QObject::tr(
"If set, the MPEG4 encoder will use '4MV' "
740 "motion-vector encoding. This requires "
741 "much more processing, but can result in better "
742 "video. It is highly recommended that the HQ option is "
743 "enabled if 4MV is enabled."));
755 setLabel(QObject::tr(
"Number of threads"));
758 QObject::tr(
"Threads to use for software encoding.") +
" " +
759 QObject::tr(
"Set to a value less than or equal to the "
760 "number of processors on the backend that "
761 "will be doing the encoding."));
769 const QString& setting =
"mpeg2bitrate",
770 uint min_br = 1000,
uint max_br = 16000,
771 uint default_br = 4500,
uint increment = 100,
772 QString label = QString()) :
777 label = QObject::tr(
"Avg. Bitrate (kb/s)");
781 "Average bitrate in kilobits/second. As a guide, "
782 "2200 kb/s is approximately 1 GB/hour."));
790 const QString& setting =
"mpeg2maxbitrate",
791 uint min_br = 1000,
uint max_br = 16000,
792 uint default_br = 6000,
uint increment = 100,
793 QString label = QString()) :
798 label = QObject::tr(
"Max. Bitrate (kb/s)");
801 setHelpText(QObject::tr(
"Maximum bitrate in kilobits/second. "
802 "As a guide, 2200 kb/s is approximately 1 GB/hour."));
814 maxopt = std::min<uint>(maxopt, 8);
816 setLabel(QObject::tr(
"Stream Type"));
818 const std::array<const QString,9>
options {
"MPEG-2 PS",
"MPEG-2 TS",
819 "MPEG-1 VCD",
"PES AV",
821 "DVD",
"DVD-Special 1",
"DVD-Special 2" };
823 for (
uint idx = minopt; idx <= maxopt; ++idx)
827 setHelpText(QObject::tr(
"Sets the type of stream generated by "
840 maxopt = std::min<uint>(maxopt, 3);
842 setLabel(QObject::tr(
"Aspect Ratio"));
844 const std::array<const QString,4>
options { QObject::tr(
"Square"),
"4:3",
847 for (
uint idx = minopt; idx <= maxopt; ++idx)
851 setHelpText(QObject::tr(
"Sets the aspect ratio of stream generated "
876 setLabel(QObject::tr(
"Horizontal Decimation"));
891 setLabel(QObject::tr(
"Vertical Decimation"));
907 setName(QObject::tr(
"Video Compression"));
911 QString label(
"RTjpeg");
928 #ifdef USING_FFMPEG_THREADS
940 #ifdef USING_FFMPEG_THREADS
944 label =
"Hardware MJPEG";
949 label =
"MPEG-2 Hardware Encoder";
955 label =
"MPEG-4 AVC Hardware Encoder";
957 h0->setLabel(QObject::tr(
"Low Resolution"));
959 1000, 13500, 4500, 500));
961 1100, 20200, 6000, 500));
965 h1->setLabel(QObject::tr(
"Medium Resolution"));
967 1000, 13500, 9000, 500));
969 1100, 20200, 11000, 500));
973 h2->setLabel(QObject::tr(
"High Resolution"));
975 1000, 13500, 13500, 500));
977 1100, 20200, 20200, 500));
991 for (
const auto & option : std::as_const(
options))
995 for (
const auto & Imenu : std::as_const(option.m_menu))
997 if (!Imenu.isEmpty())
1008 bool dynamic_res = !v4l2->UserAdjustableResolution();
1018 option.m_defaultValue));
1026 option.m_defaultValue));
1028 else if (option.m_category ==
1034 "low_mpegbitratemode"));
1036 "medium_mpegbitratemode"));
1038 "medium_mpegbitratemode"));
1049 bit_low->setLabel(QObject::tr(
"Low Resolution"));
1051 "low_mpegavgbitrate",
1052 option.m_minimum / 1000,
1053 option.m_maximum / 1000,
1054 option.m_defaultValue / 1000,
1055 option.m_step / 1000));
1057 bit_medium->setLabel(QObject::
1058 tr(
"Medium Resolution"));
1060 "medium_mpegavgbitrate",
1061 option.m_minimum / 1000,
1062 option.m_maximum / 1000,
1063 option.m_defaultValue / 1000,
1064 option.m_step / 1000));
1066 bit_high->setLabel(QObject::
1067 tr(
"High Resolution"));
1069 "high_mpegavgbitrate",
1070 option.m_minimum / 1000,
1071 option.m_maximum / 1000,
1072 option.m_defaultValue / 1000,
1073 option.m_step / 1000));
1077 bit_low->setLabel(QObject::tr(
"Bitrate"));
1080 option.m_minimum / 1000,
1081 option.m_maximum / 1000,
1082 option.m_defaultValue / 1000,
1083 option.m_step / 1000));
1086 else if (option.m_category ==
1092 "low_mpegpeakbitrate",
1093 option.m_minimum / 1000,
1094 option.m_maximum / 1000,
1095 option.m_defaultValue / 1000,
1096 option.m_step / 1000));
1098 "medium_mpegpeakbitrate",
1099 option.m_minimum / 1000,
1100 option.m_maximum / 1000,
1101 option.m_defaultValue / 1000,
1102 option.m_step / 1000));
1104 "high_mpegpeakbitrate",
1105 option.m_minimum / 1000,
1106 option.m_maximum / 1000,
1107 option.m_defaultValue / 1000,
1108 option.m_step / 1000));
1114 option.m_minimum / 1000,
1115 option.m_maximum / 1000,
1116 option.m_defaultValue / 1000,
1117 option.m_step / 1000));
1137 #endif // USING_V4L2
1142 if (!groupType.isNull())
1144 if (groupType ==
"HDPVR")
1146 else if (groupType.startsWith(
"V4L2:"))
1151 else if (groupType ==
"MPEG")
1155 else if (groupType ==
"MJPEG")
1159 else if (groupType ==
"GO7007")
1193 setLabel(QObject::tr(
"Enable auto-transcode after recording"));
1195 setHelpText(QObject::tr(
"Automatically transcode when a recording is "
1196 "made using this profile and the recording's "
1197 "schedule is configured to allow transcoding."));
1208 setLabel(QObject::tr(
"Resize video while transcoding"));
1210 setHelpText(QObject::tr(
"Allows the transcoder to "
1211 "resize the video during transcoding."));
1222 setLabel(QObject::tr(
"Lossless transcoding"));
1224 setHelpText(QObject::tr(
"Only reencode where absolutely needed "
1225 "(normally only around cutpoints). Otherwise "
1226 "keep audio and video formats identical to "
1227 "the source. This should result in the "
1228 "highest quality, but won't save as much "
1239 setLabel(QObject::tr(
"Recording Type"));
1241 QString msg = QObject::tr(
1242 "This option allows you to filter out unwanted streams. "
1243 "'Normal' will record all relevant streams including "
1244 "interactive television data. 'TV Only' will record only "
1245 "audio, video and subtitle streams. ");
1261 setLabel(QObject::tr(
"Record Full TS?"));
1263 QString msg = QObject::tr(
1264 "If set, extra files will be created for each recording with "
1265 "the name of the recording followed by '.ts.raw'. "
1266 "These extra files represent the full contents of the transport "
1267 "stream used to generate the recording. (For debugging purposes)");
1283 setLabel(QObject::tr(
"Custom filters"));
1284 setHelpText(QObject::tr(
"Filters used when transcoding with this "
1285 "profile. This value must be blank to perform "
1286 "lossless transcoding. Format: "
1287 "[[<filter>=<options>,]...]"
1300 bool transcoding =
false) :
1303 transcoding ? QObject::tr(
"Auto") : QString()),
1309 QString
help = (transcoding) ?
1310 QObject::tr(
"If the width is set to 'Auto', the width "
1311 "will be calculated based on the height and "
1312 "the recording's physical aspect ratio.") :
1313 QObject::tr(
"Width to use for encoding. "
1314 "Note: PVR-x50 cards may produce ghosting if "
1315 "this is not set to 720 or 768 for NTSC and "
1316 "PAL, respectively.");
1326 uint defaultheight,
uint maxheight,
1327 bool transcoding =
false):
1330 transcoding ? QObject::tr(
"Auto") : QString()),
1336 QString
help = (transcoding) ?
1337 QObject::tr(
"If the height is set to 'Auto', the height "
1338 "will be calculated based on the width and "
1339 "the recording's physical aspect ratio.") :
1340 QObject::tr(
"Height to use for encoding. "
1341 "Note: PVR-x50 cards may produce ghosting if "
1342 "this is not set to 480 or 576 for NTSC and "
1343 "PAL, respectively.");
1350 const QString& tvFormat,
const QString& profName)
1352 setLabel(QObject::tr(
"Image size"));
1354 QSize defaultsize(768, 576);
1355 QSize maxsize(768, 576);
1356 bool transcoding = profName.startsWith(
"Transcoders");
1357 bool ivtv = profName.startsWith(
"IVTV MPEG-2 Encoders");
1361 maxsize = QSize(1920, 1088);
1362 if (tvFormat.toLower() ==
"ntsc" || tvFormat.toLower() ==
"atsc")
1363 defaultsize = QSize(480, 480);
1365 defaultsize = QSize(480, 576);
1367 else if (tvFormat.startsWith(
"ntsc", Qt::CaseInsensitive))
1369 maxsize = QSize(720, 480);
1370 defaultsize = (ivtv) ? QSize(720, 480) : QSize(480, 480);
1372 else if (tvFormat.toLower() ==
"atsc")
1374 maxsize = QSize(1920, 1088);
1375 defaultsize = QSize(1920, 1088);
1379 maxsize = QSize(768, 576);
1380 defaultsize = (ivtv) ? QSize(720, 576) : QSize(480, 576);
1384 maxsize.width(), transcoding));
1386 maxsize.height(), transcoding));
1393 m_name(new
Name(*this)),
1394 m_profileName(profName)
1402 if (!profName.isEmpty())
1404 if (profName.startsWith(
"Transcoders"))
1460 "SELECT cardtype, profilegroups.name "
1461 "FROM profilegroups, recordingprofiles "
1462 "WHERE profilegroups.id = recordingprofiles.profilegroup AND "
1463 " recordingprofiles.id = :PROFILEID");
1464 result.
bindValue(
":PROFILEID", profileId);
1472 else if (result.
next())
1475 name = result.
value(1).toString();
1484 if (!val.trimmed().isEmpty())
1496 [[maybe_unused]]
const QString &videodev)
1499 QString cardtype = card;
1503 if (cardtype ==
"V4L2ENC")
1513 "SELECT recordingprofiles.id, profilegroups.hostname, "
1514 " profilegroups.is_default "
1515 "FROM recordingprofiles, profilegroups "
1516 "WHERE profilegroups.id = recordingprofiles.profilegroup AND "
1517 " profilegroups.cardtype = :CARDTYPE AND "
1518 " recordingprofiles.name = :NAME");
1519 result.
bindValue(
":CARDTYPE", cardtype);
1528 while (result.
next())
1532 profileId = result.
value(0).toUInt();
1534 else if (result.
value(2).toInt() == 1)
1536 profileId = result.
value(0).toUInt();
1554 "SELECT recordingprofiles.id, cardtype "
1555 "FROM recordingprofiles, profilegroups "
1556 "WHERE recordingprofiles.profilegroup = profilegroups.id AND "
1557 " profilegroups.name = :GROUPNAME AND "
1558 " recordingprofiles.name = :NAME");
1570 uint profileId = result.
value(0).toUInt();
1571 QString
type = result.
value(1).toString();
1581 const QString &name)
1591 if (
type.startsWith(
"V4L2:"))
1594 if (!devices.isEmpty())
1596 for (
const auto & device : std::as_const(devices))
1612 if (
type !=
"HDPVR" &&
1664 m_group(id), m_labelName(std::move(profName))
1684 tr(
"Enter the name of the new profile"));
1686 if (settingdialog->Create())
1694 delete settingdialog;
1702 "INSERT INTO recordingprofiles "
1703 "(name, videocodec, audiocodec, profilegroup) "
1705 "(:NAME, :VIDEOCODEC, :AUDIOCODEC, :PROFILEGROUP);");
1707 query.
bindValue(
":VIDEOCODEC",
"MPEG-4");
1718 "FROM recordingprofiles "
1719 "WHERE name = :NAME AND profilegroup = :PROFILEGROUP;");
1742 bool foldautodetect)
1758 "FROM recordingprofiles "
1759 "WHERE profilegroup = :GROUP "
1776 profile->setLabel(QObject::tr(
"Autodetect"));
1782 QString name = result.
value(0).toString();
1783 QString
id = result.
value(1).toString();
1787 if (name ==
"RTjpeg/MPEG4" || name ==
"MPEG2")
1789 if (!foldautodetect)
1794 profile->loadByID(
id.toInt());
1802 profile->loadByID(
id.toInt());
1810 profile->loadByID(
id.toInt());
1814 while (result.
next());
1819 QMap<int, QString> profiles;
1831 "FROM recordingprofiles "
1832 "WHERE profilegroup = :GROUPID "
1843 LOG(VB_GENERAL, LOG_WARNING,
1844 "RecordingProfile::fillselections, Warning: "
1845 "Failed to locate recording id for recording group.");
1852 profiles[id] = QObject::tr(
"Transcode using Autodetect");
1857 QString name = query.
value(0).toString();
1858 int id = query.
value(1).toInt();
1863 if (name !=
"RTjpeg/MPEG4" && name !=
"MPEG2")
1865 QString lbl = QObject::tr(
"Transcode using \"%1\"").arg(name);
1871 QString lbl = QObject::tr(
"Record using the \"%1\" profile").arg(name);
1873 }
while (query.
next());
1887 "SELECT profilegroups.cardtype "
1888 "FROM profilegroups, recordingprofiles "
1889 "WHERE profilegroups.id = recordingprofiles.profilegroup AND "
1890 " recordingprofiles.id = :ID");
1895 else if (result.
next())
1896 return result.
value(0).toString();
1906 "FROM recordingprofiles "
1913 else if (result.
next())
1914 return result.
value(0).toString();
1929 "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.
static eu8 clamp(eu8 value, eu8 low, eu8 high)
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.