Ich hab die Ausgabe noch auf 1080i stehn, sollte ich mal ändern, sorry
[Prototyp] RPI Ausgabeplugin
- reufer
- Geschlossen
-
-
Ich hab die Ausgabe noch auf 1080i stehn, sollte ich mal ändern, sorry
Kein Problem. Sollte übrigens auch im log stehen:CodeFeb 10 08:47:55 localhost vdr: [2602] rpihddevice: using HDMI video output at 1280x720p [..] Feb 10 08:47:57 localhost vdr: [2629] rpihddevice: decoding video 720x576i, enabling deinterlacer [..] Feb 10 18:07:17 localhost vdr: [2629] rpihddevice: decoding video 1920x1080p, disabling deinterlacer
Gruss
Thomas -
Bei 1080p sieht das deutlich besser aus
-
Noch ein Schönheitsfehler: Bei Servus TV wird die eac3-Tonspur nicht bei Analog-Ausgabe wiedergegeben. Passthrough kann ich im Moment nicht Testen.
-
Das kann auch am channels.conf Eintrag liegen, muss ich Testen
Edit:
Das wars, Test war per streamdev, Filter Streaming eingeschaltet, Ton da.
-
Das kann auch am channels.conf Eintrag liegen, muss ich Testen
Diese Kombination steht (noch) nicht auf meinem Testplan - kann also theoretisch schon sein. Schau ich mir heute Abend noch an...Gruss
Thomas -
s.o.
-
Hier unter Arch Linux ARM läuft es auch gut
Gibt es eine Möglichkeit vom Bild ein paar Zeilen abzuschneiden, um das Flackern der obersten Zeile durch das Teletext-Signal, das auf einigen SD-Sendern auftritt, zu beseitigen?
-
Overscan?
-
ZDF HD wird per streamdev-client als 720i erkannt, warum? (Astra - SAT)
Code... Feb 11 19:02:18 raspberry vdr: [2717] switching to channel 2 Feb 11 19:02:18 raspberry vdr: [2795] cStreamDevice::GetTSPacket: GetChecked: NOTHING (0) Feb 11 19:02:19 raspberry vdr: [2796] TS buffer on device 10 thread ended (pid=2717, tid=2796) Feb 11 19:02:19 raspberry vdr: [2795] buffer stats: 295912 (14%) used Feb 11 19:02:19 raspberry vdr: [2795] receiver on device 10 thread ended (pid=2717, tid=2795) Feb 11 19:02:19 raspberry vdr: [2797] receiver on device 10 thread started (pid=2717, tid=2797, prio=high) Feb 11 19:02:19 raspberry vdr: [2798] TS buffer on device 10 thread started (pid=2717, tid=2798, prio=high) Feb 11 19:02:19 raspberry vdr: [2797] rpihddevice: set video codec to H264 Feb 11 19:02:19 raspberry vdr: [2730] rpihddevice: decoding video 1280x720i, enabling deinterlacer
ARD HD funktioniert dagegen...
Code
Alles anzeigen... Feb 11 19:09:24 raspberry vdr: [2281] switching to channel 1 Feb 11 19:09:25 raspberry vdr: [2413] cStreamDevice::GetTSPacket: GetChecked: NOTHING (0) Feb 11 19:09:25 raspberry vdr: [2414] ERROR (device.c,1753): Ungültiger Dateideskriptor Feb 11 19:09:25 raspberry vdr: [2414] TS buffer on device 10 thread ended (pid=2281, tid=2414) Feb 11 19:09:25 raspberry vdr: [2413] buffer stats: 415856 (19%) used Feb 11 19:09:25 raspberry vdr: [2413] receiver on device 10 thread ended (pid=2281, tid=2413) Feb 11 19:09:25 raspberry vdr: [2415] receiver on device 10 thread started (pid=2281, tid=2415, prio=high) Feb 11 19:09:25 raspberry vdr: [2416] TS buffer on device 10 thread started (pid=2281, tid=2416, prio=high) Feb 11 19:09:25 raspberry vdr: [2415] rpihddevice: set video codec to H264 Feb 11 19:09:26 raspberry vdr: [2304] rpihddevice: decoding video 1280x720p, disabling deinterlacer
-
Hallo Thomas,
vielen Dank für die neue Version. Bei SD klemmt's hier aber noch - es kommt immer zum "buffer stall" (3=RTL, 4=Sat1, 5=Pro7)
Code
Alles anzeigenFeb 11 19:21:20 raspberrypi vdr: [2186] switching to channel 3 Feb 11 19:21:21 raspberrypi vdr: [2205] cStreamDevice::GetTSPacket: GetChecked: NOTHING (0) Feb 11 19:21:21 raspberrypi vdr: [2206] ERROR (device.c,1766): Ungültiger Dateideskriptor Feb 11 19:21:21 raspberrypi vdr: [2206] TS buffer on device 1 thread ended (pid=2186, tid=2206) Feb 11 19:21:21 raspberrypi vdr: [2205] buffer stats: 336520 (16%) used Feb 11 19:21:21 raspberrypi vdr: [2205] receiver on device 1 thread ended (pid=2186, tid=2205) Feb 11 19:21:21 raspberrypi vdr: [2207] receiver on device 1 thread started (pid=2186, tid=2207, prio=high) Feb 11 19:21:21 raspberrypi vdr: [2208] TS buffer on device 1 thread started (pid=2186, tid=2208, prio=high) Feb 11 19:21:22 raspberrypi vdr: [2207] rpihddevice: set video codec to MPEG2 Feb 11 19:21:22 raspberrypi vdr: [2197] rpihddevice: decoding video 720x576i, enabling deinterlacer Feb 11 19:21:28 raspberrypi vdr: [2197] rpihddevice: buffer stall! Feb 11 19:21:31 raspberrypi vdr: [2186] switching to channel 4 Feb 11 19:21:32 raspberrypi vdr: [2207] cStreamDevice::GetTSPacket: GetChecked: NOTHING (0) Feb 11 19:21:32 raspberrypi vdr: [2208] ERROR (device.c,1766): Ungültiger Dateideskriptor Feb 11 19:21:32 raspberrypi vdr: [2208] TS buffer on device 1 thread ended (pid=2186, tid=2208) Feb 11 19:21:32 raspberrypi vdr: [2207] buffer stats: 112988 (5%) used Feb 11 19:21:32 raspberrypi vdr: [2207] receiver on device 1 thread ended (pid=2186, tid=2207) Feb 11 19:21:32 raspberrypi vdr: [2209] receiver on device 1 thread started (pid=2186, tid=2209, prio=high) Feb 11 19:21:32 raspberrypi vdr: [2210] TS buffer on device 1 thread started (pid=2186, tid=2210, prio=high) Feb 11 19:21:33 raspberrypi vdr: [2209] rpihddevice: set video codec to MPEG2 Feb 11 19:21:33 raspberrypi vdr: [2197] rpihddevice: decoding video 720x576i, enabling deinterlacer Feb 11 19:21:49 raspberrypi vdr: [2197] rpihddevice: buffer stall! Feb 11 19:21:51 raspberrypi vdr: [2186] switching to channel 5 Feb 11 19:21:51 raspberrypi vdr: [2209] cStreamDevice::GetTSPacket: GetChecked: NOTHING (0) Feb 11 19:21:51 raspberrypi vdr: [2210] TS buffer on device 1 thread ended (pid=2186, tid=2210) Feb 11 19:21:51 raspberrypi vdr: [2209] buffer stats: 161868 (7%) used Feb 11 19:21:51 raspberrypi vdr: [2209] receiver on device 1 thread ended (pid=2186, tid=2209) Feb 11 19:21:51 raspberrypi vdr: [2211] receiver on device 1 thread started (pid=2186, tid=2211, prio=high) Feb 11 19:21:51 raspberrypi vdr: [2212] TS buffer on device 1 thread started (pid=2186, tid=2212, prio=high) Feb 11 19:21:52 raspberrypi vdr: [2211] rpihddevice: set video codec to MPEG2 Feb 11 19:21:52 raspberrypi vdr: [2197] rpihddevice: decoding video 720x576i, enabling deinterlacer Feb 11 19:22:10 raspberrypi vdr: [2197] rpihddevice: buffer stall!
Gruß, ollo
-
Hallo zusammen
ZDF HD wird per streamdev-client als 720i erkannt, warum? (Astra - SAT)
Stimmt, das ist bei mir auch so. Das Erste HD wie auch SRF1 HD und SRF2 HD werden vom Decoder aber richtig erkannt. Entweder ist das ein Firmware-Bug oder ZDF HD sendet hier was komisches im Stream... sind hier Experten anwesend, die sich dazu äussern können?
Bei SD klemmt's hier aber noch - es kommt immer zum "buffer stall" (3=RTL, 4=Sat1, 5=Pro7)
Das kann ich bei mir nicht nachvollziehen. Allerdings vermisse ich die Audio-Traces - hast du die absichtlich gekürzt, oder fehlt da wirklich der Ton? Das von dir beschriebene Verhalten liesse sich erklären, wenn Audio-Pakete kommen, aber vom Parser verworfen werden. In dem Fall würde der Clock gestartet, aber es kommen nie Audio-Frames beim Render an die den Takt nachführen. Dann würden die decodierten Video-Frames im Scheduler "verhungern", d.h. ein Buffer-Stall wird detektiert.
Worüber schaust du denn fern? (Sat, Kabel, ...?)
Gruss
Thomas -
Gibt es eine Möglichkeit vom Bild ein paar Zeilen abzuschneiden, um das Flackern der obersten Zeile durch das Teletext-Signal, das auf einigen SD-Sendern auftritt, zu beseitigen?
Ja, sogar mehrere. Die einfachste, aber auch unklügste wäre, den Overscan in der config.txt zu setzen. Allerdings würde dieser auch für HD-Material gelten und das Bild nicht mehr pixelgenau angezeigt.Besser wäre, bei SD-Material die Display Region entsprechend anzupassen, und vom SD-Frame ein paar Prozent abzuschneiden. Das sollte aber auch nur passieren, wenn die Ausgabe über HDMI in einem HD-Format erfolgt, bei Composite oder 576p sollte das Signal meiner Meinung nach nicht beschnitten werden. Das liesse sich implementieren, aber es fehlt das eindeutige Kriterium für SD, also "zu beschneidendes" Ausgangsmaterial... Anzahl Zeilen kleiner gleich 576?
Gruss
Thomas -
Hallo Reufer
erstmal - super Arbeit - neben vielen Verbesserungen begeistert mich vor allem dass alte PES Aufnahmen nun wesentlich besser laufen.
Was ich noch fragen wollte - du schreibst:
Bedeutet das, dass 4:3 Aufnahmen in 16:9 abgespielt werden können - oder habe ich das falsch verstanden ?
CU
GTR
-
Hallo Thomas,
so, ich möchte nochmal herzlichen Dank für dieses Plugin sagen. Inzwischen funktioniert es ganz hervorragend. Von Zeit zu Zeit gibt es nochmal einen Ruckler, aber im Großen und Ganzen ist es schon erstaunlich stabil.
Ich habe manchmal allerdings noch einen Crash des vdr, wenn ich aus der Wiedergabe einer Aufnahme stoppe. Dann wird die Aufnahme weiter abgespielt, aber der vdr reagiert nicht mehr. Wenn man einige Minuten wartet, kann es sein, dass er tatsächlich die Wiedergabe beendet und wieder läuft. Aber wenn man das nicht abwarten will, bleibt nichts als ihn zu killen.
BTW: Zu dem Pause (StillImage) Problem hätte ich einen Workaround, aus den dvbhddevice abgeguckt. Das Problem ist wohl, dass "StillImage" vom vdr aufgerufen wird, aber der Buffer noch gefüllt ist. Normalerweise ist das kein Problem, da man ja pausiert, bzw. Freezed. Dennoch scheint bei aktiviertem BufferStall nach dem Reset der Buffer weiter abgearbeitet zu werden, bis er leer ist, trotz freeze. Wenn man nun eine Binärvariable einführt, die bei PlayVideo etc und vor allem bei HandleBufferStall abgefragt wird, dann kann man im Pause-Zustand den Reset verhindern. Wird fortgesetzt, wird die Variable wieder auf Null gesetzt:
Diff
Alles anzeigendiff -urN rpihddevice-0.0.8.ori/omxdevice.c rpihddevice-0.0.8/omxdevice.c --- rpihddevice-0.0.8.ori/omxdevice.c 2014-02-10 21:19:52.000000000 +0100 +++ rpihddevice-0.0.8/omxdevice.c 2014-02-11 22:23:54.825678152 +0100 @@ -19,6 +19,7 @@ cOmxDevice::cOmxDevice(void (*onPrimaryDevice)(void)) : cDevice(), + m_pause(false), m_onPrimaryDevice(onPrimaryDevice), m_omx(new cOmx()), m_audio(new cAudioDecoder(m_omx)), @@ -127,6 +128,7 @@ switch (PlayMode) { + m_pause = false; case pmNone: ResetAudioVideo(true); m_omx->StopVideo(); @@ -166,6 +168,8 @@ int cOmxDevice::PlayAudio(const uchar *Data, int Length, uchar Id) { + if (m_pause) + return -1; if (m_skipAudio) return Length; @@ -199,6 +203,8 @@ int cOmxDevice::PlayVideo(const uchar *Data, int Length, bool singleFrame) { + if (m_pause) + return -1; m_mutex->Lock(); int ret = Length; @@ -348,6 +354,7 @@ void cOmxDevice::Play(void) { + m_pause = false; DBG("Play()"); m_mutex->Lock(); ResetAudioVideo(); @@ -357,6 +364,7 @@ void cOmxDevice::Freeze(void) { + m_pause = true; DBG("Freeze()"); m_mutex->Lock(); m_omx->SetClockScale(0.0f); @@ -367,6 +375,7 @@ #if APIVERSNUM >= 20103 void cOmxDevice::TrickSpeed(int Speed, bool Forward) { + m_pause = false; DBG("TrickSpeed(%d, %sward)", Speed, Forward ? "for" : "back"); m_mutex->Lock(); ApplyTrickSpeed(Speed, Forward); @@ -375,6 +384,7 @@ #else void cOmxDevice::TrickSpeed(int Speed) { + m_pause = false; DBG("TrickSpeed(%d)", Speed); m_mutex->Lock(); m_audioPts = 0; @@ -439,10 +449,12 @@ void cOmxDevice::HandleBufferStall() { + if (!m_pause) { ELOG("buffer stall!"); m_mutex->Lock(); ResetAudioVideo(); m_mutex->Unlock(); + } } void cOmxDevice::ResetAudioVideo(bool flushVideoRender) diff -urN rpihddevice-0.0.8.ori/omxdevice.h rpihddevice-0.0.8/omxdevice.h --- rpihddevice-0.0.8.ori/omxdevice.h 2014-01-28 08:27:34.000000000 +0100 +++ rpihddevice-0.0.8/omxdevice.h 2014-02-11 21:30:47.172751203 +0100 @@ -40,6 +40,8 @@ virtual bool SetPlayMode(ePlayMode PlayMode); + bool m_pause; + virtual void StillPicture(const uchar *Data, int Length); virtual int PlayAudio(const uchar *Data, int Length, uchar Id);
Was hältst Du davon?
Viele Grüße
Tim
EDIT: Patch korrigiert, sodass die Funktion StillPicture() nicht angefasst wird.
-
Hi GTR
Bedeutet das, dass 4:3 Aufnahmen in 16:9 abgespielt werden können - oder habe ich das falsch verstanden ?
Nein, das bedeutet, dass auf einem 4:3-Monitor 16:9-Material entsprechend dem VDR-Setup entweder in Letterbox oder mittels center cut out angezeigt wird.
Du meinst wahrscheinlich sowas wie "auto fill", d.h. ein 4:3-Bild auf 16:9 zu strecken - das unterstützt der VDR momentan (noch) nicht.
Gruss
Thomas -
Hallo Reufer
ja - richtig - nutzt man eine FF DVB-S Karte kann man das ja entsprechend konfigurieren - oder auch beim XINE Plugin geht das - aber ich bin kein Programmieren (zumindest nicht in dieser sprache) ...
Ich bin das halt nicht gewohnt habe hier noch 2 VDR´s mit FF Karten und 2 mit Xine Plugin und ich mag die schwarzen Streifen seitlich nicht - auch wenn das natürlich eine verschlechterte Bildqualität beduetet ....CU
GTR -
Hi Tim
Ich habe manchmal allerdings noch einen Crash des vdr, wenn ich aus der Wiedergabe einer Aufnahme stoppe. Dann wird die Aufnahme weiter abgespielt, aber der vdr reagiert nicht mehr. Wenn man einige Minuten wartet, kann es sein, dass er tatsächlich die Wiedergabe beendet und wieder läuft. Aber wenn man das nicht abwarten will, bleibt nichts als ihn zu killen.
Sowas ist bei mir noch nie passiert - kannst du das irgendwie bewusst reproduzieren?
BTW: Zu dem Pause (StillImage) Problem hätte ich einen Workaround, aus den dvbhddevice abgeguckt. Das Problem ist wohl, dass "StillImage" vom vdr aufgerufen wird, aber der Buffer noch gefüllt ist. Normalerweise ist das kein Problem, da man ja pausiert, bzw. Freezed. Dennoch scheint bei aktiviertem BufferStall nach dem Reset der Buffer weiter abgearbeitet zu werden, bis er leer ist, trotz freeze. Wenn man nun eine Binärvariable einführt, die bei PlayVideo etc und vor allem bei HandleBufferStall abgefragt wird, dann kann man im Pause-Zustand den Reset verhindern. Wird fortgesetzt, wird die Variable wieder auf Null gesetzt:
Danke für den Tipp, aber ich denke nicht, dass es daran liegt. Denn der Buffer Stall tritt auch auf, wenn der VDR pausiert ist und der Reset nach einem Buffer-Stall ist nicht das eigentliche Problem, sondern dessen Lösung.Aus einem mir noch nicht gänzlich erklärbaren Grund muss ich für ein StillImage das Videopaket mehrmals an den Decoder schicken - inzwischen vermute ich, dass erst dann der Clock richtig anläuft. Sobald dann ein decodiertes Frame bis zum Video-Render durchgeflutscht ist, bleiben die restlichen wohl im Decoder, da deren PTS identisch ist. Werde das aber noch genauer analysieren...
Gruss
Thomas -
ja - richtig - nutzt man eine FF DVB-S Karte kann man das ja entsprechend konfigurieren - oder auch beim XINE Plugin geht das - aber ich bin kein Programmieren (zumindest nicht in dieser sprache) ...
Ich bin das halt nicht gewohnt habe hier noch 2 VDR´s mit FF Karten und 2 mit Xine Plugin und ich mag die schwarzen Streifen seitlich nicht - auch wenn das natürlich eine verschlechterte Bildqualität beduetet ....
Die Einstellungen im VDR stammen zwar ursprünglich aus den Zeiten der SD-FF, sind aber Teil des VDR-APIs und gelten somit eigentlich für alle Ausgabedevices - die xine-Varianten oder das SoftHDDevice benutzen eigene Implementationen in ihren Setup-Menüs und ignorieren die Einstellungen des VDR.Ich will das Setup des Plugins aber möglichst einfach halten und verzichte deshalb momentan aufs Strecken, werde dies aber übernehmen, sobald der VDR diese Option auch anbietet (werde dafür Klaus einen Vorschlag unterbreiten).
Gruss
Thomas -
Hallo Reufer
danke für die Info.
Eine Frage: hast du es denn "technisch" schon probiert ? (also hard-coded)
Nur damit man vorab klärt ob der RPI damit zurecht kommt ...
CU
GTR
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!