Ich habe das Makefile nun eingecheckt.
[softhdcuvid] Problem mit FFMPEG v8.1
-
-
Hallo Jojo
I'm trying to compile the plugin in DRM mode and get the errors below
I have latest ffmpeg , libva and libdrm 2.4.127-1
Is this something that can be fixed in the plugin?
Code
Display Morecc -g -O3 -Wall -fPIC -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -I/home/carel/src/vdr/vdr-2.7.7-client-7/include -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/libdrm -I./opengl -I./ -DUSE_ZAPCOCKPIT -DUSE_MENUORG -DUSE_TPID -DUSE_HIDE_FIRST_RECORDING_LEVEL -DUSE_UNDELETE -DUSE_PERMASHIFT -DUSE_FADVISE_ENABLE -DUSE_PREFER_READERS_IN_STATE_LOCK -DUSE_NO_EIT_SCAN_FOR_IPTV -DUSE_NO_STOP_RECORDING_FOR_IPTV -DUSE_PREVENT_RETUNE_AND_OBSOLETE_SATIP -DUSE_MULTIPLE_DIGITS_MENU_ITEMS -DPLUGIN_NAME_I18N='"softhddrm"' -D_GNU_SOURCE -DDEBUG -DHAVE_GL -DAV_INFO -DAV_INFO_TIME=3000 -DUSE_MPEG_COMPLETE -DH264_EOS_TRICKSPEED -DUSE_VDR_SPU -DUSE_OPENGLOSD -DUSE_GLX -DUSE_DRM -DVAAPI -DUSE_SCREENSAVER -DGIT_REV='"c866670"' -g -W -Wextra -c -o video.o video.c drm.c:485:67: error: passing argument 3 of ‘eglCreateWindowSurface’ makes integer from pointer without a cast [-Wint-conversion] 485 | eglSurface = eglCreateWindowSurface(eglDisplay, eglConfig, gbm.surface, NULL); | ~~~^~~~~~~~ | | | struct gbm_surface * In file included from video.c:173: /usr/include/EGL/egl.h:136:109: note: expected ‘EGLNativeWindowType’ {aka ‘long unsigned int’} but argument is of type ‘struct gbm_surface *’ 136 | EGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface (EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint *attrib_list); | ~~~~~~~~~~~~~~~~~~~~^~~ In file included from video.c:603: hdr.c: In function ‘set_hdr_metadata’: hdr.c:479:12: error: assignment to ‘struct AVMasteringDisplayMetadata *’ from incompatible pointer type ‘uint8_t *’ {aka ‘unsigned char *’} [-Wincompatible-pointer-types] 479 | md = sd1->data; | ^ hdr.c:482:12: error: assignment to ‘struct AVContentLightMetadata *’ from incompatible pointer type ‘uint8_t *’ {aka ‘unsigned char *’} [-Wincompatible-pointer-types] 482 | ld = sd2->data; | ^ video.c: In function ‘VideoDisplayHandlerThread’: video.c:5810:5: error: initialization of ‘void (*)(void *)’ from incompatible pointer type ‘void (*)(void)’ [-Wincompatible-pointer-types] 5810 | pthread_cleanup_push(delete_decode, NULL); | ^~~~~~~~~~~~~~~~~~~~ video.c:5804:6: note: ‘delete_decode’ declared here 5804 | void delete_decode() { Debug(3, "decoder thread exit\n"); } | ^~~~~~~~~~~~~ video.c: In function ‘VideoHandlerThread’: video.c:5923:5: error: initialization of ‘void (*)(void *)’ from incompatible pointer type ‘void (*)(void)’ [-Wincompatible-pointer-types] 5923 | pthread_cleanup_push(exit_display, NULL); | ^~~~~~~~~~~~~~~~~~~~ video.c:5823:6: note: ‘exit_display’ declared here 5823 | void exit_display() { -
Nachtrag:
Compiles OK with gcc-13, fails with: "gcc (Debian 15.2.0-7) 15.2.0"

-
Da ist der gcc-15 etwas zu kritisch
Mein debian hat noch gcc-12Ich schau mir mal an ob ich die Problemstellen casten kann.
-
with: "gcc (Debian 15.2.0-7) 15.2.0"
Probier mal die angehängten Files ob es damit geht.
-
Unfortunately not completely yet:
Code
Display Moredrm.c:187:13: error: implicit declaration of function ‘InitBo’ [-Wimplicit-function-declaration] 187 | InitBo(render->bpp); | ^~~~~~ drm.c: In function ‘FindDevice’: drm.c:317:40: warning: comparison of integer expressions of different signedness: ‘uint32_t’ {aka ‘unsigned int’} and ‘int’ [-Wsign-compare] 317 | mode->vrefresh == DRMRefresh && !(mode->flags & DRM_MODE_FLAG_INTERLACE)) { | ^~ drm.c:367:18: warning: unused variable ‘zpos’ [-Wunused-variable] 367 | uint64_t zpos = 0; | ^~~~ drm.c:203:32: warning: unused variable ‘props’ [-Wunused-variable] 203 | drmModeObjectPropertiesPtr props; | ^~~~~ drm.c: In function ‘VideoInitDrm’: drm.c:414:9: warning: unused variable ‘i’ [-Wunused-variable] 414 | int i; | ^ drm.c: At top level: drm.c:477:6: warning: conflicting types for ‘InitBo’; have ‘void(int)’ 477 | void InitBo(int bpp) { | ^~~~~~ drm.c:187:13: note: previous implicit declaration of ‘InitBo’ with type ‘void(int)’ 187 | InitBo(render->bpp); | ^~~~~~ drm.c: In function ‘InitBo’: drm.c:485:65: error: ‘eglNativeWindowType’ undeclared (first use in this function); did you mean ‘EGLNativeWindowType’? 485 | owSurface(eglDisplay, eglConfig, (eglNativeWindowType)gbm.surface, NULL); | ^~~~~~~~~~~~~~~~~~~ | EGLNativeWindowType drm.c:485:65: note: each undeclared identifier is reported only once for each function it appears in drm.c:485:85: error: expected ‘)’ before ‘gbm’ 485 | , eglConfig, (eglNativeWindowType)gbm.surface, NULL); | ^~~ | ) drm.c:485:18: error: too few arguments to function ‘eglCreateWindowSurface’; expected 4, have 3 485 | eglSurface = eglCreateWindowSurface(eglDisplay, eglConfig, (eglNativeWindowType)gbm.surface, NULL); | ^~~~~~~~~~~~~~~~~~~~~~ -
Participate now!
Don’t have an account yet? Register yourself now and be a part of our community!