Dr. Seltsam try uncomment -DUSE_MPEG_COMPLETE in makefile, in vaapi+vdpau+cuvid.
Softhddevice + ffmpeg > 3.2 (vdpau)
-
-
I seem to be able to reproduce the problem of channel switching myself, I will watch.
-
I seem to be able to reproduce the problem of channel switching myself, I will watch.
with -DUSE_MPEG_COMPLETE this problem is solved!
-
Hi,
i'm testing my plugin which creates an OSD using pixmaps.
The code is as follows
Codeosd = cOsdProvider::NewOsd(left, top); tArea Area = { 0, 0, width, height, 32 }; osd->SetAreas(&Area, 1); cRect rect(0, 0, width, height); pixmap = dynamic_cast<cPixmapMemory *>(osd->CreatePixmap(0, rect, rect));
But i get completely different result depending on the variable OPENGLOSD in your plugin. If OPENGLOSD = 1, the value of pixmap is NULL and my plugin crashes. But with OPENGLOSD = 0 everything works as desired.The code part "osd->CreatePixmap(0, rect, rect)" results in
which seems reasonable.
But then the dynamic_cast results in
which is the cause for the following segfault.
Is this a problem in my plugin or is the cause the returned value from create_pixmap?
After enabling the debug output i get the following entries in syslog (grep for softhddev)
CONFIG += -DDEBUG
CONFIG += -DOSD_DEBUG # enable debug output+functions
with OPENGLOSD = 1
vdr: [softhddev]GetOsdSize: 1920x1080 1
vdr: [softhddev]CreateOsd: 154, 648, 0
vdr: [5101] [softhddev]Trying to start OpenGL Worker Thread
vdr: [5142] [softhddev]OpenGL using display :0
vdr: [softhddev]PlayTsAudio: SoftIsPlayingVideo: 1
vdr: [5142] [softhddev]OpenGL Context initialized
vdr: [5142] [softhddev]Shaders initialized
vdr: [5142] [softhddev]vdpau interop initialized
vdr: [5142] [softhddev]Vertex buffers initialized
vdr: [5142] [softhddev]Maximum Pixmap size: 32768x32768px
vdr: [5101] [softhddev]OpenGL Worker Thread successfully started
vdr: [softhddev]SetPlayMode: 0
vdr: [softhddev]SetVideoDisplayFormat: 1
vdr: [softhddev]GetSpuDecoder:
vdr: [softhddev]SetPlayMode: 1
vdr: [softhddev]CreateOsd: 154, 86, 0
vdr: [softhddev]CreateOsd: 0, 0, 0
with OPENGLOSD = 0
vdr: [softhddev]GetOsdSize: 1920x1080 1
vdr: [softhddev]CreateOsd: 154, 648, 0
vdr: [softhddev]cSoftOsd: 1664x907+154+648, 0
vdr: [softhddev]SetActive: 1 level 0
vdr: [softhddev]SetAreas: 1 areas
vdr: [softhddev]Flush: level 0 active 1
vdr: [softhddev]Flush: draw 1664x345+0+0*6656 -> +154+648 0x7f40c9de5010
vdr: [softhddev]Flush: level 0 active 1
vdr: [softhddev]Flush: level 0 active 1
vdr: [softhddev]Flush: level 0 active 1
vdr: [softhddev]PlayTsAudio: SoftIsPlayingVideo: 1
vdr: [softhddev]Flush: level 0 active 1
vdr: [softhddev]Flush: draw 252x13+0+0*1008 -> +1153+960 0x55a5bdd0b740
vdr: [softhddev]Flush: level 0 active 1
vdr: [softhddev]Flush: level 0 active 1
vdr: [softhddev]Flush: draw 1622x246+0+0*6488 -> +154+726 0x55a5bdd55080
Edit:
Got it. I have to rewrite the pixmap handling to be more portable accross different versions of softhd* plugins.
-
I'm currently testing the latest version with setup nvidia + cuvid driver. everything works like a charm, several problems with pip, etc. i had with softhdcuvid are gone. The only problem i have for now is a jerky playback of 720p channels (above all Phoenix HD and ARTE HD). All others work fine, even UHD channels are ok. I attached a short example clip.
-
Can you upload vdr recording?
With native .ts format.
-
test rec (Phoenix HD, 2:10 min)
playback of ts-file per mpv/vlc and vdr xineliboutput is ok. per softhddevice look like this here: playback shdd
-
Fixed, see git.
-
ooookay great, i will test later and give feedback
Fix confirmed, 720p channels are smooth now Now i will update our Family-VDR with your fork, thanks very much!!
Lars
-
Nvidia added hevc 10/12 bit to VDPAU
Added HEVC 10/12 bit "decode only" support to the NVIDIA VDPAU driver. Note that VDPAU's presentation pipeline and OpenGL-VDPAU interop does not support 10- and 12-bit video surfaces yet. See the "VDPAU Support" appendix in the README for supported HEVC decoder profiles.
FFMPEG added hevc 10/12 bit to VDPAU
I am waiting for testing the nvidia 450.57 driver in Ubuntu.
-
Not related to ubuntu, but to nvidia/ffmpeg
- NVIDIA-Linux-x86_64-450.57 - works smoothly
- cuda-11.0 works fine
- FFmpeg-git compiles fine with both
- old softhddevice from rofafor compiles,links,works fine with them
- https://github.com/ua0lnj/vdr-plugin-softhddevice -> compiles && links && segfaults after : 2secs VDR Menu w/o picture, then - boom
Code
Alles anzeigen[New Thread 0x7f6c6f7fe700 (LWP 1225)] [New Thread 0x7f6c6e77f700 (LWP 1226)] [New Thread 0x7f6c515d4700 (LWP 1227)] [Thread 0x7f6c95164700 (LWP 1206) exited] [New Thread 0x7f6c95164700 (LWP 1228)] [New Thread 0x7f6c50dd3700 (LWP 1229)] [New Thread 0x7f6c4bfff700 (LWP 1230)] [New Thread 0x7f6c4b7fe700 (LWP 1231)] Thread 20 "softhddev video" received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x7f6c4b7fe700 (LWP 1231)] 0x00007f6c97c1128d in ?? () from /usr/lib/libavutil.so.56 (gdb) bt full #0 0x00007f6c97c1128d in ?? () from /usr/lib/libavutil.so.56 No symbol table info available. #1 0x00007f6c97c07a2e in av_hwdevice_ctx_init () from /usr/lib/libavutil.so.56 No symbol table info available. #2 0x00007f6c9dc4cd40 in vdpau_alloc (s=0x7f6c3c002100) at video.c:8978 ctx = 0x7f6c3c086a00 ret = <optimized out> device_ctx = <optimized out> frames_ctx = <optimized out> ist = <optimized out> device_hwctx = <optimized out> #3 vdpau_init (s=0x7f6c3c002100) at video.c:9026 ist = <optimized out> s = 0x7f6c3c002100 ist = <optimized out> #4 0x00007f6c9dc4d0f2 in Vdpau_get_format (decoder=0xa3af60, video_ctx=0x7f6c3c002100, fmt=0x7f6c3c087e80) at video.c:9214 status = <optimized out> ret = <optimized out> fmt_idx = 0x7f6c3c087e80 profile = 7 max_refs = 16 ist = 0xa3b190 #5 0x00007f6c9adeac98 in ?? () from /usr/lib/libavcodec.so.58 No symbol table info available. #6 0x00007f6c9af09fd5 in ?? () from /usr/lib/libavcodec.so.58 No symbol table info available. #7 0x00007f6c9af0af69 in ?? () from /usr/lib/libavcodec.so.58 No symbol table info available. #8 0x00007f6c9af0f9fa in ?? () from /usr/lib/libavcodec.so.58 No symbol table info available. #9 0x00007f6c9af130b0 in ?? () from /usr/lib/libavcodec.so.58 No symbol table info available. #10 0x00007f6c9ade8d9c in ?? () from /usr/lib/libavcodec.so.58 No symbol table info available. #11 0x00007f6c9ade9a18 in avcodec_send_packet () from /usr/lib/libavcodec.so.58 No symbol table info available. #12 0x00007f6c9dc5bdeb in CodecVideoDecode (decoder=0xa3b190, avpkt=avpkt@entry=0x7f6c9de74470 <MyVideoStream+1552>) at codec.c:669 video_ctx = 0x7f6c3c002100 frame = 0x7f6c3c0054c0 used = 0 got_frame = 0 pkt = {{buf = 0xa3b900, pts = 7116804667, dts = -9223372036854775808, data = 0x7f6c6cf3b010 "", size = 105212, stream_index = 0, flags = 0, side_data = 0x0, side_data_elems = 0, duration = 0, pos = -1, convergence_duration = 0}} #13 0x00007f6c9dc35498 in VideoDecodeInput (stream=0x7f6c9de73e60 <MyVideoStream>) at softhddev.c:1247 filled = <optimized out> avpkt = 0x7f6c9de74470 <MyVideoStream+1552> saved_size = 1048576 #14 0x00007f6c9dc45ab8 in VdpauDisplayHandlerThread () at video.c:11017 filled = <optimized out> i = 0 err = <optimized out> allfull = 0 filled = <optimized out> i = 0 err = <optimized out> allfull = 0 ---Type <return> to continue, or q <return> to quit--- decoded = 0 nowtime = {tv_sec = 8018656, tv_nsec = 140104423832442} decoder = 0xa3af60 #15 0x00007f6c9dc5425c in VideoDisplayHandlerThread (dummy=<optimized out>) at video.c:14076 No locals. #16 0x00007f6ca3c764c7 in start_thread (arg=0x7f6c4b7fe700) at pthread_create.c:456 __res = <optimized out> pd = 0x7f6c4b7fe700 now = <optimized out> unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140103099868928, -2986621714053257627, 140737488345806, 140737488345807, 8018656, 140103099868928, 2906499203310233189, 2905988140672165477}, mask_was_saved = 0}}, priv = { pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}} not_first_call = <optimized out> pagesize_m1 = <optimized out> sp = <optimized out> freesize = <optimized out> __PRETTY_FUNCTION__ = "start_thread" #17 0x00007f6ca260a53f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97
-
vdr-plugin-softhddevice-cuvid funktioniert hier ebenfalls problemlos mit nvidia-450.
-
-
For ffmpeg from git you need libvdpau-1.4.
With libvdpau-1.3 I have segfault too.
And, old softhddevice from rofafor compiles with new ffmpeg??!
cuvid works fine, but it needs more memory, 2 GB of RAM is a bit for it, but vdpau works fine with 2 GB of RAM.
libvdpau is 1.4 -> https://gitlab.freedesktop.org/vdpau/libvdpau
Yes, compiles w. ffmpeg-git and works fine. Dont know, if i changed something in past.. sometimes i do;
however this one works fine. So ffmpeg and others are all working fine, including VLC.
-
diff libvdpau-1.3 -> 1.4 shows, that segfault isn't related to libvdpau at all.
-
-
Four weeks after updating my main VDR with your shdd fork there is currently one problem that disturbs daily usage.
VDR aborts maybe two or three times a day with CUDA_ERROR_OUT_OF_MEMORY errors (debug log: softhddev-CUDA_ERROR_OUT_OF_MEMORY.txt).
My current config:
ffmpeg: 4.3.1
nvidia: 450.57
VDR: 2.4.3
softhddevice: 1.0.0 (cuvid driver)
Lars
-
Die ffmpeg Version ist asbach uralt, ich nutze 4.3
-
Die ffmpeg Version ist asbach uralt, ich nutze 4.3
Copy&Paste Fehler 4.3.1 isses
-
CUVID requires more RAM than VDPAU.
And it looks like there is a memory leak in Nvidia's driver.
If you have more than 4GB of RAM, you may not notice this issue. If 2 GB, then with frequent channel switching, you will run out of memory. This is wherever CUVID is - softhddevice, softhdcuvid, mpv.
You can just start playing 4k video in mpv with -hwdec cuda, and you will see a constant decrease in free memory.
There is no such problem with VDPAU and VAAPI.
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!