mp3-Plugin und softhddevice: rückwärts skippen funktioniert nicht richtig

  • Fortsetzung der hier begonnen Diskussion sowie des hier beschriebenen logs


    was bisher geschah:
    wenn man beim mp3-Plugin (DVB-Ausgabe) unter softhddevice während der Wiedergabe mit der Links-Taste ein paar Sekunden zurückgehen will ('skippen'), bewirkt dies stattdessen, dass man ein kleines Stück vorwärts springt. Entgegen erster Vermutungen hat dies wohl nichts mit dem Rückspulproblem bei Video zu tun (was wohl an ffmpeg liegt). Auch inplausible GetSTC-Werte (wie beim Rückspulen in Radioaufzeichnungen) scheiden hier als Fehlerursache aus, weil die Skip-Funktion des mp3-Plugins in dessem eigenen player stattfindet, wo GetSTC gar nicht aufgerufen wird.


    Ich habe dann mal das mp3-Plugin etwas aufgebohrt (ALSA -Ausgabe vom music-Plugin reintransplantiert) und es mit der Ausgabeart alsa probiert. Dann gibt es keine Probleme - abgesehen davon, dass man nicht das gleiche alsa-Device benutzen kann, das softhddevice belegt.


    Das mp3-Plugin verwendet beim Skippen Funktionen der libmad. Ich dachte erst, dass da irgendwo ein Bug drin ist, aber dann müsste der Fehler bei alsa-Ausgabe ja genauso auftreten. Mein Verdacht ist, dass es irgendwo im Bereich des buffer/ringbuffer clearen im softhddevice-Plugin liegt. Das mp3-Plugin ruft beim Skippen DeviceClear auf. Dies löst beim softhddevice-Plugin Clear() aus. Aber werden dort auch die Audio-Buffer und der audio ringbuffer geleert? Ich werde da nicht ganz schlau draus. In Clear heisst es


    AudioFlushBuffers();
    //NewAudioStream = 1;
    // FIXME: audio avcodec_flush_buffers, video is done by VideoClearBuffers


    audio avcodec_flush_buffers ist in der Funktion CodecAudioFlushBuffers() enthalten. Aber diese wird anscheinend nie irgendwo ausgeführt ?(


    Das Clearen des audio ring buffers gibt es über einen Umweg z.B. in PlayAudio():

    Code
    if (NewAudioStream) {
    	// this clears the audio ringbuffer indirect, open and setup does it
    	CodecAudioClose(MyAudioDecoder);
    	AudioFlushBuffers();
    	AudioSetBufferTime(ConfigAudioBufferTime);
    	AudioCodecID = AV_CODEC_ID_NONE;
    	AudioChannelID = -1;
    	NewAudioStream = 0;
        }


    Muss der audio ringbuffer evtl. auch in Clear() gecleart werden? Ist das überhaupt ein Ansatz, oder bin ich komplett auf dem Holzweg?

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • Zitat

    Dann gibt es keine Probleme - abgesehen davon, dass man nicht das gleiche alsa-Device benutzen kann, das softhddevice belegt


    Na du musst halt einen Soundserver benutzen.
    Alsa bringt ja ne Loesung mithilfe vom dmixer Plugin selber mit , welches ich auch nutze ;)


    ZB :
    .asoundrc (ist an eigene Umgebung anzupassen)


    Wenn du jetzt auch den Commandflag vom musichd-Plugin uebernommen hast , muss der Aufruf so lauten
    -Pmp3 --alsadevice=plug:dmix


    Schon klappt Alsa mit softhddevice und mp3 mit demselben device.


    Auch wenn es leicht OT ist. Nur als Info

  • War da nicht was, dass softhddevice auch z.B. mit Sat-Radio so seine Probleme hat.


    Das mp3-Plugin konnte doch mal TV-Bild mit Radio-Ton mischen. Mein letzter Stand ist, dass das mit irgendeiner VDR-Version nicht mehr ging. Würde sich das Problem erübrigen, wenn man diese Funktion wieder reparieren würde?

  • @ AlterSack: Danke, das schaue ich mir heute Abend mal an!


    @ MReimer:

    Zitat

    War da nicht was, dass softhddevice auch z.B. mit Sat-Radio so seine Probleme hat.


    ja, aber da liegt es an der fehlenden Implementation von GetSTC() bei fehlenden Videodaten. Das ist eine andere Baustelle, da das mp3-Plugin keine STC bzw. PTS abfragt.


    Zitat

    Das mp3-Plugin konnte doch mal TV-Bild mit Radio-Ton mischen. Mein letzter Stand ist, dass das mit irgendeiner VDR-Version nicht mehr ging.


    Nicht mit Radioton, aber mit dem Ton des mp3-Players. Ich habe das ehrlich gesagt aber in all den Jahren nie hingekriegt und mich schon gefragt, ob diese Funktion evtl. auf FF-Karten beschränkt ist. Hast Du zu einer evtl. Regression einen Link?


    Zitat

    Würde sich das Problem erübrigen, wenn man diese Funktion wieder reparieren würde?


    wäre aber kein akzeptabler Fix, denn beim mp3 hören möchte ich kein TV-Bild auf dem Schirm haben.

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • Also Clear() (in softhddevice) löscht die Ausgabepuffer.
    Zwei Zeilen unter dem Löschen steht aber ein FIXME: avcodec_flush_buffers wird noch nicht aufgerufen.
    Es sollten aber nichts im Codec gepuffert sein.Ich übergebe nur einzelne und komplette Audioframes an ffmpeg.
    Also ich würde dies nicht als die Ursache ansehen, zur Not einfach mal einbauen.


    In der Tonausgabe werden ca. 3 - 6 s gepuffert. Wenn es an den Puffern liegt, dann sollte der Sprung nur Zeitverzögert passieren.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch


  • ich brauche dazu nochmal Hilfe:


    Wie gebe ich dmix als Parameter für softhddevice vor? Bisher verwende ich

    Code
    -a iec958:AES0=0x4 -p iec958:AES0=0x6


    Ich habe es jetzt mit

    Code
    -a plug:dmix:AES0=0x4 -p plug:dmix:AES0=0x6


    versucht, aber das klappt nicht:

    Code
    Dec  8 19:10:27 ubuntuvdr1 vdr: audio/alsa: playback open 'plug:dmix:AES0=0x4' error: Datei oder Verzeichnis nicht gefunden


    Wenn ich dann (bei stummem softhddevice) mp3s abspiele, kommt die Musik wie gewünscht aus dem Digitalausgang der Soundkarte.


    Wenn ich aber softhddevcie ohne -a und -p Parameter starte (und somit die Einstellungen der /etc/asound.conf nutze), dann habe ich zwar wieder Ton von softhddevice. Aber dann klappt das Abspielen von mp3s wieder nicht: Die Musik kommt dann nur aus dem Analogausgang, nicht aber aus dem SPDIF...


    Meine /etc/asound.conf:

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD


  • Das musst du natuerlich an deine Umgebung anpassen.
    Vor allem pcm "hw:0,1" passt wahrscheinlich bei dir nicht.



    Dein Aufruf von softhddevice musst jedenfalls so aussehen , wenn ich mich nicht irre.
    MP3-Plugin gibt nur Stereo aus , oder ?:
    -P'softhddevice -a plug:dmix -p iec958:AES0=0x6'


    Vielleicht auch mal ohne asound.conf (.asoundrc im HomeVerzeichnis waere eh besser , ansonsten muss ja jedesmal Alsa neu starten).
    Bei neueren Version ist das Mixer-Plugin standardmaessig schon aktiviert (Configs liegen ja unter /usr/share/alsa)


    Was sagt denn "aplay -L" ?

  • es läuft jetzt. Problem war wohl die aktivierte ClearOnSwitch-Option in softhddevice. Da gibt es derzeit noch einen Bug, der beim Playmode 0 das alsa device irgendwie blockiert.

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!