diff mbox series

[v2] package/libcamera-apps: enable LIBAV only if libdrm is present

Message ID 20230220071846.2334907-1-marcus.folkesson@gmail.com
State Changes Requested
Headers show
Series [v2] package/libcamera-apps: enable LIBAV only if libdrm is present | expand

Commit Message

Marcus Folkesson Feb. 20, 2023, 7:18 a.m. UTC
Since commit 35266e84043f880d7591e52b71a8c5b8d0e4717d, libcamera-apps
does enable LIBAV by default which depends on libdrm.

Fixes:
- http://autobuild.buildroot.net/results/548f2a3b353ce4693fb60d7fb1e06e02af22991c/

/home/buildroot/autobuild/run/instance-1/output-1/build/libcamera-apps-1.1.1/encoder/libav_encoder.cpp:13:10: fatal error: libdrm/drm_fourcc.h: No such file or directory
   13 | #include <libdrm/drm_fourcc.h>
      |          ^~~~~~~~~~~~~~~~~~~~~

Signed-off-by: Marcus Folkesson <marcus.folkesson@gmail.com>
---

Notes:
    v2:
        -Add dependency to ffmpeg

 package/libcamera-apps/Config.in         | 1 +
 package/libcamera-apps/libcamera-apps.mk | 4 +++-
 2 files changed, 4 insertions(+), 1 deletion(-)

Comments

Thomas Petazzoni Feb. 20, 2023, 9:17 p.m. UTC | #1
Hello Marcus,

On Mon, 20 Feb 2023 08:18:46 +0100
Marcus Folkesson <marcus.folkesson@gmail.com> wrote:

> Since commit 35266e84043f880d7591e52b71a8c5b8d0e4717d, libcamera-apps
> does enable LIBAV by default which depends on libdrm.
> 
> Fixes:
> - http://autobuild.buildroot.net/results/548f2a3b353ce4693fb60d7fb1e06e02af22991c/
> 
> /home/buildroot/autobuild/run/instance-1/output-1/build/libcamera-apps-1.1.1/encoder/libav_encoder.cpp:13:10: fatal error: libdrm/drm_fourcc.h: No such file or directory
>    13 | #include <libdrm/drm_fourcc.h>
>       |          ^~~~~~~~~~~~~~~~~~~~~
> 
> Signed-off-by: Marcus Folkesson <marcus.folkesson@gmail.com>

I need to do some test builds, but I believe this patch is not correct.
What the error message seems to say is that when you build libav
support in libcamera-apps, then libdrm support is needed.

But what you're patch is doing is that it's forcing to have libva as
soon as libdrm is available, which I'm not sure is needed.

> diff --git a/package/libcamera-apps/Config.in b/package/libcamera-apps/Config.in
> index 711fd6de05..d0cc6a4210 100644
> --- a/package/libcamera-apps/Config.in
> +++ b/package/libcamera-apps/Config.in
> @@ -15,6 +15,7 @@ config BR2_PACKAGE_LIBCAMERA_APPS
>  	select BR2_PACKAGE_TIFF
>  	select BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7 && (BR2_PACKAGE_HAS_LIBEGL || BR2_PACKAGE_HAS_LIBGL)
>  	select BR2_PACKAGE_LIBDRM if BR2_PACKAGE_XORG7 && (BR2_PACKAGE_HAS_LIBEGL || BR2_PACKAGE_HAS_LIBGL)
> +	select BR2_PACKAGE_FFMPEG if BR2_PACKAGE_LIBDRM
>  	select BR2_PACKAGE_LIBEPOXY if BR2_PACKAGE_XORG7 && (BR2_PACKAGE_HAS_LIBEGL || BR2_PACKAGE_HAS_LIBGL)
>  	select BR2_PACKAGE_QT5BASE_GUI if BR2_PACKAGE_QT5
>  	select BR2_PACKAGE_QT5BASE_WIDGETS if BR2_PACKAGE_QT5
> diff --git a/package/libcamera-apps/libcamera-apps.mk b/package/libcamera-apps/libcamera-apps.mk
> index 290ee9a026..1464875298 100644
> --- a/package/libcamera-apps/libcamera-apps.mk
> +++ b/package/libcamera-apps/libcamera-apps.mk
> @@ -23,10 +23,12 @@ LIBCAMERA_APPS_CONF_OPTS = \
>  	-DENABLE_TFLITE=0
>  
>  ifeq ($(BR2_PACKAGE_LIBDRM),y)
> -LIBCAMERA_APPS_DEPENDENCIES += libdrm
> +LIBCAMERA_APPS_DEPENDENCIES += ffmpeg libdrm
>  LIBCAMERA_APPS_CONF_OPTS += -DENABLE_DRM=1
> +LIBCAMERA_APPS_CONF_OPTS += -DENABLE_LIBAV=1
>  else
>  LIBCAMERA_APPS_CONF_OPTS += -DENABLE_DRM=0
> +LIBCAMERA_APPS_CONF_OPTS += -DENABLE_LIBAV=0
>  endif

Could you instead try something like this:

ifeq ($(BR2_PACKAGE_FFMPEG)$(BR2_PACKAGE_LIBDRM),yy)
LIBCAMERA_APPS_DEPENDENCIES += ffmpeg libdrm
LIBCAMERA_APPS_CONF_OPTS += -DENABLE_LIBAV=1
else
LIBCAMERA_APPS_CONF_OPTS += -DENABLE_LIBAV=0
endif

To test this, you need to test 4 different cases:

 - libcamera-apps enabled, ffmpeg disabled, libdrm disabled
 - libcamera-apps enabled, ffmpeg enabled, libdrm disabled
 - libcamera-apps enabled, ffmpeg disabled, libdrm enabled
 - libcamera-apps enabled, ffmpeg enabled, libdrm enabled

Best regards,

Thomas
Thomas Petazzoni Feb. 20, 2023, 9:34 p.m. UTC | #2
On Mon, 20 Feb 2023 22:17:21 +0100
Thomas Petazzoni <thomas.petazzoni@bootlin.com> wrote:

> I need to do some test builds, but I believe this patch is not correct.

I confirm the patch is not correct: if you have a configuration with
libcamera-apps and libdrm (but ffmpeg disabled), it builds just fine,
and DRM support in camera-apps is enabled.

In this configuration, your patch forces a dependency on ffmpeg, which
is not correct.

Could you have a look at my previous suggestion instead?

Thanks a lot,

Thomas
diff mbox series

Patch

diff --git a/package/libcamera-apps/Config.in b/package/libcamera-apps/Config.in
index 711fd6de05..d0cc6a4210 100644
--- a/package/libcamera-apps/Config.in
+++ b/package/libcamera-apps/Config.in
@@ -15,6 +15,7 @@  config BR2_PACKAGE_LIBCAMERA_APPS
 	select BR2_PACKAGE_TIFF
 	select BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7 && (BR2_PACKAGE_HAS_LIBEGL || BR2_PACKAGE_HAS_LIBGL)
 	select BR2_PACKAGE_LIBDRM if BR2_PACKAGE_XORG7 && (BR2_PACKAGE_HAS_LIBEGL || BR2_PACKAGE_HAS_LIBGL)
+	select BR2_PACKAGE_FFMPEG if BR2_PACKAGE_LIBDRM
 	select BR2_PACKAGE_LIBEPOXY if BR2_PACKAGE_XORG7 && (BR2_PACKAGE_HAS_LIBEGL || BR2_PACKAGE_HAS_LIBGL)
 	select BR2_PACKAGE_QT5BASE_GUI if BR2_PACKAGE_QT5
 	select BR2_PACKAGE_QT5BASE_WIDGETS if BR2_PACKAGE_QT5
diff --git a/package/libcamera-apps/libcamera-apps.mk b/package/libcamera-apps/libcamera-apps.mk
index 290ee9a026..1464875298 100644
--- a/package/libcamera-apps/libcamera-apps.mk
+++ b/package/libcamera-apps/libcamera-apps.mk
@@ -23,10 +23,12 @@  LIBCAMERA_APPS_CONF_OPTS = \
 	-DENABLE_TFLITE=0
 
 ifeq ($(BR2_PACKAGE_LIBDRM),y)
-LIBCAMERA_APPS_DEPENDENCIES += libdrm
+LIBCAMERA_APPS_DEPENDENCIES += ffmpeg libdrm
 LIBCAMERA_APPS_CONF_OPTS += -DENABLE_DRM=1
+LIBCAMERA_APPS_CONF_OPTS += -DENABLE_LIBAV=1
 else
 LIBCAMERA_APPS_CONF_OPTS += -DENABLE_DRM=0
+LIBCAMERA_APPS_CONF_OPTS += -DENABLE_LIBAV=0
 endif
 
 ifeq ($(BR2_PACKAGE_XORG7),y)