Linux/MythTV: Unterschied zwischen den Versionen

Aus VivaLV
Zur Navigation springen Zur Suche springen
Zeile 109: Zeile 109:
===MythWeb merkt sich das Mobile Template===
===MythWeb merkt sich das Mobile Template===
Nach Aufruf von MythWeb mit einem mobilen Browser kann es sein, dass das Mobile Template ab dann auch bei einem Desktop Browser verwendet wird. Dies kann man zurücksetzen, indem man '''?RESET_TMPL=true''' an die URL anhängt.
Nach Aufruf von MythWeb mit einem mobilen Browser kann es sein, dass das Mobile Template ab dann auch bei einem Desktop Browser verwendet wird. Dies kann man zurücksetzen, indem man '''?RESET_TMPL=true''' an die URL anhängt.
===Patches für 0.21===
====Bob 2x Deinterlacing funktioniert nicht====
Wenn die NVidia-Treiber eine minimal abweichende Frequenz liefern (z.B. 49.99 Hz statt 50 Hz), dann weigert sich MythTV, Bob 2x Deinterlacing anzuwenden, weil die Bildwiederholfrequenz nicht hoch genug ist.
Im 0.22 Trunk ist das Problem gefixt: http://svn.mythtv.org/trac/ticket/4637
'''Rückportierung des Patches für 0.21''':
Index: mythtv/libs/libmythtv/vsync.cpp
===================================================================
--- mythtv/libs/libmythtv/vsync.cpp    (Revision 19961)
+++ mythtv/libs/libmythtv/vsync.cpp    (Arbeitskopie)
@@ -117,7 +117,8 @@
      m_frame_interval(frameint), m_refresh_interval(refreshint),
      m_interlaced(halve_frame_interval)
  {
-    if (m_interlaced && m_refresh_interval > m_frame_interval/2)
+    int tolerance = m_refresh_interval / 200;
+    if (m_interlaced && m_refresh_interval > ((m_frame_interval/2) + tolerance))
          m_interlaced = false; // can't display both fields at 2x rate
      //cout << "Frame interval: " << m_frame_interval << endl;
@@ -135,7 +136,8 @@
  {
      m_frame_interval = fr;
      m_interlaced = intr;
-    if (m_interlaced && m_refresh_interval > m_frame_interval/2)
+    int tolerance = m_refresh_interval / 200;
+    if (m_interlaced && m_refresh_interval > ((m_frame_interval/2) + tolerance))
          m_interlaced = false; // can't display both fields at 2x rate
      VERBOSE(VB_PLAYBACK, QString("Set video sync frame interval to %1")
====Video Scan fest auf Interlaced einstellen====
Bei DVB-C senden einige Sender (PRO7, SAT1, Kabel1, DMAX, DSF, ...) falsche und dauernd wechselnde Kennungen bzgl. Progressive/Interlaced. Das führt dazu, dass MythTV nicht flüssig abspielt. Man muss dann immer wieder (die Einstellung wird nicht gemerkt) nach Play im OSD den Video Scan auf Interlaced stellen statt automatische Erkennung.
'''Patch, der den Video Scan fest auf Interlaced stellt''':
Index: mythtv/libs/libmythtv/NuppelVideoPlayer.cpp
===================================================================
--- mythtv/libs/libmythtv/NuppelVideoPlayer.cpp (Revision 19961)
+++ mythtv/libs/libmythtv/NuppelVideoPlayer.cpp (Arbeitskopie)
@@ -175,7 +175,7 @@
        video_disp_dim(0,0), video_dim(0,0),
        video_frame_rate(29.97f), video_aspect(4.0f / 3.0f),
        forced_video_aspect(-1),
-      m_scan(kScan_Interlaced),    m_scan_locked(false),
+      m_scan(kScan_Interlaced),    m_scan_locked(true),
        m_scan_tracker(0),
        keyframedist(30),
        // RingBuffer stuff
@@ -924,6 +924,7 @@
          return; // hopefully this will be called again later...
      m_scan_locked = (scan != kScan_Detect);
+    m_scan_locked = true;
      if (scan == m_scan)
          return;
@@ -1025,7 +1026,7 @@
      SetScanType(detectInterlace(scan, m_scan, video_frame_rate,
                                  video_disp_dim.height()));
-    m_scan_locked  = false;
+    m_scan_locked  = true;
      m_scan_tracker = (m_scan == kScan_Interlaced) ? 2 : 0;
  }
@@ -2792,7 +2793,7 @@
      // And initialoze m_scan_tracker to 2 which will immediately switch to
      // progressive if the first frame is progressive in AutoDeint().
      m_scan            = kScan_Interlaced;
-    m_scan_locked      = false;
+    m_scan_locked      = true;
      m_double_framerate = false;
      m_can_double      = false;
      m_scan_tracker    = 2;

Version vom 19. März 2009, 19:00 Uhr

MySQL Root-Passwort setzen

# mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD('ROOT_PWD') WHERE user='root';
mysql> FLUSH PRIVILEGES;
mysql> quit

MythTV-Datenbank erstellen

mysql -u root -p < /usr/share/doc/mythtv-0.20/database/mc.sql

oder

mysql -u root -p < /usr/share/mythtv/database/mc.sql

Datenbankzugriff für Remote Frontends erlauben

$ mysql -u root -p mythconverg
mysql> grant all on mythconverg.* to mythtv@"192.168.0.%" identified by "mythtv";
mysql> flush privileges;
mysql> quit

Backup der Datenbank

$ mysqldump -u mythtv -pmythtv mythconverg -c > mythtv_backup.sql

Restore der Datenbank

$ mysql -u root -p
mysql>create database mythconverg;
mysql>exit
$ mysql -u mythtv -pmythtv mythconverg < mythtv_backup.sql

Hostname in der DB ändern

$ mysqldump -u mythtv -pmythtv mythconverg -c > mythtv_backup.sql
$ cat mythtv_backup.sql | sed s/\'frontend1\'/\'kidsroom\'/g > mythtv_restore.sql
$ mysql -u root -p
mysql>drop database mythconverg;
mysql>create database mythconverg;
mysql>exit
$ mysql -u mythtv -pmythtv mythconverg < mythtv_restore.sql

Crystalfontz LC-Display 632 seriell

Testen

Testprogramm runterladen.

cd 632_634_linux
make
./test632_634 /dev/ttyS0 19200

LCDproc

LCDproc runterladen und compilieren/installieren:

cd lcdproc-0.52
./configure --enable-drivers=all
make
cd server
su
make install
cd /home/mythtv 
mkdir lcd
cp lcdproc-0.52/server/drivers/CFontz.so lcd/
cp lcdproc-0.52/LCDd.conf lcd/

LCDd.conf:

[server]
Driver=CFontz
DriverPath=/home/mythtv/lcd/

[CFontz]
Device=/dev/ttyS0
Size=16x2
Contrast=560
Brightness=500
OffBrightness=0
Speed=19200
NewFirmware=yes
Reboot=no

Starten des Demons (z.B. in /etc/rc.local):

/usr/local/sbin/LCDd -c /home/mythtv/lcd/LCDd.conf

Danach kann man in MythFrontend bei Konfiguration/Erscheinungsbild die LCD-Ansteuerung aktivieren.

Links

Echtzeitpriorität beim Abspielen

Der Benutzer mythtv wird einer neu angelegten Gruppe hinzugefügt, die dann das Recht erhält, die Priorität von Threads zu erhöhen.

su -
groupadd audio
usermod -aG audio mythtv

Test:

groups mythtv

liefert

mythtv : mythtv audio

Eine Zeile hinzufügen zu /etc/security/limits.conf:

@audio          -       rtprio     50

Danach noch bei den Abspieloptionen von mythfrontend den Haken bei Echtzeitpriorität setzen. Beim Abspielen einer Aufnahme müsste mythfrontend dann folgendes in die Console schreiben:

2007-07-28 21:58:10.618 Using realtime priority.

Wenn es nicht funktioniert, ist evtl. der Kernel zu alt. Getestet mit FC5 und Kernel 2.6.20.

MythWeb merkt sich das Mobile Template

Nach Aufruf von MythWeb mit einem mobilen Browser kann es sein, dass das Mobile Template ab dann auch bei einem Desktop Browser verwendet wird. Dies kann man zurücksetzen, indem man ?RESET_TMPL=true an die URL anhängt.

Patches für 0.21

Bob 2x Deinterlacing funktioniert nicht

Wenn die NVidia-Treiber eine minimal abweichende Frequenz liefern (z.B. 49.99 Hz statt 50 Hz), dann weigert sich MythTV, Bob 2x Deinterlacing anzuwenden, weil die Bildwiederholfrequenz nicht hoch genug ist.

Im 0.22 Trunk ist das Problem gefixt: http://svn.mythtv.org/trac/ticket/4637

Rückportierung des Patches für 0.21:

Index: mythtv/libs/libmythtv/vsync.cpp
===================================================================
--- mythtv/libs/libmythtv/vsync.cpp     (Revision 19961)
+++ mythtv/libs/libmythtv/vsync.cpp     (Arbeitskopie)
@@ -117,7 +117,8 @@
     m_frame_interval(frameint), m_refresh_interval(refreshint),
     m_interlaced(halve_frame_interval)
 {
-    if (m_interlaced && m_refresh_interval > m_frame_interval/2)
+    int tolerance = m_refresh_interval / 200;
+    if (m_interlaced && m_refresh_interval > ((m_frame_interval/2) + tolerance))
         m_interlaced = false; // can't display both fields at 2x rate

     //cout << "Frame interval: " << m_frame_interval << endl;
@@ -135,7 +136,8 @@
 {
     m_frame_interval = fr;
     m_interlaced = intr;
-    if (m_interlaced && m_refresh_interval > m_frame_interval/2)
+    int tolerance = m_refresh_interval / 200;
+    if (m_interlaced && m_refresh_interval > ((m_frame_interval/2) + tolerance))
         m_interlaced = false; // can't display both fields at 2x rate

     VERBOSE(VB_PLAYBACK, QString("Set video sync frame interval to %1")

Video Scan fest auf Interlaced einstellen

Bei DVB-C senden einige Sender (PRO7, SAT1, Kabel1, DMAX, DSF, ...) falsche und dauernd wechselnde Kennungen bzgl. Progressive/Interlaced. Das führt dazu, dass MythTV nicht flüssig abspielt. Man muss dann immer wieder (die Einstellung wird nicht gemerkt) nach Play im OSD den Video Scan auf Interlaced stellen statt automatische Erkennung.

Patch, der den Video Scan fest auf Interlaced stellt:

Index: mythtv/libs/libmythtv/NuppelVideoPlayer.cpp
===================================================================
--- mythtv/libs/libmythtv/NuppelVideoPlayer.cpp (Revision 19961)
+++ mythtv/libs/libmythtv/NuppelVideoPlayer.cpp (Arbeitskopie)
@@ -175,7 +175,7 @@
       video_disp_dim(0,0), video_dim(0,0),
       video_frame_rate(29.97f), video_aspect(4.0f / 3.0f),
       forced_video_aspect(-1),
-      m_scan(kScan_Interlaced),     m_scan_locked(false),
+      m_scan(kScan_Interlaced),     m_scan_locked(true),
       m_scan_tracker(0),
       keyframedist(30),
       // RingBuffer stuff
@@ -924,6 +924,7 @@
         return; // hopefully this will be called again later...

     m_scan_locked = (scan != kScan_Detect);
+    m_scan_locked = true;

     if (scan == m_scan)
         return;
@@ -1025,7 +1026,7 @@

     SetScanType(detectInterlace(scan, m_scan, video_frame_rate,
                                 video_disp_dim.height()));
-    m_scan_locked  = false;
+    m_scan_locked  = true;
     m_scan_tracker = (m_scan == kScan_Interlaced) ? 2 : 0;
 }

@@ -2792,7 +2793,7 @@
     // And initialoze m_scan_tracker to 2 which will immediately switch to
     // progressive if the first frame is progressive in AutoDeint().
     m_scan             = kScan_Interlaced;
-    m_scan_locked      = false;
+    m_scan_locked      = true;
     m_double_framerate = false;
     m_can_double       = false;
     m_scan_tracker     = 2;