biggsmann ich habe Suse 42.3 installiert. Ffmpeg habe ich aber aus dem GIT selbst compiliert. Wenn du Tumbleweed nimmst musst du an Ffmeg nichts tun, da ist CUDA schon drin. Zumindest war es an meinem 2. Rechner mit Tumbleweed so.
mfg
Jojo61
biggsmann ich habe Suse 42.3 installiert. Ffmpeg habe ich aber aus dem GIT selbst compiliert. Wenn du Tumbleweed nimmst musst du an Ffmeg nichts tun, da ist CUDA schon drin. Zumindest war es an meinem 2. Rechner mit Tumbleweed so.
mfg
Jojo61
So das Fullscreen ratio ist gefixt
mfg
jojo61
Ulrich ja SD geht nicht. Das scheint mir an CUDA zu liegen. Hier muss ich wohl noch einen Thread zum abholen der Frames einbauen. Da habe ich schon stundenlang gesucht und nicht gefunden woran es liegt. Die Frames kommen total unregelmäsig vom decoder und dann spinnt die synsconisation.
Das Radio Plugin habe ich nicht.. muss mal sehen ob ich das mal ausprobiere. Die Skalierung ist auch absicht Ich schaue eh immer nur in Fullscreen auf meinem Beamer. Das ist aber leicht zu beheben.
biggsmann Versuche mal die Pfade deiner Lib in das Makefile zu schreiben mit -L/usr/local/lib evtl. auch -L/usr/local/lib/libav...
mfg
Jojo61
Hallo Biggsmann
ok entferne mal das -DUSE_VDPAU unud das -DUSE_VAAPI aus dem Makefile. Und dann schau dir mal die Librarys die bei meinem ldd mit gebunden sind und prüfe ob die bei dir vorhanden sind. Mich wundert das bei dir nix aus /usr/lib64 abgebunden wird. Wo liegen bei dir die libav* libraries ?
Welche distro setzt du ein ?
mfg
jojo61
PS: bei fehlenden includes bricht der Compiler immer ab
hier mal das ldd von mir:
ldd libvdr-softhdcuvid.so
linux-vdso.so.1 (0x00007fffcf7f7000)
libasound.so.2 => /usr/lib64/libasound.so.2 (0x00007f8117c66000)
libva-glx.so.1 => /usr/lib64/libva-glx.so.1 (0x00007f8117a60000)
libva.so.1 => /usr/lib64/libva.so.1 (0x00007f8117840000)
libGLEW.so.1.13 => /usr/lib64/libGLEW.so.1.13 (0x00007f811759f000)
libGLU.so.1 => /usr/lib64/libGLU.so.1 (0x00007f8117320000)
libGL.so.1 => /usr/lib/libGL.so.1 (0x00007f811707c000)
libavutil.so.56 => /usr/lib/libavutil.so.56 (0x00007f8116e02000)
libswscale.so.5 => /usr/lib/libswscale.so.5 (0x00007f8116b7a000)
libavcodec.so.58 => /usr/lib/libavcodec.so.58 (0x00007f8115559000)
libswresample.so.3 => /usr/lib/libswresample.so.3 (0x00007f811533c000)
librt.so.1 => /lib64/librt.so.1 (0x00007f8115134000)
libX11-xcb.so.1 => /usr/lib64/libX11-xcb.so.1 (0x00007f8114f32000)
libX11.so.6 => /usr/lib64/libX11.so.6 (0x00007f8114bf4000)
libxcb-icccm.so.4 => /usr/lib64/libxcb-icccm.so.4 (0x00007f81149ee000)
libxcb.so.1 => /usr/lib64/libxcb.so.1 (0x00007f81147ce000)
libGLX.so.0 => /usr/lib64/libGLX.so.0 (0x00007f811459e000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f811439a000)
libcuda.so.1 => /usr/lib64/libcuda.so.1 (0x00007f811341a000)
libcudart.so.9.1 => /usr/local/cuda-9.1/targets/x86_64-linux/lib/libcudart.so.9.1 (0x00007f81131ac000)
libnvcuvid.so.1 => /usr/lib64/libnvcuvid.so.1 (0x00007f8112d4a000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f81129c1000)
libm.so.6 => /lib64/libm.so.6 (0x00007f81126c4000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f81124ad000)
libc.so.6 => /lib64/libc.so.6 (0x00007f8112108000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f8111eeb000)
/lib64/ld-linux-x86-64.so.2 (0x00007f81181a5000)
libva-x11.so.1 => /usr/lib64/libva-x11.so.1 (0x00007f8111ce5000)
libGLdispatch.so.0 => /usr/lib64/libGLdispatch.so.0 (0x00007f8111a17000)
libva-drm.so.1 => /usr/lib64/libva-drm.so.1 (0x00007f8111814000)
libvdpau.so.1 => /usr/lib64/libvdpau.so.1 (0x00007f8111610000)
liblzma.so.5 => /usr/lib64/liblzma.so.5 (0x00007f81113e7000)
libz.so.1 => /lib64/libz.so.1 (0x00007f81111d1000)
libXau.so.6 => /usr/lib64/libXau.so.6 (0x00007f8110fcd000)
libXext.so.6 => /usr/lib64/libXext.so.6 (0x00007f8110dbb000)
libnvidia-fatbinaryloader.so.396.24 => /usr/lib64/libnvidia-fatbinaryloader.so.396.24 (0x00007f8110b6f000)
libXfixes.so.3 => /usr/lib64/libXfixes.so.3 (0x00007f8110969000)
libdrm.so.2 => /usr/lib64/libdrm.so.2 (0x00007f8110758000)
Alles anzeigen
biggsmann Ich habe dir mal einen Compileraufruf angehängt damit du siehst welche Flags ich beim compilieren habe. Ich denke dir fehlt da etwas und er compiliert nicht alles was du brauchst. Hier das Beispiel für audio.c aber das gilt für alle anderen Files auch:
cc -g -O3 -Wdeclaration-after-statement -fPIC -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -I/usr/include -I/usr/src/vdr/vdr-2.2.0/include -I/usr/include/alsa -I/usr/include/libdrm -I/usr/local/cuda/include -I./opengl -I./ -DPLUGIN_NAME_I18N='"softhdcuvid"' -D_GNU_SOURCE -DDEBUG -DCUVID -DHAVE_GL -DAV_INFO -DAV_INFO_TIME=3000 -DUSE_PIP -DUSE_MPEG_COMPLETE -DH264_EOS_TRICKSPEED -DUSE_VDR_SPU -DUSE_ALSA -DUSE_OSS -DUSE_GLX -DUSE_SWRESAMPLE -g -W -Wextra -Winit-self -Wdeclaration-after-statement -c -o audio.o audio.c
Ulrich danke für den patch ich werde ihn gleich einspielen. Makefiles sind nicht so mein Ding
mfg
jojo61
die Grab Funktion muss ich noch ausbauen. Da direkt auf der Karte gerendert wird kann man nichts mehr graben.
Den FFMPEG Patch hatte ich früh in der Entwicklung gefunden. Danach habe ich das abholen der fertigen Frames nochmal geändert und es könnte sein
das man deswegen den Bufferüberlauf in FFMPEG nicht mehr hinbekommt. Insofern kann es gut sein das der Patch nicht mehr nötig ist weil derBuffer nicht mehr voll läuft.
biggsmann kannes sein das du nicht die NVIDIA gl libs dazu linkst? Poste mal ein ldd vom plugin.
mfg
Jojo61
Ulrich: du hast doch die beiden Stellen gefunden. Die erste Stelle bei Zeile 852 musst du patchen auf
ctx->frame_queue = av_fifo_alloc((ctx->nb_surfaces + 2 ) * sizeof(CuvidParsedFrame));
biggsmann Die glew Library wird gebraucht. Evtl. stimmt der Pfad im Makefile nicht bei dir zur -LGLEW oder -LGLX
Den Fehler in FFMPEG sicht man bei interlaced programmen nach einiger Zeit. Bei mir war es bei RTL HD nahezu immer sofort zu sehen.
Dann kommt ein falscher Frame vom dekoder und das Bild springt vor in der Zeit.
mfg
joj61
Da fehlt dann wohl die glew Library. Leider merkt der Linker das nicht was fehlt beim bauen einer Lib. Das merkt man erst beim starten.
mfg
Joachim
So fix ist eingecheckt.
Hoffe das es nun mit den Schnittmarken funktioniert.
mfg
jojo61
Ok ich werde mir das ansehen.
Da ich keine Aufnahmen schneide ist mir das noch nicht aufgefallen. Sollte aber leicht zu fixen sein. Dann nehme ich gleich noch die LIBS Pfade mit auf.
Die CUDA libs liegen wohl je nach Distro immer wo anders,
mfg
jojo61
Hallo
nimm mal das -DUSE_SCREENSAVER aus dem Makefile. Das scheint bei mir nicht aktiv zu sein.
mfg
jojo61
Nein der Patch ist nur für NVIDIA. Das ganze läuft nur mit NVIDIA weil es nur dort auch CUDA gibt.
mfg
Jojo61
Hab den link nun auch korrigiert
Grüße aus Dreieich
Hi
so nun habe ich das ursprüngliche softhddevce völlig umgeschrieben und CUDA mit einer opengl ausgabe implementiert.. Es ist immer noch work in progress, aber ich denke es ist Zeit für einen öffentlichen test :-).
Download ist von https://github.com/jojo61/vdr-plugin-softhdcuvid.git
Leider muss man mal wieder FFMPEG patchen da dort noch ein Fehler beim deinterlacen von cuda frames verborgen ist.
Im README habe ich es beschrieben.
Zusätzlich wird das CUDA SDK von NVIDIA gebraucht.
Ich habe im GIT auf die Historie verzichtet da ich nicht denke das es hier noch wichtig ist,
mfg
Jojo61
Ich hab nun mal versucht das etwas schneller zu bekommen, aber mit MMX Befehlen wird es auch nicht besser. Bei mir sind es etwa 40% CPU load
an einen i7-4790K @ 4.00GHz. Ich denke die Lösung mit vdpau als Ausgabebuffer ist ungeeignet da umkopiert werden muss bei 10 Bit Farbtiefe, Das geht wohl nur mit schnellen Rechnern. Ich bastel noch an einer opengl Lösung ohne umkopieren, aber das dauert noch.
mfg
Jojo61
Na dann habe wir die Ursache wohl gefunden. Ich schau mal ob ich das umkopieren beschleunigen kann.
Evtl. kann man da mit MMX Befehlen etwas machen, aber da kenne ich mich nicht so aus.
mfg
jojo61
Hallo
Murray wie schnell ist denn der Rechner. Das sieht mir so aus als ob es es nicht schafft das UHD Bild rechtzeitig in den Output Buffer umzukopieren.
Das wird leider in Software gemacht und kostet Zeit. Schau mal mit top wie die auslastung mit UHD ist.
Jojo621
hmm
dann Übersetze das Plugin mal mit DEBUG und schaue im Log nach sowas wie "CUVID Init ok" oder "CUVID Init failed"
Poste mal das Debug Log etwac vor und nach dieser Zeile. Speziell die Formate die Angezeigt werden sind interessant. Da muss dann sowas wie
AV_PIX_FMT_CUDA dabei sein. Das Log kommt wenn man auf eine HEVC Sender schaltet,
mfg
Jojo61