Beiträge von mini73

    Moin!


    Gerade lief mal keine Aufnahme, da konnte ich ein bisschen testen.


    Wenn ich nur pvrinput und dummydevice laufen lasse, lastet der Transfer-Thread meine CPU zu 80% aus und ich kriege ständig Meldungen "buffer usage 70%...80%...90%" und "clearing transfer buffer..." und danach dann natürlich "TS continuity error".
    Für mich sieht das so aus, als ob pvrinput und dummydevice irgendwie nicht miteinander können. Wo das jetzt aber genau hakt, ist schwer zu sagen, denn das dummydevice tut echt nicht viel.
    Ich wühl mal auf gut Glück durch den vdr-Source, um mal zu verstehen, was da überhaupt passiert, aber viel Zeit habe ich heute nicht mehr. Und dass ich was verstehe, kann ich auch nicht versprechen. ;)


    Eine spontane Idee: Da das dummydevice sich so schnell von "PlayVideo" zurück meldet, könnte es sein, dass da pvrinput irgendwie aus dem Tritt kommt? Dass da vielleicht irgendwo zu schnell nacheinander gepollt wird? Wie lang müsste das PlayVideo zögern (mit sleep), damit es sich "echter" benimmt?


    mini.

    Moin!


    Ok, es ist also nicht irgendein Transfer-, Reader- oder Writer-Thread, der später gestartet wird? Hm, ich meine mich zu erinnern, dass ich mit dem dummydevice auch mal eine hohe Systemauslastung hatte. Schon schade, dass der vdr nicht ohne ein Ausgabegerät starten will (wirklich nicht? warum nicht? was macht man dann mit reinen Aufnahme-Servern?). Wie sieht's denn mit xinelibout, softdevice o.ä. aus? Diese Dinger hab ich aber noch nie benutzt, da weiß ich also noch weniger zu...


    mini.

    Moin!


    Mein Sempron LE-1200 (per powernowd läuft der mit 1GHz) hat eine Auslastung von 5% während eine Aufnahme läuft. Welcher Thread lastet dein System denn aus? Einfach mal mit top nachsehen und dann im Log die PID suchen, welcher Thread das ist. Vielleicht hilft das bei der Analyse.


    mini.

    Moin!


    Zitat

    Original von Hulk
    Wie wäre es mit einem Subquery ?


    PHP
    SELECT tabelle1.* FROM tabelle1
      WHERE 
      tabelle1.wert1 != '1' 
      and tabelle1.wert2 != '1'
      and tabelle1.id not in 
          ( SELECT tabelle2.id FROM tabelle2 )


    Ich hab zwar nicht viel Ahnung vom MySQL-Dialekt, aber wenn alle Zeilen weg sollen, die wert1=1 UND wert2=1 haben, dann ist die logische Umkehrung wert1 != 1 ODER wert2 != 1, oder? Und das muss dann in Klammern, damit es zusammen ausgewertet wird und nicht das letzte AND da mit rein spielt.
    Also:

    PHP
    SELECT tabelle1.* FROM tabelle1
      WHERE 
      (tabelle1.wert1 != '1' 
       or tabelle1.wert2 != '1')
      and tabelle1.id not in 
          ( SELECT tabelle2.id FROM tabelle2 )


    mini.

    Moin!


    Nur kurz eingeschoben (hab nicht den ganzen Thread gelesen): die channels.conf aus Flensburg im Wiki hab ich mal auf den neuesten Stand gebracht, die Frequenzen der dänischen Programme haben sich geändert (und ein paar andere). Nur, weil die hier wohl mal zwischendurch benutzt wurde...


    mini.

    Moin!


    Ich hab auch immer mal wieder Aussetzer (in Flensburg), allerdings gucke ich nicht digital, sondern analog. Es flackert kurz, so als ob jemand an einem anderem Fernseher am selben Kabel umschaltet oder ein Gerät an der selben Steckdose anschaltet (ist schwer zu erklären). Es betrifft nicht nur meine PVRs, sondern auch die normalen Fernseher im Wohn- und Schlafzimmer. Könnte ja die gleiche Ursache sein. Es fing irgendwann Ende letzten Jahres an. Da ich zu dem Zeitpunkt viel aufgenommen habe (hatte noch nie Scrubs gesehen, das hab ich dann täglich aufgenommen), weiß ich, dass es vorher nicht war.


    Vor ein paar Wochen hab ich mal einen Anruf von KD bekommen, ob ich mit meinem Anschluss zufrieden wäre und ob es Probleme gäbe, weil sie ja jetzt auch bei mir ihre Technik umgestellt hätten bla bla bla (sie wollten mir Internet verkaufen). Da hab ich dann diese Probleme auch prompt erwähnt, die junge Dame war aber ganz verdattert, dass sie auf diese Frage tatsächlich eine Antwort bekommen hat. ;) Sie hat es aufgenommen, aber wie erwartet, ist natürlich nichts passiert...


    mini.

    Moin!


    In der letzten c't (Nummer 7) stand was, wie man mit etwas Glück bei ext3 gelöschte Dateien wiederbekommt. Aber eine Garantie gibt's nicht, besonders, wenn der Rechner weiterarbeitet und das Dateisystem sich damit ändert.


    mini.

    Moin!


    Meine PVR150MCE hat abweichend zu meiner PVR350 noch folgende Werte

    Code
    volume (int)  : min=0 max=65535 step=655 default=58880 value=61952 flags=slider
    bass (int)    : min=0 max=65535 step=655 default=32768 value=32768 flags=slider
    treble (int)  : min=0 max=65535 step=655 default=32768 value=32768 flags=slider


    Vielleicht ist es ein Equalizer-Problem? Standardmäßig scheinen die Controls aber auf "neutral" zu stehen.
    Meine PVR150 hat dann wohl einen lauteren Default als meine PVR350 (die ist bei 58880).


    mini.

    Moin!


    Zitat

    Original von Dr. Seltsam
    wie war das jetzt mit dem YUV-device? ist das statisch /dev/video48, oder wird es irgendwie detected? oder kann man es auch mit Umgebungsvariable setzenß


    Mein Fehler, muss dann natürlich /dev/video49 in meinem Fall sein, nicht /dev/video1 (lässt sich also über die Variablen setzen). Ist zu lange her und wenn es funktioniert, vergisst man's so schnell wieder...
    Und bei nur einer PVR350 hab ich bisher noch keinen Fall erlebt, dass die automatische Suche nicht funktioniert (aber das kann ja noch kommen).


    Und das root-Problem ist einfach so, weil es vidix-Philosophie ist, diesen PCI-Scan zu machen. Ich bin da jetzt auch nicht mehr so drin, ob man das durch Setzen der Variablen umgehen könnte. Muss ich mal gucken, bin heute aber zu müde (hatte gestern Party-Gäste im Haus) und meine Erfahrung sagt, dass man müde nicht programmieren sollte... ;)


    mini.

    Moin!


    Zitat

    Original von Dr. Seltsam
    Bei den Patches von mini73 habe ich etwas den Überblick verloren. Ich habe einen etwas neueren verwendet - ich häng ihn mal an.


    Je neuer, desto besser. Der sieht gut aus.
    Falls man mehrere PVR350 im System hat, lassen sich über die Umgebungsvariablen VIDIXIVTVVIDEODEV und VIDIXIVTVFRAMEBUFFERDEV die richtigen Devices setzen (oder falls die automatische Erkennung aus welchem Grund auch immer nicht funktioniert).
    z.B. wenn zuerst eine PVR150 und dann die PVR350 initialisiert wird (PVR350 ist dann ivtv1)

    Code
    export VIDIXIVTVVIDEODEV=/dev/video17
    export VIDIXIVTVFRAMEBUFFERDEV=/dev/fb1


    (am besten im mplayer-Script setzen)


    Falls man mehrere Framebuffer-Geräte hat, erzählt einem "cat /proc/fb" das richtige, bei mir z.B.

    Code
    vdr:~# cat /proc/fb
    0 VESA VGA
    1 cx23415 TV out


    Leider wurde der Patch vom vidix-Maintainer bisher nicht angenommen, weil er nicht platformunabhängig ist (was der ivtv-vidix-Treiber aber sowieso nicht ist). Ich wollte den schon immer mal so weit abschwächen, dass zumindest die Möglichkeit mit den Umgebungsvariablen funktioniert. Aber die Zeit...


    mini.

    Moin!


    In meinem Log steht nach dem Start u.a. auch so eine Zeile

    Code
    pvr350: IVTV version=0x010200 found


    ich hab allerdings auch noch eine ältere Version am Start (2007-12-15). Heute abend könnte ich es glatt mal schaffen, die Plugins zu aktualisieren...
    Ich hab aber erst mal auch keine weitere Idee.


    Was sagt denn "cat /proc/interrupts"?


    mini.

    Moin!


    Wirkliche Probleme hab ich nicht, ich benutze aber auch kein X. Was mir aufgefallen ist, dass manchmal das Bild kurz "gepumpt" hat, es wurde also klein und im nächsten Frame gleich wieder groß. Aber ich kann nicht sagen, ob das an der Aufnahme oder am Abspielen lag, hab jetzt auch keine Stelle parat, die ich untersuchen könnte. Ist bisher auch nur 2 oder 3 mal aufgetreten.
    Vielleicht ist es ja ein quergeschossenes WSS-Signal? Hab aber keine Ahnung, ob meine 4:3-Röhre das auswertet und ob es überhaupt gesendet wird.


    mini.

    Moin!


    Hier eine kleine Batchdatei, die eine VDR-Aufnahme mit ProjectX demuxed, bei Bedarf mit ReJig etwas verkleinert und anschließend mit mplex eine MPEG-Datei erstellt. Den ReJig-Zwischenschritt hab ich eingefügt, weil mplex über manche Aufnahmen stolpert ("buffer-underrun detected"), dann hilft ein Verkleinern der Videodaten, damit wieder alles passt.


    remuxVDR.cmd


    Beispielaufruf:

    Code
    remuxVDR.cmd "r:\Scrubs_-_Die_Anfänger\Mein_scharfes_Kindermädchen\2009-03-05.09.05.50.50.rec" "Scrubs - 6x13 - Mein scharfes Kindermaedchen" 90


    Und das Ergebnis kannst du dann ja bei Bedarf noch mit AutoGK oder irgendeinem anderen batchfähigem Xvid-Tool konvertieren.


    mini.

    Moin!


    Mittlerweile ist meine Hauppauge WinTV Express gekommen (27 Euro bei Alternate, gibt's gebraucht bestimmt auch billiger), hab' sie eingebaut und sie funktioniert mit nxtvepgd. Ich muss jetzt also nicht mehr den VDR anhalten, um mal nach EPG-Daten zu scannen.
    Testweise hab ich auch mal den Teletext-Grabber aktiviert, aber entweder funktioniert der noch nicht richtig oder der bringt nicht wirklich mehr Daten. Ein grober Vergleich der XML-Dateien zweier Scans (einmal mit, einmal ohne) hat außer den erwarteten Unterschieden aufgrund der zeitlichen Differenz keine erweiterten Beschreibungen o.ä. gebracht. Das kann man also erst mal noch ignorieren.
    Schade ist nur, dass dadurch ein PCI-Slot verbraten wird, aber den brauche ich bisher noch nicht...


    mini.

    Moin!


    Zitat

    Original von Keine_Ahnung


    Kommt ja auf die GUI an. Für nen Eingabefeld und zwei Buttons kommt man da gut hin. Muss ja nicht immer gleich alles mit animierten Buttons und Skins sein ;)


    Aber wehe, der Benutzer benutzt z.B. große Schriftarten oder komische Auflösungen oder oder oder... .Net3/3.5 mit XAML und ein bisschen C# im "Code Behind" ist um Längen lesbarer.
    Ich schlag mich jetzt schon seit über 10 Jahren mit der Win32-API herum, und es macht einem immer mal wieder Striche durch die Rechnung, weil hier mal ein Handle verloren geht oder da ein Thread etwas macht, was er eigentlich nicht machen können dürfte, es aber nicht abgefangen wird usw...
    Mit WPF kriegst du vorher schon eine Exception, den Dispatcher kann man wunderbar mit kleinen anonymen Methoden füttern, das Design von Oberflächen kann man ohne Größenangaben in einer XML-Datei (XAML) erledigen und es passt immer. Dann noch ein paar Datenfelder über DataBinding verknüpft und das war's. Und noch tausend andere Dinge, die einem das .Net-Framework leichter macht (z.B. Threadpool, Process usw.).


    Wenn man neu anfängt zu lernen, sollte man auch auf was aktuellem starten, Win32-API ist einfach out.


    Aber nichts für ungut, es kommt letztendlich sowieso auf das Problem an, lösen kann man es in jeder Sprache/Umgebung. ;)


    Nur mal eine Idee: Was soll das Programm können? Jeder, der will, kann dann ja mit seiner Lieblingsumgebung eine Lösung erarbeiten und dann vergleichen wir einfach mal bzw. Thovan sagt dann, was ihm am Besten gefällt. ;)


    mini.