Beiträge von pram

    Da könnte ich direkt mal wieder meinen VDR erweitern.
    Momentan kann der nur den Türöffner betätigen :D


    Momentan hängt an dem noch freien seriellen Port ein Relais, das über eine Taste auf der FB angesteuert wird. (Ausserdem kann ich es auch über ISDN ansteuern, wenn meine Handy-Nr übertragen wird ;D )


    Zu den Funkmodulen: Das Protokoll ist meist sehr einfach, bzw. ähnlich dem von IR-FB (wenn man nicht gerade eine Wechselcode-FB hat) und könnte evtl. sogar mit LIRC funktionieren.


    Roland

    Hi gEistiO


    Habe die neue Version mal hier hochgeladen. Kannst dir ja mal anschauen was ich so alles gemacht habe.


    Ich habe im Moment aber wenig Zeit, so dass ich wahrscheinlich erst nächstes Jahr Anfang Februar wieder weiter coden kann.
    Fragen usw. beantworte ich aber gerne, soweit ich kann.


    Gruß
    Roland

    Zitat


    Warum gibt die Ausgabe unter lspci geforce3 wenn da ne geforce4 eingebaut ist? Hab das Modell leider nicht


    Steht aber da: "Unknown device 0171"
    Ich hab eine NV17, Erkannt werden nur NV10 und NV20 (und noch ein paar andere)


    Zitat


    Hat DirectFB nicht ne Transparenz-Funktion?


    Ich möchte nur Funktionen verwenden, die die Graka unterstützt. Wenn ich z.B. die Transparenz-Fkt verwenden würde, so würden alle bereits beschleunigten Fkt. wieder in Software emuliert, da die Kombination Transparenz und Overlay in der Kombination nicht unterstützt wird (glaube ich)


    ich werde heute noch ein wenig rum probieren, habe mir mal den vesa-code vom mplayer angeschaut. Soweit ich sehe wird da die Vesa Routine vom Bios aufgerufen. D.h. man kann alle Vídeo-Modi einstellen die die Graka (bzw. der Vesa-Treiber) anbietet. (Evtl braucht man dazu nicht mal FB-Unterstützung vom Kernel) Mal schaun....


    Ich hab übrigens ne Celeron 2GHz CPU. Dekodiert habe ich jeweils ein VDR-File mit 704x576 er Auflösung.


    Roland

    Es gibt wieder Probleme....
    Habe heute meine Geforce 4 installiert


    1. Die Geforce 4 wird nicht vom Framebuffer unterstützt. Zumindest habe ich mich den halben Tag lang gespielt.
    (Wenn beim Laden von rivafb.o "no such device" oder so kommt muss man in der video/riva/fbdev.c eine deviceID ersetzen, z.B.
    PCI_DEVICE_ID_NVIDIA_GEFORCE3_2 -> 0x0171
    die DeviceID bekommt man mit lspci, z.B.:
    01:00.0 VGA compatible controller: nVidia Corporation: Unknown device 0171 (rev a3) )
    Danach konnte ich das Modul laden, allerdings...


    2. wird die Geforce von DirectFB 0.9.20 kaum unterstützt. D.h. Hardwarebeschleunigung :abgelehnt
    und die CVS Version compiliert bei mir nicht :wand
    (Mit der Matrox hätte schon alles perfekt bis auf die Transparenz im OSD)


    3. Habe ich mal ne Frage, welche Treiber z.B. mplayer bei euch verwendet.
    gebt mal mplayer -vo help ein und probiert mal alle durch.
    Mich würde neben dem Treiber auch die CPU-Last interessieren.
    Bei mir (Karte Geforce 4, VesaFB)
    SDL 95% CPU
    SvgaLib 45% CPU
    Vesa 25% <- Vielleicht ist das das richtige Pferd *freu*
    (bei mir gibt mplayer da die Zeile aus: VO: [vesa] 704x576 => 768x576 Mpeg PES, heißt das das das MPEG direkt von der Graka dekodiert wird? *nochmalfreu*)
    fbdev 60%



    Gruß
    Roland

    Zitat


    1.) Das größte Problem stellt mit Sicherheit der Sync dar. So wie ich das die ganze Zeit verstanden hab ist das Problem dabei, dass dies für alle Chipsätze und AKrtenvarianten anders aussieht. Wenn ich mich recht errinnere ist etwas ähnliches für VDR auch schon einmal probiert worden. (Ich hatte es ganz versteckt über die DVB-Mailingliste gefunden) . Damals war das ganze eine vollständig gepatchte VDR-Version 1.0, die bereits einen Sync für Matrox-Karten hinbekommen hatte.


    Also es gibt 2 Sync-Probleme:
    1. A/V Sync, dass Ton und Bild nicht zueinander passen
    2. VideoSync. Kurz gesagt: Das bild muss mit der gleichen Frequenz in den Videospeicher geschrieben werden, wie es der TV anzeigt. ansonsten vertauschen sich irgendwann mal die 2 Halbbilder (steht aber auf http://df-gp.sourceforge.net/ nochmal verständlich)


    Zitat


    2.) Deinterlacing
    Auch ein umfangrieches Problem. Aber vermutlich deutlich einfacher zu lösen.
    Grundlegend ist vielleicht ein Blick auf TVTime ganz hilfreich, welches die Deinterlacing-Sourcen von DSCaler (Windows) verwenden soll, die grundlegend schon recht gut sind.


    Meine Matrox kann das in Hardware :) (allerdings hab ich noch nicht raus gefunden warum es in höheren Auflösungen nicht geht :computertod)


    Zitat


    Ansonsten weiter so, ich werd das ganze Mal am WE testen und schauen, dass ich das unter Mulimidix zum Laufen krieg. (Brauch ich dafür eigentlich X?)


    Nein. Du brauchst nur www.directfb.org (und DFB++)


    Gn8
    Roland

    Also ich geb mal einen kurzen Statusbericht, was jetzt alles funktioniert:


    Bild und Ton laufen syncron. Zumindest wird er immer wieder Nachsyncronisiert. Das Klickt halt ein bisschen (v.a. die ersten 2-3 Sekunden nach dem Programmwechsel)


    Farbraumkonvertierung, Skalierung und OSD ist jetzt hardwarebeschleunigt (über DirectFB und DFB++)
    Leider unterstützt aber meine Matrox Karte kein Alpha Blending mit dem Videolayer, deshalb ist mein OSD nicht mehr durchsichtig. (Das stört aber nicht wirklich, Siehe Bilder )
    Ausserdem sind die einzigen Auflösungen die momentan funktionieren 768x576 und 640x480.


    Ich baue morgen mal meine nvidia Karte ein, dann schau ich mal was die von meinem Plugin hält und ob ich sie vielleicht überreden kann, damit zu arbeiten ;D
    (Dann sollte es auch ohne großen Akt auf der Xbox laufen)


    Morgen gibt's dann evtl wieder eine Version zum Testen...
    Aber ich geh jetzt erst mal ins Bett


    Gn8
    Roland

    Hi Frank,


    Man sollte vorher alles testen...:
    tmp=Data[i];
    Data[i]=Data[i+1];
    Data[i+1]=tmp; // Hier muss TMP stehen


    Vielleicht klappts dann. ich weiß momentan wirklich nicht woran es hakt, evtl ist die XBox Hardware auch nicht 100%ig Alsa Kompatibel.
    Evtl kannst auch mal die Version 0.0.1 testen, da hatte ich noch die Methode implementiert, alles per pipe an "aplay" zu schicken. Bzw. ob du an der Xbox eine Soundausgabe mit aplay hin bekommst. (allerdings noch kein AVsync)
    Die Meldung Error: Ringbufferoverflow... bedeutet, dass die Videoframes zu langsam dekodiert werden. Das kann 1. durch eine zu langsame Hardware passieren oder 2. durch einen Fehler in der AV-Syncronisation.
    (Ab Frame 225 ist es aber wieder rel. stabil gelaufen bei dir)
    Wie ich bereits geschrieben habe, möchte ich das ganze erst noch hardwarebeschleunigen (also installiert schon mal alle DirectFB ;D )
    Ich möchte das erst mal stabil zum Laufen bekommen, dann kümmere ich mich um Sachen wie A/V Sync. Vielleicht finden wir inzwischen auch noch eine Lsg für das Tonproblem


    @Frank
    Wenn mir das Christkind keine Xbox bringt, nehm ich dein Angebot natürlich an :D


    Gruß
    Roland

    Hi Michael,


    ich arbeite momentan an der Implementierung von DirectFB.
    Zuerst wollte ich eigentlich Vidix verwenden, da war mir aber die Lösung mit dem OSD zu kompliziert (mit DFB ist's aber auch nicht wirklich einfacher, da meine Matrox wahrscheinlich keine Layer mit alpha-blending unterstützt)
    Der erste Quickhack (verwendet wurde noch die Vidix Library) konnte auf 1280x1024 hochskalieren bei 20% CPU-Last :bounce1


    Wenn die Version fertig ist (denke mal dass ich zum WoEnde hin was anbieten kann) werd ich bestimmt noch Hilfe brauchen, da ich das nicht für alle Grakas's testen kann. (Hab nur ne Matrox G200 und eine Geforce 4 MX zum Testen hier)


    Mit eurem Soundproblem kann ich euch momentan nicht wirklich helfen. Ihr könnt mal versuchen am PCM_FMT in der audio.c rumzuspielen ( SND_PCM_FMT_S16_BE o.ä)
    Wenn das nix hilft mal folgenden Code in die Write-Funktion am Anfang einfügen
    [code]
    uchar tmp;
    for (int i=0; i < Length; i+=2) {
    tmp=Data[i];
    Data[i]=Data[i+1];
    Data[i+1]=Data[i];
    }
    [\code]
    (der sollte die Bits umdrehen)



    Ist echt blöd wenn man das nicht selber testen kann....


    Gruß
    Roland


    p.s.
    Um gleich vorweg Missverständnisse zu klären, ich arbeite momentan an einer HW-Unterstützung für die Farbraumkonvertierung (YUV->RGB) und Skalierung. Die Dekodierung des MPEG's erledigt nach wie vor der Prozessor. Eine Unterstützung von HW-Decodern (wie der CLE266 auf dem Epia-Board) ist vorerst (noch) nicht geplant. Da müsste mir wer behilflich sein, der so ein Board hat.

    Hi Frank,


    kann es sein, dass die Xbox ein wenig zu langsam ist?
    Stottert der Ton von Anfang an?
    Kannst du mal folgendes probieren:


    1. Schau mal wie hoch die Prozessorlast steigt, wenn du was abspielst. Wenn diese > 80% ist dann klammere mal folgende Zeilen (Zeile 310) in der mpeg2decoder.c aus:
    [code]
    videoOut->YUV(picture->data[0], picture->data[1],picture->data[2],
    context->width,context->height,picture->linesize[0],picture->linesize[1]);
    [\code]
    (jetzt ist zwar der Videooutput deaktiviert und man sieht kein Bild mehr, aber das Dekodieren des MPEG's sollte jetzt um einiges schneller gehen)
    Wenns jetzt geht, dann musst auf die nächste Version warten. die verwendet dann (hoffentlich) hardware unterstützte Funktionen der Grafikkarte.


    2. Stottert der Ton jetzt immer noch? Wenn ja dann noch an dem Füllwert für den Audiopuffer rum drehen. (Zeile 162 in der mpeg2decoder.c)
    [code]
    if (delay < 100) { // if we have less than 100 ms in buffer we double frames
    [\code]


    Vielleicht klappts.


    Gruß
    Roland

    ja, bzw. es wird direkt aufm Framebuffer ausgegeben. Leider kommt es zu dem von dir beschriebenen Effekt, wenn gleichzeitig eine Konsole auf den FB zugreift.



    Gruß
    Roland

    Hi Ollo,
    kann es sein dass sich das OSD mit jeder Zeile nach oben verschiebt die auf der Konsole ausgegeben wird?


    Schalte mal mit Alt+F? auf eine andere Konsole um


    Gruß
    Roland

    Hi Flatul,


    das mit der Xbox würde mich brennend interessieren. VDR soll ja schon drauf laufen. Leider habe ich (noch) keine Xbox damit ich das testen kann. Kannst du mir mal genau beschreiben, was nicht geht. (Bis jetzt scheint's wirklich noch niemand zum Laufen gebracht haben)


    - Welche Auflösung(en) unterstützt die Xbox (was sagt jeweils fbset -i)
    - Welche Fehlermeldungen/Fehlfunktionen gibt das Plugin aus (sind z.B. die Farben vertauscht o.ä.)
    - Was sagt z.B Mplayer (mit der Option -vo fbdev) beim Abspielen auf der Xbox. Wichtig wäre hier die Zeile:
    VO: [fbdev] 480x480 => 640x480 BGR 32-bit
    oder
    VO: [fbdev] 704x576 => 768x576 BGR 32-bit


    (Alternativ. Welche Videotreiber werden von Mplayer auf der Xbox unterstützt? Ich plane irgend wann mal in meinen Plugin Sachen wie z.B. Skalieren usw der Graka machen zu lassen -> geringere Prozessorlast, wahrscheinlich mit dem vidix Treiber)


    btw. meine fbset -i Ausgabe:
    [code]
    mode "768x576-60"
    # D: 38.313 MHz, H: 36.839 kHz, V: 59.999 Hz
    geometry 768 576 768 576 32
    timings 26101 144 16 28 6 112 4
    accel true
    rgba 8/16,8/8,8/0,8/24
    endmode


    Frame buffer device information:
    Name : MATROX
    Address : 0xfd000000
    Size : 8384512
    Type : PACKED PIXELS
    Visual : TRUECOLOR
    XPanStep : 8
    YPanStep : 1
    YWrapStep : 0
    LineLength : 3072
    MMIO Address: 0xf7800000
    MMIO Size : 16384
    Accelerator : Matrox G200 (Millennium, Mystique)
    [\code]

    Hi jarny,


    ja das geht, man kann mittels "nvtv --tv-on" auf TV umschalten. Ich habe momentan aber keine nvidia Karte drin zum Testen. Man sieht dann auf dem TV das gleiche was zuvor am Monitor war. Wichtig: es können nicht alle Auflösungen für TV-Out verwendet werden! Bei mir klappte es damals nur mit 640x480 800x600 und 768x576. 768x576 lieferte zwar die beste Bildqualität (ich hatte damals glaub ich sogar mal das GUI unter X11 gestartet) aber der Windowmanager kam dann nicht mehr zurecht, weil das GUI einfach die Auflösung von 800x600 auf 768x576 änderte


    Gruß
    Roland

    Hi,


    lade mal VDR ohne weitere Plugins, dann setze PrimaryDVB im Setup von VDR auf das Softdevice (ist dann vermutl. 2 wenn du eine DVB-Karte hast)


    Das mit dem Live-Signal ist noch so eine Sache, da hab ich noch das Problem, dass der Transfermode manchmal nicht gestartet wird. d.H. man muss ein wenig hin und her zappen dann gehts auf einmal :computertod . Du kannst auch mal versuchen, eine Aufzeichnung abzuspielen. Das sollte auf alle Fälle gehen, wenn das OSD funktioniert.


    Würde mich freuen wenns endlich mal bei wem anders klappt als bei mir ;(


    Roland

    Hi,


    wenn ihr mich mit den entsprechenden Routinen versorgen könnt, bau ich alles ein. (Wobei ein Deinterlacer in erster Linie wirklich nicht schlecht wäre, weil die Bilder aufm Monitor doch ziemlich verfranst aussehen)


    zum DIRECTCOLOR-Problem. Soweit ich auf die Schnelle gesehen habe, unsterstützt Directcolor nur 256 Farben über eine Palette.
    (obwohl in deinem Output steht dass die Pixel 32 Bit breit sind !?!)


    Spiel mal mit dem fbset Befehl rum.
    z.B. mit "fbset -depth 32" oder so.


    Alternativ kommentier einfach mal das "Exit" unterhalb der Zeile wo die Fehlermeldung ausgegeben wird in der video.c aus


    Gn8


    Roland