[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