Hallo
ich habe mal wieder die plugins für die aktuelle Version von libplacebo upgedated. Nun lässt es sich mit der API Version 342 übersetzen und betreiben.
mfg
jojo61
Hallo
ich habe mal wieder die plugins für die aktuelle Version von libplacebo upgedated. Nun lässt es sich mit der API Version 342 übersetzen und betreiben.
mfg
jojo61
Vielen Dank jojo61!
Ich habe ja immer noch das Problem mit den zitternden Bild bei Benutzung von YADIF/BWDIF und libplacebo.
Ohne libplacebo tritt das nicht auf.
Ich verstehe den Code von softhdcuvid nicht wirklich, aber was ich gesehen habe ist, das libplacebo auch das deinterlacing mit YADIF übernehmen kann.
Hattest Du dahingehend schon mal Versuche unternommen?
Ich bekomme aber einen Fehler beim Kompilieren:
codec.c: In Funktion »CodecVideoOpen«:
codec.c:238:30: Warnung: Zuweisung streicht Qualifizierer »const« von Zeiger-Zieltyp [-Wdiscarded-qualifiers]
238 | if (name && (video_codec = avcodec_find_decoder_by_name(name))) {
| ^
codec.c:240:29: Warnung: Zuweisung streicht Qualifizierer »const« von Zeiger-Zieltyp [-Wdiscarded-qualifiers]
240 | } else if ((video_codec = avcodec_find_decoder(codec_id)) == NULL) {
| ^
codec.c: In Funktion »CodecVideoDecode«:
codec.c:564:46: Fehler: expected statement before »)« token
564 | if (decoder->filter == 2)) {
| ^
Display More
Da ist wohl eine Klammer zu viel...
diff --git a/codec.c b/codec.c
index 78cf75b..a3b5c99 100644
--- a/codec.c
+++ b/codec.c
@@ -561,7 +561,7 @@ next_part:
decoder->filter = 2;
}
}
- if (decoder->filter == 2)) {
+ if (decoder->filter == 2) {
ret = push_filters(video_ctx, decoder->HwDecoder, frame);
// av_frame_unref(frame);
continue;
Display More
Welchen commit von libplacebo meinst du damit genau?
Ich habe 34e019bf paketiert und bekomme da bei allen Variante von softhddrm, softhdvaapi und softhdcuvid einen Haufen Warnungen und Fehler: https://launchpadlibrarian.net/710153360/buil…BUILDING.txt.gz, https://launchpadlibrarian.net/710153359/buil…BUILDING.txt.gz
Dann bricht er nach
make[1]: *** Waiting for unfinished jobs....
softhdcuvid.cpp: In member function ‘void cMenuSetupSoft::Create()’:
softhdcuvid.cpp:1156:27: error: ‘pl_named_filters’ was not declared in this scope
1156 | for (scalers = 0; pl_named_filters[scalers].name != NULL; scalers++) {
| ^~~~~~~~~~~~~~~~
make[1]: *** [<builtin>: softhdcuvid.o] Error 1
ab.
commit 91961bdffe2655598dc1780904c3120bce74ccdd (HEAD -> master, origin/master, origin/HEAD)
Author: Joachim König <jojo@Orion.fritz.box>
Date: Fri Jan 19 11:45:54 2024 +0100
Update for libplacebo API Version 342
diff --git a/softhdcuvid.cpp b/softhdcuvid.cpp
index 4a5ebe0..baf1193 100644
--- a/softhdcuvid.cpp
+++ b/softhdcuvid.cpp
@@ -1153,9 +1153,9 @@ void cMenuSetupSoft::Create(void) {
if (scalers == 0) {
scalingtest[0] = (char *)"Off";
- for (scalers = 0; pl_named_filters[scalers].name != NULL; scalers++) {
- scaling[scalers] = (char *)pl_named_filters[scalers].name;
- scalingtest[scalers + 1] = (char *)pl_named_filters[scalers].name;
+ for (scalers = 0; pl_filter_presets[scalers].name != NULL; scalers++) {
+ scaling[scalers] = (char *)pl_filter_presets[scalers].name;
+ scalingtest[scalers + 1] = (char *)pl_filter_presets[scalers].name;
// printf("Scaler %s\n",pl_named_filters[scalers].name);
}
// scalers -= 2;
diff --git a/video.c b/video.c
index 6266ba2..24c0b99 100644
--- a/video.c
+++ b/video.c
@@ -4088,8 +4088,8 @@ static void CuvidMixVideo(CuvidDecoder *decoder, __attribute__((unused)) int lev
// render_params.upscaler = &pl_filter_ewa_lanczos;
- render_params.upscaler = pl_named_filters[VideoScaling[decoder->Resolution]].filter;
- render_params.downscaler = pl_named_filters[VideoScaling[decoder->Resolution]].filter;
+ render_params.upscaler = pl_filter_presets[VideoScaling[decoder->Resolution]].filter;
+ render_params.downscaler = pl_filter_presets[VideoScaling[decoder->Resolution]].filter;
if (level)
render_params.skip_target_clearing = 1;
@@ -4183,8 +4183,8 @@ static void CuvidMixVideo(CuvidDecoder *decoder, __attribute__((unused)) int lev
target->crop.y1 = dst_video_rect.y1;
#endif
- render_params.upscaler = pl_named_filters[VideoScalerTest - 1].filter;
- render_params.downscaler = pl_named_filters[VideoScalerTest - 1].filter;
+ render_params.upscaler = pl_filter_presets[VideoScalerTest - 1].filter;
+ render_params.downscaler = pl_filter_presets[VideoScalerTest - 1].filter;
// render_params.lut = NULL;
render_params.num_hooks = 0;
Display More
Hier wird doch pl_named_filters durch pl_filter_presets ersetzt.
Ah, kaum schlage ich mich den Tag lang damit herum die Build-Dependencies für die neue libplacebo bauen zu lassen, kommen neue Commits
Aber den von heifisch weiter oben angemerkten Syntax-Fehler in https://github.com/jojo61/vdr-plu…er/codec.c#L564 gibt es immer noch ...
Wenn man nicht immer alle Varianten compiliert..... Ich habe die Klammer korrigiert und eingecheckt.
Ich verstehe den Code von softhdcuvid nicht wirklich, aber was ich gesehen habe ist, das libplacebo auch das deinterlacing mit YADIF übernehmen kann.
Hattest Du dahingehend schon mal Versuche unternommen?
Kannst du da mal ein Video von dem zittern machen oder mir genauer Beschreiben was du damit meinst. Du hattest das zwar mal geschrieben das ist aber bei mir irgendwie in Vergessenheit geraten.
Wenn du Platz zum ablegen brauchst dann lass es mich wissen und ich schicke dir nen Link wo du den Film ablegen kannst.
Kannst du da mal ein Video von dem zittern machen oder mir genauer Beschreiben was du damit meinst. Du hattest das zwar mal geschrieben das ist aber bei mir irgendwie in Vergessenheit geraten.
Wenn du Platz zum ablegen brauchst dann lass es mich wissen und ich schicke dir nen Link wo du den Film ablegen kannst.
Danke, dass Du Dir das mal ansehen möchtest.
Ich habe es jetzt mal mit dem Handy aufgenommen, da ich auf die Schnelle keine einfache Lösung für ein Screenrecording gefunden habe.
Ein Link für den Upload wäre gut.
Grundsätzlich ist die Bildqualität von SD-Material mit libplacebo die Beste, die ich mit meiner T400 gesehen habe.
Deshalb würde ich das Problem gerne lösen.
Ich fasse noch mal zusammen wann es auftritt und wann nicht:
Es tritt nur auf bzw. fällt auf, in der Kombination libplacebo und YADIF/BWDIF.
Die privaten SD-Kanäle funktionieren in der Regel ohne zittern, außer das Bild wird im OSD-Menü verkleinert oder es wird eine Sendung in 4:3 gesendet.
Bei den neuen Deluxe Musik-Kanälen habe ich überall das zittern.
Es gibt so eine Art Schattenbildung z.B. eine Person die Ihre Arme bewegt hat dann 4 Arme.
Es sieht so aus als würde die Reihenfolge der Bilder nicht stimmen.
Das Zittern tritt bei starken Bildveränderungen also Bewegungen auf.
ServusTV HD war früher auch betroffen, DF1 HD ist betroffen.
Das Video 24MB würde ich Dir hochladen.
Es sieht so aus als würde die Reihenfolge der Bilder nicht stimmen.
Ich hatte da mal etwas geändert und einen Flush beim Rendern eingebaut. Aber das hat dann wohl nicht geholfen.
Ich habe derzeit leider keinen Zugriff auf Satelliten Programme aber ich schaue mir dein Video mal an. Evtl. kannst du mir ja auch ein kurzes Stück Aufnahme vom DF1 ablegen.
Du hast ne PM
Damit ist das Zittern weg.
Vielen Dank!
Na prima dann werde ich das so einchecken. Da scheinen sich bei libplacebo die Renderthreads wohl zu überholen.
Mir ist heute beim Bauen von softhddrm für Ubuntu 24.04 ein fehlendes const aufgefallen (soweit ich weiß wird AVCodec seit ffmpeg 5 als const erwartet - beim vdr-plugin-image bin ich auf das gleiche Problem gestoßen):
cc -g -O3 -Wall -fPIC -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -I/usr/include/x86_64-linux-gnu -I/usr/include/libdrm -DPLUGIN_NAME_I18N='"softhddevice-drm"' -D_GNU_SOURCE -g -ggdb3 -W -Wall -Wextra -Winit-self -Wdate-time -D_FORTIFY_SOURCE=3 -c -o audio.o audio.c
mediaplayer.cpp: In member function ‘void cSoftHdPlayer::Player(const char*)’:
mediaplayer.cpp:227:25: error: invalid conversion from ‘AVCodec**’ to ‘const AVCodec**’ [-fpermissive]
227 | -1, -1, &video_codec, 0);
| ^~~~~~~~~~~~
| |
| AVCodec**
In file included from mediaplayer.cpp:42:
/usr/include/x86_64-linux-gnu/libavformat/avformat.h:2109:48: note: initializing argument 5 of ‘int av_find_best_stream(AVFormatContext*, AVMediaType, int, int, const AVCodec**, int)’
2109 | const struct AVCodec **decoder_ret,
| ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~
Display More
Ein schneller Patch dafür sieht so aus (das scheint aber von der ffmpeg-Version abzuhängen, ob der Parameter const sein muss oder nicht, in einer Ubuntu 22.04 Buildumgebung baut es damit nicht):
Index: vdr-plugin-softhddevice-drm-0.6.1+git2022-07-19/mediaplayer.cpp
===================================================================
--- vdr-plugin-softhddevice-drm-0.6.1+git2022-07-19.orig/mediaplayer.cpp 2022-06-19 11:36:10.000000000 +0200
+++ vdr-plugin-softhddevice-drm-0.6.1+git2022-07-19/mediaplayer.cpp 2024-01-26 23:50:45.577018030 +0100
@@ -191,7 +191,7 @@
void cSoftHdPlayer::Player(const char *url)
{
AVPacket packet;
- AVCodec *video_codec;
+ const AVCodec *video_codec;
int err = 0;
int audio_stream_index = 0;
int video_stream_index;
Display More
Hm, das ist aber nicht wie hier beschrieben das softhdcuvid Plugin?
Mir ist heute beim Bauen von softhddrm für Ubuntu 24.04 ein fehlendes const aufgefallen
Ich vermute du meinst softhddevice-drm und dann ist es hier der falsche Thread
Ah - man sollte kurz vor Mitternacht keine Pakete mehr bauen
Hallo
ich habe mal wieder die plugins für die aktuelle Version von libplacebo upgedated. Nun lässt es sich mit der API Version 342 übersetzen und betreiben.
mfg
jojo61
Welche Vulkan-Version nutzt Du?
Ich frage, da ich auf meinen VDRs vulkan 1.3.239 jeweils manuell installiert habe, da die Distri-Pakete schon weiter waren/sind und damit libplacebo oder softhdcuvid/-vaapi nicht mehr liefen - zumindest bei meiner letzten Installation.
Danke!
Stefan
Ich nutze unter debian 1.3.239 aber ich habe gerade gesehen das mit libplacebo jetzt ein Problem mit dem Log ist.
Muss ich noch analysieren.
Don’t have an account yet? Register yourself now and be a part of our community!