Posts by kls

    Wenn wegen so etwas eine Aufnahme ausfällt, findet man das in der Regel nicht lustig…

    Der VDR wurde ja wohl schon mindestens einmal erfolgreich mit dieser Kombination von Plugins gestartet. Wieso sollte es dann bei einem Neustart (mit unveränderter Konfiguration) dazu kommen, dass ein Plugin nicht mehr geladen werden kann?

    Wie wäre es wenn man das einstellbar macht, so wie es ja auch beim Video Data Stream Broken ist?

    VDSB kann irgendwann mal auftreten (sei es wegen Wetter oder sonstigen Problemen). Wenn ein Plugin bereits beim ersten Start nicht geladen werden kann, dann sollte man wirklich den Fehler gleich beheben.

    Eventuell könnte kls das in den VDR übernehmen

    Wenn ein angefordertes Plugin nicht geladen werden kann halte ich es nicht für sinnvoll, den VDR zu starten. Es könnte ja ein Plugin sein, dessen Fehlen zunächst gar nicht auffällt, aber das zu einem späteren Zeitpunkt wichtig ist. Dann lieber gleich gar nicht starten und den Benutzer dazu "zwingen", das Problem zu beheben.

    Recording->numFrames = -1 zu setzen bewirkt lediglich, dass in cRecording::NumFrames() die Länge der Index-Datei neu eingelesen wird und, falls die Aufnahme noch läuft, dies auch weiterhin getan wird, bis die Aufnahme endet. Sollte also keine negativen Auswirkungen haben..

    Würde es gehen, wenn du auch noch das hier machst?

    Ehrlich gesagt habe ich mich gewundert, dass Infos wie FramesPerSecond indirekt über die info-Datei an die Aufnahmeliste übergeben werden.

    Da hast du natürlich grundsätzlich recht. Aber ausser priority, lifetime und framesPerSecond geht es ja auch noch um die ganzen Frame-Parameter (in cRecorder::Action()). Um alle erdenklichen (und evtl. künftigen) Fälle abzudecken müsste man also die Info komplett kopieren - da erscheint es mir einfacher, die Datei neu einzulesen.

    FireFly Der Ablauf ist aber doch

    Code
                          recordingInfo->Write(); 
                          LOCK_RECORDINGS_WRITE; 
                          Recordings->UpdateByName(recordingName); 

    Kann es vielleicht sein, dass st.st_mtime in cRecordingInfo::Read(FILE *f) noch den "alten" Timestamp liefert?

    Kannst du mal diesen Patch ausprobieren? (nur compiliert, nicht getestet)

    Ich bin jetzt nochmal alle möglichen Umschaltungen während der Wiedergabe durchgegangen und komme zu beiliegendem Fazit (Patch gegen Version 2.7.4). Einzig alle Umschaltungen nach "backward" springen auf dem rpihddevice zunächst ca. 6 Sekunden rückwärts, bevor sie wie erwartet laufen. Mit softhddevice passiert das nicht. Ich konnte im VDR selber keinen Grund hierfür finden, liegt vielleicht am rpihddevice.

    Bitte ausführlich testen. Ich würde gerne noch vor Ostern die Version 2.7.5 freigeben.

    Die Funktion

    Code
    bool cOmxDevice::HasIBPTrickSpeed(void) 
    { 
           return !m_hasVideo; 
    }

    soll anscheinend im Falle von reiner Audio-Wiedergabe true liefern, bei Video false. So wie es implementiert ist passiert es aber, dass bei Video-Wiedergabe beim Umschalten von z.B. Play auf FFWD kurzzeitig true geliefert wird, wodurch cDvbPlayer::Action() in den falschen Zweig kommt und erst noch einige non-I-Frames schickt, befor es auf I-Frames umschaltet. Ich habe das hier jetzt mal auf "return false;" geändert, damit tritt der Fehler nicht mehr auf. Sollte evtl. im Plugin so gelöst werden, dass nur bei wirklich reiner Audio-Wiedergabe true geliefert wird.

    Ist mir beim Debuggen hiervon aufgefallen. Hatte dann zwar nichts mit dem eigentlichen Problem zu tun, hat mich aber einige Zeit gekostet, das auszuschließen ;-).

    Soweit ich sehe werden die Daten, die GetVideoSize() in dem einzigen Aufruf in cDvbSubtitleConverter::SetOsdData() liefert, seit Version 1.7.24 nicht mehr benutzt. Man könnte also die Zeile

    cDevice::PrimaryDevice()->GetVideoSize(VideoWidth, VideoHeight, VideoAspect);

    sowie die Deklarationen der Variablen komplett löschen und es würde sich nichts ändern.
    Interessant ist auch, dass es bei der Beschreibung von GetVideoSize() mal hieß

    Code
       virtual void GetVideoSize(int &Width, int &Height, eVideoAspect &Aspect);
             ///< Returns the With, Height and Aspect ratio of the currently
             ///< displayed material. The data returned by this function is
             ///< only used for informational purposes (if any).
             ///< The default implementation returns 0 for Width and Height.

    Mein Fazit: GetVideoSize() kann komplett entfallen, nur GetOsdSize() ist von Bedeutung.