softhdcuvid/softhdvaapi/softhddrm with hevc and UHD
-
-
Gibt es irgendwo VDR hevc samples, die man bei mangelndem DVB-T2 Empfang zum Testen hernehmen könnte? Bzw. hat zufällig jemand einen Allwinner H3 mit VDR am laufen und kann testen, ob das ootb funktioniert? Ansonsten muss ich mir fast mal Zeit nehmen...
Gruß
AndreasSchau mal hier:
VDPAU samples
FFMPEG Samples -
Verstehe ich deinen Code richtig, dass du sowohl softhddevice an eine neuere ffmpeg Version (3.?) angepasst hast und dann hevc eingebaut hast? Falls ja, könnte man das theoretisch auch in Commits splitten?
Gruß Andreas
Die FFMPEG Anpassungen habe ich schon als Patch im Internet gefunden. Die habe ich dann auf die Version von Johns angewendet und dann HEVC eingebaut. Ich denke die Patches habe ich noch irgendwo rumliegen.
Jojo
-
-
Danke. Damit sollte hier dann History geordnet sein: https://github.com/rellla/soft…ce-openglosd/commits/hevc
Gruß
Andreas -
Update zum Allwinner H3:
Leider habe ich keinen Monitor hier, aber den Logs zufolge wird das HEVC Material abgespielt. Zwischendurch mit Framedrops zwar und manchmal scheint Audio und Video auseinander zu laufen, aber grundsätzlich scheints der H3 zu "fressen".
Muss jetzt fast mein Equipment mal an einen Bildschirm hängenGruß
AndreasEDIT: Ich finde im log "HEVC Profile Main detected" und "HWACCEL init ok", was sich schon mal gut liest...
-
So habe nun den Crash bei den Jumps im Edit Mode behoben. Allerdings funktioniert das anzeigen eines I-Frames da noch nicht und somit wird das Bild bei den Jumps nicht aktualisiert.
Ich finde aber nichts woran das liegen könnte. Meine Vermutung ist das der VDR hier nicht zu einem I-Frame springt oder das I-Frame auf mehreren Squenzen verteilt ist. Da fehlt mir etwas HEVC Know How.
Vielleicht kann ja hier jemand helfen.Jojo
-
Fehler ist auch bei mir behoben, damit sind wir einen Riesenschritt weiter! Jetzt kann ich auch über einen Einbau im Produktionssystem nachdenken, dort muss ich aber erst ffmpeg updaten.
-
Standbilder sind ein großes Problem. Bei H264 half die Sequenz mehrfach zuschicken.
Oder eine extra EOS einzubauen und so ffmpeg dazubringen, das auszugeben was es
bereits dekodiert hatte.#define STILL_DEBUG in softhddev.c hilft beim Suchen.
Oder Software / Hardware Dekoder zuwechseln half bei bestimmten ffmpeg Versionen.
Johns
-
ok ich werde mal mit dem HW Decoder bei den Still Picutres rumspielen.
Danke für den Tipp Johns
-
Jetzt auch auf vdr3 mit GT 730 installiert, CPU-Last bei DVB-T2 70-75% auf einem Core.
-
gelöscht
-
Hi,
hab mir mal ne eigene Version fuer VAAPI gebaut siehe
[Announce] VA-API/VPP Support for vdr-plugin-softhddeviceCU
9000h -
Ich habe gerade über eine GT 730 eine Aufzeichnung mit Regen angeschaut (3. Stock links), CPU ging auf 100% und der Ton stockte. Hier fehlt mulithreading, der andre Core lümmelte vor sich hin. Mit xinliboutput lässt sich die Szene problemlos anschauen.
-
Ich habe gerade über eine GT 730 eine Aufzeichnung mit Regen angeschaut (3. Stock links), CPU ging auf 100% und der Ton stockte. Hier fehlt mulithreading, der andre Core lümmelte vor sich hin. Mit xinliboutput lässt sich die Szene problemlos anschauen.
Jetzt auch auf vdr3 mit GT 730 installiert, CPU-Last bei DVB-T2 70-75% auf einem Core.
Das klingt beides so als ob hier keine Hardwarebeschleunigung aktiv ist. Kann die GT730 kein HEVC via Hardware?
-
-
Hi,
damit geht dann auch VAAPI
Diff
Display Morediff -Nru vdr-plugin-softhddevice/video.c vdr-plugin-softhddevice.jojo61.work/video.c --- vdr-plugin-softhddevice/video.c 2016-12-20 00:45:00.922591823 +0100 +++ vdr-plugin-softhddevice.jojo61.work/video.c 2016-12-20 00:47:44.204956784 +0100 @@ -150,6 +150,7 @@ #ifdef USE_VDPAU #include <vdpau/vdpau_x11.h> #include <libavcodec/vdpau.h> +#include "libavutil/hwcontext_vdpau.h" #endif #include <libavcodec/avcodec.h> @@ -169,7 +170,6 @@ #include <libavcodec/vaapi.h> #include <libavutil/pixdesc.h> #include "libavutil/hwcontext.h" -#include "libavutil/hwcontext_vdpau.h" #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(54,86,100) /// @@ -2274,6 +2274,12 @@ // check profile p = VaapiFindProfile(profiles, profile_n, VAProfileH264High); if (p == -1) { + p = VaapiFindProfile(profiles, profile_n, VAProfileHEVCMain10); + } + if (p == -1) { + p = VaapiFindProfile(profiles, profile_n, VAProfileHEVCMain); + } + if (p == -1) { Debug(3, "\tno profile found\n"); return; } @@ -2975,6 +2981,24 @@ p = VaapiFindProfile(profiles, profile_n, VAProfileH264High); } break; + case AV_CODEC_ID_HEVC: + decoder->SurfacesNeeded = + CODEC_SURFACES_H264 + VIDEO_SURFACES_MAX + 2; + // try more simple formats, fallback to better + if (video_ctx->profile == FF_PROFILE_HEVC_MAIN_10) { + p = VaapiFindProfile(profiles, profile_n, + VAProfileHEVCMain10); + if (p == -1) { + p = VaapiFindProfile(profiles, profile_n, + VAProfileHEVCMain); + } + } else if (video_ctx->profile == FF_PROFILE_HEVC_MAIN) { + p = VaapiFindProfile(profiles, profile_n, VAProfileHEVCMain); + } + if (p == -1) { + p = VaapiFindProfile(profiles, profile_n, VAProfileHEVCMain10); + } + break; case AV_CODEC_ID_WMV3: decoder->SurfacesNeeded = CODEC_SURFACES_VC1 + VIDEO_SURFACES_MAX + 2; @@ -4789,7 +4813,7 @@ av_picture_copy(picture, (AVPicture *) frame, video_ctx->pix_fmt, width, height); - } + } if (vaUnmapBuffer(VaDisplay, decoder->Image->buf) != VA_STATUS_SUCCESS) {
CU
9000h -
Hallo 9000h
das ist ja prima das VAAPI nun auch funktioniert. Ich werde deinen Patch morgen einchecken.
Jojo
-
Müssen die libavutil-Includes nicht mit spitzen Klammern statt Anführungszeichen eingebunden werden?
Lars.
-
Hi,
also mit vaapi geht auch der flüssig auf einem Asrock J3150
allerdings stimmen die Farben nicht wahrscheinlich wegen VA_RT_FORMAT_YUV420_10BPP, VA_FOURCC_P010 bzw AV_PIX_FMT_YUV420P10LE, aber hab leider keine Idee wo man das am besten mappen könnte.
allen anderen 4K UHD channels die ich hier habe andere Probleme.
vielleicht hilft ja das weiter Kodi und LibreELEC
getestet mit ffmpeg3 von hier auf Ubuntu 16.04.1 Kernel 4.8.0-30
CU
9000hMod.: Code-Tags verwenden ...
Participate now!
Don’t have an account yet? Register yourself now and be a part of our community!