[mythtv] [PATCH] Interlaced DCT & ME
steve at nexusuk.org
steve at nexusuk.org
Sun Mar 28 08:07:53 EST 2004
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Repost - I noticed this hasn't made it into CVS. This patch is against
today's CVS version. It adds options to turn on the interlaced DCT and
ME algorithms in the MPEG4 decoder. I've been using it for about a month
without any problems, although I've seen a comment from
markfrey at fastmail.fm who was having problems (sorry I didn't reply - I
didn't seem to get the mail although I shows up on Gossamer Threads). In
any case, turning it on is optional so people can try it for themselves.
(I'm running a Hauppauge WinTV/PCI bt878 card under v4l2 on the 2.4.24
kernel with an Athlon XP 1900+).
- --
- Steve http://www.nexusuk.org/
Servatis a periculum, servatis a maleficum - Whisper, Evanescence
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (GNU/Linux)
Comment: Public key available at http://www.nexusuk.org/pubkey.txt
iD8DBQFAZs4u5zUOsIV3bqERAuRwAJ9SheSoOba+dDHuuHYTdIuYvcdXtwCgjNE6
UNyxm/rQ4EgqaCEPtPnLkjQ=
=vDZF
-----END PGP SIGNATURE-----
-------------- next part --------------
diff -urN mythtv.vanilla/libs/libmythtv/NuppelVideoRecorder.cpp mythtv/libs/libmythtv/NuppelVideoRecorder.cpp
--- mythtv.vanilla/libs/libmythtv/NuppelVideoRecorder.cpp 2004-03-27 05:54:20.000000000 +0000
+++ mythtv/libs/libmythtv/NuppelVideoRecorder.cpp 2004-03-28 13:44:38.000000000 +0100
@@ -237,6 +237,20 @@
else
mb_decision = FF_MB_DECISION_SIMPLE;
}
+ else if (opt == "mpeg4optionidct")
+ {
+ if (value)
+ mp4opts |= CODEC_FLAG_INTERLACED_DCT;
+ else
+ mp4opts &= ~CODEC_FLAG_INTERLACED_DCT;
+ }
+ else if (opt == "mpeg4optionime")
+ {
+ if (value)
+ mp4opts |= CODEC_FLAG_INTERLACED_ME;
+ else
+ mp4opts &= ~CODEC_FLAG_INTERLACED_ME;
+ }
else if (opt == "mpeg4option4mv")
{
if (value)
diff -urN mythtv.vanilla/libs/libmythtv/recordingprofile.cpp mythtv/libs/libmythtv/recordingprofile.cpp
--- mythtv.vanilla/libs/libmythtv/recordingprofile.cpp 2004-01-28 22:34:58.000000000 +0000
+++ mythtv/libs/libmythtv/recordingprofile.cpp 2004-03-28 13:44:38.000000000 +0100
@@ -356,6 +356,30 @@
};
};
+class MPEG4OptionIDCT: public CodecParam, public CheckBoxSetting {
+public:
+ MPEG4OptionIDCT(const RecordingProfile& parent):
+ CodecParam(parent, "mpeg4optionidct") {
+ setLabel(QObject::tr("Enable interlaced DCT encoding"));
+ setValue(false);
+ setHelpText(QObject::tr("If set, the MPEG4 encoder will use interlaced "
+ "DCT encoding. You probably want this when encoding "
+ "interlaced video."));
+ };
+};
+
+class MPEG4OptionIME: public CodecParam, public CheckBoxSetting {
+public:
+ MPEG4OptionIME(const RecordingProfile& parent):
+ CodecParam(parent, "mpeg4optionime") {
+ setLabel(QObject::tr("Enable interlaced motion estimation"));
+ setValue(false);
+ setHelpText(QObject::tr("If set, the MPEG4 encoder will use interlaced "
+ "motion estimation. You probably want this when encoding "
+ "interlaced video."));
+ };
+};
+
class MPEG4Option4MV: public CodecParam, public CheckBoxSetting {
public:
MPEG4Option4MV(const RecordingProfile& parent):
@@ -503,6 +527,8 @@
params->addChild(new MPEG4ScaleBitrate(parent));
params->addChild(new MPEG4OptionVHQ(parent));
params->addChild(new MPEG4Option4MV(parent));
+ params->addChild(new MPEG4OptionIDCT(parent));
+ params->addChild(new MPEG4OptionIME(parent));
addTarget("MPEG-4", params);
@@ -516,6 +542,8 @@
params->addChild(new MPEG4ScaleBitrate(parent));
params->addChild(new MPEG4OptionVHQ(parent));
params->addChild(new MPEG4Option4MV(parent));
+ params->addChild(new MPEG4OptionIDCT(parent));
+ params->addChild(new MPEG4OptionIME(parent));
addTarget("MPEG-2", params);
params = new VerticalConfigurationGroup();
More information about the mythtv-dev
mailing list