softhddevice-drm - "cma_alloc failed" - VDR verbraucht Speicher beim Verschieben von Schnittmarken

  • Zu dem Zeitpunkt ist die aktuelle Aufnahme ja nicht geschlossen! Es wird ja eben diese abgespielt. Der Speicher wird von vdr freigegeben wenn die zu schneidende Aufnahme beendet wird.

    Ich glaube, ich habe mich falsch ausgedrückt. Wenn der Speicher ausgeht, während die Aufnahme abgespielt und Marken gesetzt werden, ok... - das Problem habe ich aber hier gar nicht. Es geht mir erstmal nicht darum, dass der Speicher ausgehen kann, wenn man Maken setzt, die Aufnahme pausiert und dann wieder startet.

    Meine Frage ist, warum der freie CMA Speicher VOR Wiedergabe der Aufnahme nicht NACH deren Beenden wieder in der gleichen Größe zur Verfügung steht?
    Das Prozedere "Aufnahme abspielen, Schnittmarke verschieben, Aufnahme beenden, wieder Live-TV ansehen" verringert jedes Mal den CMA Speicher, bis er ausgeht.

    Optimalerweise müsste es doch beispielhaft für den CMA so sein:

    LiveTV: 150MB frei

    Aufnahme abspielen, Pausieren, Schnittmarken verschieben, Schnittmarken anspringen etc....: geht runter bis auf 50MB frei (z.B.)

    Wiedergabe stoppen, LiveTV fortsetzen: wieder 150MB frei


    In Wirklichkeit sind es aber nur mehr 130MB und das nächste Mal 110MB etc...


    Ist meine Theorie, dass ein als CMA allokierter Bereich beim Beenden der Wiedergabe nicht mehr freigegeben wird, denn so abwegig? Es geht mir nicht darum, was während der Wiedergabe mit dem Speicher passiert, sondern dass der CMA nach dem Beenden der Wiedergabe jedesmal schrumpft.

    Genau das wird gebraucht!


    Bei den alten Allwinner SoCs war https://git.kernel.org/pub/scm…t/dts/sun7i-a20.dtsi#n175 notwendig, um den CMA im unteren Speicherbereich zu reservieren, damit die VE damit umgehen kann. Bei den neueren SoCs gibt es diese Einschränkung und somit auch die Reservierung über das dts nicht mehr, da läuft das über die Kernelconfig/-parameter und wird intern durch DMA zur Verfügung gestellt. LE reserviert z.B. 320MB über die Kernelconfig. Nur dem H3 wird als Kernel-Parameter noch "vmalloc=320M" mitgegeben, von dem ich nicht weiß, was es damit auf sich hat.

  • Wenn der Speicher ausgeht, während die Aufnahme abgespielt und Marken gesetzt werden, ok... - das Problem habe ich aber hier gar nicht. Es geht mir erstmal nicht darum, dass der Speicher ausgehen kann, wenn man Maken setzt, die Aufnahme pausiert und dann wieder startet.

    Darum geht es hier aber!


    Meine Frage ist, warum der freie CMA Speicher VOR Wiedergabe der Aufnahme nicht NACH deren Beenden wieder in der gleichen Größe zur Verfügung steht?

    Die Beobachtung habe ich nicht gemacht.


    CMA ist nicht das entscheidende. Wenn der low mem ausgeht kracht's.

  • Na dann reden wir wohl von 2 verschiedenen Beobachtungen und Problemen.

    CMA ist am Ende schon entscheidend, denn wenn ffmpeg davon für av_frame_alloc nichts mehr bekommt - warum auch immer - krachts. lowmem hin oder her. Ich habe hier eh "nur" 1GB und wenn VDR nach dem Beenden der Wiedergabe wieder alles hergeben würde, was belegt wurde, hätte ich genauso viel wie vor Start der Wiedergabe und wäre glücklich. Aber so ist es halt nicht. Der freie Speicher wird jedesmal weniger.

    Mir reichts für heute, ich denk da morgen wieder drüber nach. Schönen Dank bis hierhin.

  • Es kommen dann halt bei der Nächsten Aufnahme wieder die Meldungen im Log und das letzte Standbild flackert im Livebild.

    Flackert bei dir das Standbild auch mit, wenn du nur eine Aufnahme bearbeitest? Bei mir kommt das schon beim Verlassen der Wiedergabe wenn ich die Aufnahme einmal pausiert habe und/oder eine Marke verschoben habe.

  • Wenn ich an der Aufnahme keine Marke verschiebe, sondern nur einmal auf Pause drücke und dann während des Pausierens die Aufnahme verlasse flackert nichts. Das müsste ich mal beobachten ab wann das Bild anfängt zu flackern.