Linux/MythTV: Unterschied zwischen den Versionen
Thomas (Diskussion | Beiträge) |
Thomas (Diskussion | Beiträge) |
||
Zeile 112: | Zeile 112: | ||
===Patches für 0.21=== | ===Patches für 0.21=== | ||
====Bob 2x Deinterlacing funktioniert nicht==== | ====Bob 2x Deinterlacing funktioniert nicht, weil die Frequenz nicht ganz stimmt==== | ||
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. | 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. | ||
Version vom 31. März 2009, 18:59 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
- Crystalfontz 632
- LCDproc
- MythTV Wiki: LCDProc
- MythTV Wiki: Crystalfontz 632 USB
- MythTV Wiki: mythlcdserver
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, weil die Frequenz nicht ganz stimmt
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 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;
MP2-Ton statt AC3-Ton bevorzugen
Bei DVB ist der AC3-Ton leiser, als der MP2-Ton. Man muss dann immer wieder (die Einstellung wird nicht gemerkt) nach Play im OSD den Ton auf MP2 umstellen.
Patch, der dafür sorgt, dass MP2-Ton bevorzugt wird (außerdem werden mehr Infos in die Console ausgegeben):
Index: mythtv/libs/libmythtv/avformatdecoder.cpp =================================================================== --- mythtv/libs/libmythtv/avformatdecoder.cpp (Revision 19961) +++ mythtv/libs/libmythtv/avformatdecoder.cpp (Arbeitskopie) @@ -2823,7 +2823,7 @@ if ((ctrack >= 0) && (ctrack < (int)numStreams)) return ctrack; // audio already selected -#if 0 + // enable this to print streams for (uint i = 0; i < atracks.size(); i++) { @@ -2840,8 +2840,8 @@ do_ac3_passthru || do_dts_passthru); VERBOSE(VB_AUDIO, LOC + " * " + item.toString()); } -#endif + int selTrack = (1 == numStreams) ? 0 : -1; int wlang = wtrack.language; @@ -2894,10 +2894,10 @@ selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_DTS); if (selTrack < 0) - selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_AC3); + selTrack = filter_max_ch(ic, atracks, flang); if (selTrack < 0) - selTrack = filter_max_ch(ic, atracks, flang); + selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_AC3); } // try to get best track for any language if (selTrack < 0) @@ -2909,10 +2909,10 @@ selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_DTS); if (selTrack < 0) - selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_AC3); + selTrack = filter_max_ch(ic, atracks, flang); if (selTrack < 0) - selTrack = filter_max_ch(ic, atracks, flang); + selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_AC3); } }