Posts by zork

    Was haltet ihr davon, wenn man das direkt in dvbplayer.c fixt:

    Code
               if (dropFrame) {
    -             if (!eof || (playDir != pdForward && dropFrame->Index() > 0) || (playDir == pdForward && dropFrame->Index() < readIndex)) {
    +             if (!eof || !DeviceIsPlayingVideo() || (playDir != pdForward && dropFrame->Index() > 0) || (playDir == pdForward && dropFrame->Index() < readIndex)) {
                    ringBuffer->Drop(dropFrame); // the very first and last frame are continuously repeated to flush data through the device
                    dropFrame = NULL;
                    }

    Bei reinen Audio-Aufnahmen gibt es kein Standbild – das wiederholte letzte Frame schickt hier nur das letzte Audio-Frame erneut raus. Neu: Wenn das Gerät kein Video wiedergibt (DeviceIsPlayingVideo()), werfen wir das letzte Frame weg statt es zu wiederholen. Der VDR stoppt am Ende wie bisher von selbst.

    Has anyone tested radio playback with these updates?

    I recorded a minute and a half of DVD-T radio.
    Yes, the radio recording plays. But with softhddevice about half a minute before the end, the progress bar stops and doesn't go to the end. Once the sound is finished, digital noise comes from the buffer, and playback doesn't stop until I press the stop button. I have the same problem with vaapivideo: although the progress bar shows correctly, playback doesn't stop until I press stop.

    You are right! VDR decides a recording is finished when the playback clock stops moving, but for radio vaapivideo kept re-decoding the last frame VDR repeats at EOF, so the audio clock never went quiet. my fix: on replay, vaapivideo now recognises that repeated tail packet and drops it, so the clock stalls and VDR stops the recording by itself.

    Here is my commit message: github - vaapivideo

    Release 1.7.4

    mediaplayer resume bookmark, demux thread-safety, audio-only trick play

    • Mediaplayer: persist a single resume bookmark to setup.conf (vaapivideo.BookmarkUri / BookmarkPositionMs). Every stop saves the current position; relaunching the same file resumes exactly there. Playlists and network streams bookmark only the origin URI; the file browser reopens on the bookmark with the cursor on the file
    • Mediaplayer: save the bookmark from every teardown path (Stop, EOF, channel switch, shutdown, SVDRP replace) -- inline on the main thread, deferred to Housekeeping() for the off-thread SVDRP case, with dirty-flag retry on a failed setup.conf write
    • Mediaplayer: make GetIndex/FramesPerSecond/MakeBookmark lock-free via cached duration/fps atomics so the VDR main loop never blocks behind a stalled demux read; stop holding sourceMutex across avformat_open_input; slim the player State enum to {Running, Eof, Stopped}, dropping dead cross-thread writes
    • Radio (audio-only) trick play: HasIBPTrickSpeed() now tracks whether video is playing, so fast-forward on a video-less recording no longer runs to EOF in a second; trick steps are paced on the decoder deadline and the slow-forward hold is derived from the PTS step
    • Radio replay: GetSTC() falls back to the trick-step PTS then the audio clock when no video frame stamped a position, so audio-only replays report a valid STC in trick modes and resume at their real position instead of a stale one
    • Trick pacing: close the lock-free memory-ordering gaps on the radio path (acquire-load trickSpeed before the pacing flags; reset trickAudioPts before the release-store) and reset trick position state on every exit path
    • Docs: document the new setup.conf bookmark keys (README) and the mediaplayer feed-pacing constants (AVSYNC.md)

    Bestünde trotzdem die Chance libplacebo für die SD Aufbereitung zu implementieren?
    Meinem Verständnis nach ist das SD Bild deshalb mit softhdcuvid und Nvidia besser.

    Was soll an libplacebo besser sein? Da wird auch VAAPI genutzt, sie kann allerdings Shader mit OpenGL integrieren, das ist aber eine andere Architektur, als die ich nutze. Ich habe ja hochwertige Deinterlacer von ffmpeg integriert, wenn du die jetzt aktivierst, ist der Bildeindruck bei Dir besser?

    Tipp zum Mediaplayer im vaapivideo-Plugin:

    Der im vaapivideo-Plugin integrierte Mediaplayer kann auch alle Audio- und Video-Formate wiedergeben.
    So konnte ich u.a. Videos mit Dolby-Vision und Dolby-Atmos einwandfrei über den VDR wiedergeben.
    Wobei das Dolby-Vision als HDR10 angezeigt wurde (der Intel-Chip kann kein Dolby-Vision), der Ton kam im feinsten Dolby-Atmos!
    Das finde ich schon echt Klasse und hat mich doch erstaunt.
    zork tolle Arbeit die Du hier geleistest hat! :thumbup::thumbup::thumbup:

    Dolby Vision habe ich soweit umgesetzt, wie es technisch geht. Pures DV wird niemals gehen, das fehlt in der VAAPI Spezifikation, aber der Downgrade auf die nächste Stufe geht.

    SD: Weil SD für Inhalte von DMAX und Co völlig reicht ;). Die Sender mittlerweile auch SD mit höheren Bitraten beschicken, die neuen TVs besser hochskalieren und damit bei z.B. 67" auf 4m Abstand der Unterschied geringer ausfällt !

    Das ist natürlich alles Geschmacksache, aber dass SD Fernsehen und auch Interlaced Content eine Technologie aus dem letzten Jahrtausend ist, ist unbestreitbar. Und wenn ihr Mal UHD-HDR Content im Vergleich schaut... HD ist 5 mal schärfer, hat weniger Kompressionsartefakte bei schnellen Bewegungen.

    Leider befürchte ich, dass sich UHD nicht mehr durchsetzen wird. Nicht Mal 1080p als Kompromiss.

    Was muss ich tun, um mein Vdr-System mit aktiviertem vaapivideo und ausgeschaltetem TV, nicht standby, sondern stromlos, zu starten? Geht das überhaupt?

    Meine Konfiguration für grub:

    GRUB_CMDLINE_LINUX="drm.edid_firmware=HDMI-1:edid/edid.bin video=HDMI-1:D"

    Also erst mal liest Du Deine eigene EDID aus uns speicherst die in der initramfs. Bei Gentoo müsste das dann auch per dracut neu zu bauen sein. Der Kernel muss wissen, welcher Monitor am System hängt, auch wenn der beim Booten aus ist. Nimm bitte keine generische EDID.
    Die EDID kann man auch patchen, um die Monitoreinstellungen etwas zu pimpen (z.B. falsche Diagonale.

    Hier mal mein Script, wie ich das mache:

    Code
    cat /sys/class/drm/card0-HDMI-A-2/edid >panasonic-edid.bin
    cp panasonic-edid.bin /usr/lib/firmware/edid/
    cat >/etc/dracut.conf.d/99-local.conf <<EOF
     install_items+=" /usr/lib/firmware/edid/panasonic-edid.bin "
    EOF
    dracut -f
    lsinitrd /boot/initramfs-$(uname -r).img | grep edid

    Ohne diesen Schritt ich für mich der VDR nicht wohnzimmertauglich, da man ihn nur mit aktiven Fernseher starten darf. Ich habe meine Umgebung noch weiter optimiert, z.B. mit hibernate, mein VDR rebootet quasi gar nicht mehr, geht immer in den Standby. Lässt sich alles wunderbar per Fernbedienung bedienen.

    Release 1.7.3

    DVB bitmap subtitles, HDR-menu recovery, and a broad stability pass

    • DVB bitmap subtitles are now rendered: dvb_subtitle streams decode into per-region bitmaps drawn through the core OSD, sharing the existing pacing thread and clock with text subtitles. Handles page clear/replace, canvas scaling, and SubtitleOffset.
    • Fixed the OSD looping "atomic commit failed" forever over HDR on bandwidth-limited GPUs (e.g. Intel N100): opening the menu on a UHD HDR10 channel now retries under a modeset and, on a hard bandwidth ceiling, keeps video playing by deferring OSD enables until HDR ends. Healthy GPUs are untouched.
    • Rewrote audio codec detection to corroborate by frame length instead of a lone sync word, fixing HE-AAC services misdetecting as MP2 and looping in decode-failure cascades; adds LATM cross-payload handling and sink-driven re-detection when a codec changes mid-stream.
    • Fixed missing video in fast-forward/rewind on iHD GPUs: the trick-mode deinterlacer is now clamped to a driver-advertised mode, and output frame duration reports the real cadence so trick/still no longer feed A/V sync a 2×-too-small duration.
    • Softened VPP denoise/sharpen for SD and HD, which previously smeared motion and haloed edges (UHD still bypasses both).
    • Hardened the media player against corrupt files: guards against SIGFPE from damaged stream time bases, signed-overflow on seek, and oversized/binary .m3u playlists; fixed root-directory navigation in the file browser and long-URI truncation.
    • Closed several OSD and display races that could crash VDR: an OSD flush racing a buffer detach (SIGSEGV), dropped repaints racing an in-flight atomic commit, unsynchronized HDR state access, and lifecycle flags left latched after shutdown that broke re-initialization.
    • Hardened atomic commits and stream-switch teardown: torn plane state is now refused rather than submitted, commit-failure logging is rate-limited (was ~200 Hz), and several leaks on init-failure paths (hwDeviceRef, mode blobs) are fixed.
    • Device robustness: fixed a race in the encrypted-stream watchdog that could flash the "encrypted" notice on channel entry, capped GRAB image size to prevent a remote OOM, and reset trick state when jumping to a still frame.
    • Code cleanups: deduplicated Annex-B NAL start-code scanning, noexcept consistency across caps/stream, and normalized British→American spellings in docs and comments.

    Gehe ich recht in der Annahme, dass es diese Einstellungen weder im setup.conf noch im vaapi.conf in ähnlicher Form gibt:

    vaapivideo.576i.Scaling = 0
    vaapivideo.576i.Sharpen = 0
    vaapivideo.1080i_fake.Scaling = 0
    vaapivideo.1080i_fake.Sharpen = 0
    vaapivideo.1080i.Scaling = 0
    vaapivideo.1080i.Sharpen = 0

    Ist es geplant ?

    Es gibt Einstellungen, die wirken sich aber global aus. Die Optionen sind dafür da, wenn der Automatismus nicht gut genug ist, wie z.B. bei fehlerhafter HW wie den Intel N5xxx. Ich möchte sehr gute Presets haben mit guter Qualität. Vielleicht baue ich aber noch einen Modus ein, der dynamische Auflösungen ermöglicht, dann darf der Fernseher skalieren.

    Hallo Peter,

    finde ich komisch, aber egal

    Sieht alles normal aus. Wie zu erwarten ist Deine GPU aber sehr niedrig getaktet, du hast max. 750 Mhz, mein Core i3 hat schon 1500 Mhz.
    Wenn Du wirklich Lust hast, das abzusichern, bootet du bitte mit diesen Optionen:

    Code
    drm.debug=0x1e log_buf_len=4M

    Und schickst mir dann Dein komplettes Journal vom Umschalten auf UHD bis zum Fehler. Ist aber optional, vielleicht funktioniert mein Fix schon.