[{"id":17254,"web_url":"https://patchwork.libcamera.org/comment/17254/","msgid":"<20210526074000.GB1274010@pyrite.rasen.tech>","date":"2021-05-26T07:40:00","subject":"Re: [libcamera-devel] [PATCH RFC 1/2] android: Move ChromeOS\n\tspecific Camera HAL calls to camera3_hal.cpp","submitter":{"id":17,"url":"https://patchwork.libcamera.org/api/people/17/","name":"Paul Elder","email":"paul.elder@ideasonboard.com"},"content":"Hello Hiro,\n\nOn Mon, May 24, 2021 at 08:56:39PM +0900, Hirokazu Honda wrote:\n> ChromeOS specific Camera HAL calls are in android/cros directory.\n> Moves them to android/camera3_hal.cpp by enclosing them with\n> OS_CHROMEOS macro.\n\nI'm not too fond of this movement...\n\n> \n> Signed-off-by: Hirokazu Honda <hiroh@chromium.org>\n> \n> ---\n> Found LOG macro conflict issues in libchrome and libcamera.\n> See the error message.  https://paste.debian.net/1198594/\n> I ask for comments, while I hack the conflict by undefining LOG of\n> libcamera.\n\nI remember running into this conflict.\n\n> ---\n>  src/android/camera3_hal.cpp      | 27 +++++++++++++++++++++++++++\n>  src/android/cros/camera3_hal.cpp | 21 ---------------------\n>  src/android/cros/meson.build     | 17 -----------------\n>  src/android/meson.build          |  3 +--\n>  4 files changed, 28 insertions(+), 40 deletions(-)\n>  delete mode 100644 src/android/cros/camera3_hal.cpp\n>  delete mode 100644 src/android/cros/meson.build\n> \n> diff --git a/src/android/camera3_hal.cpp b/src/android/camera3_hal.cpp\n> index 08773d33..f2d4799f 100644\n> --- a/src/android/camera3_hal.cpp\n> +++ b/src/android/camera3_hal.cpp\n> @@ -5,6 +5,14 @@\n>   * camera3_hal.cpp - Android Camera HALv3 module\n>   */\n> \n> +#if defined(OS_CHROMEOS)\n> +#include <cros-camera/cros_camera_hal.h>\n> +/* HACK. LOG is defined in logging.h in chrome. It conflicts LOG macro in\n> + * libcamera.\n> + */\n> +#undef LOG\n> +#endif\n> +\n>  #include <hardware/camera_common.h>\n> \n>  #include \"libcamera/internal/log.h\"\n> @@ -115,3 +123,22 @@ camera_module_t HAL_MODULE_INFO_SYM = {\n>  \t.init = hal_init,\n>  \t.reserved = {},\n>  };\n> +\n> +#if defined(OS_CHROMEOS)\n> +/*------------------------------------------------------------------------------\n> + * ChromeOS specific Camera HAL callbacks\n> + */\n> +\n> +static void set_up(cros::CameraMojoChannelManagerToken *token)\n> +{\n> +}\n> +\n> +static void tear_down()\n> +{\n> +}\n> +\n> +cros::cros_camera_hal_t CROS_CAMERA_EXPORT CROS_CAMERA_HAL_INFO_SYM = {\n> +\t.set_up = set_up,\n> +\t.tear_down = tear_down\n> +};\n> +#endif\n\nDoes this work? Are these symbols exported?\n\nWhen I wrote this (well, the hunk below) originally, it wasn't being\nexported, that's why in the meson file I have a static_library().\n\n> diff --git a/src/android/cros/camera3_hal.cpp b/src/android/cros/camera3_hal.cpp\n> deleted file mode 100644\n> index 31ad36ac..00000000\n> --- a/src/android/cros/camera3_hal.cpp\n> +++ /dev/null\n> @@ -1,21 +0,0 @@\n> -/* SPDX-License-Identifier: LGPL-2.1-or-later */\n> -/*\n> - * Copyright (C) 2021, Google Inc.\n> - *\n> - * camera3_hal.cpp - cros-specific components of Android Camera HALv3 module\n> - */\n> -\n> -#include <cros-camera/cros_camera_hal.h>\n\nIf I understand correctly, what you want to do here is:\n\n#include \"../camera_hal_manager.h\"\n\nWhich fails because:\n\nsrc/android/cros/../camera_hal_manager.h:20:10: fatal error:\n'libcamera/camera_manager.h' file not found:\n#include <libcamera/camera_manager.h>\n \nIs this correct?\n\nIn this case, adding libcamera_includes to the include_directories list\nin src/android/cros/meson.build would fix this. Which does include\nprivate and android headers, but I think it's better than merging this\ninto android/camera3_hal.cpp.\n\n\nPaul\n\n> -\n> -static void set_up(cros::CameraMojoChannelManagerToken *token)\n> -{\n> -}\n> -\n> -static void tear_down()\n> -{\n> -}\n> -\n> -cros::cros_camera_hal_t CROS_CAMERA_EXPORT CROS_CAMERA_HAL_INFO_SYM = {\n> -\t.set_up = set_up,\n> -\t.tear_down = tear_down\n> -};\n> diff --git a/src/android/cros/meson.build b/src/android/cros/meson.build\n> deleted file mode 100644\n> index 4aab0f20..00000000\n> --- a/src/android/cros/meson.build\n> +++ /dev/null\n> @@ -1,17 +0,0 @@\n> -# SPDX-License-Identifier: CC0-1.0\n> -\n> -if get_option('android_platform') != 'cros'\n> -   subdir_done()\n> -endif\n> -\n> -cros_hal_info_sources = files([\n> -    'camera3_hal.cpp',\n> -])\n> -\n> -cros_hal_info = static_library('cros_hal_info',\n> -                               cros_hal_info_sources,\n> -                               dependencies : dependency('libcros_camera'),\n> -                               c_args : '-Wno-shadow',\n> -                               include_directories : android_includes)\n> -\n> -libcamera_objects += cros_hal_info.extract_objects('camera3_hal.cpp')\n> diff --git a/src/android/meson.build b/src/android/meson.build\n> index 2be20c97..84144f33 100644\n> --- a/src/android/meson.build\n> +++ b/src/android/meson.build\n> @@ -37,10 +37,9 @@ android_deps += [libyuv_dep]\n> \n>  if get_option('android_platform') == 'cros'\n>     libcamera_cpp_args += [ '-DOS_CHROMEOS']\n> +   android_deps += [dependency('libcros_camera')]\n>  endif\n> \n> -subdir('cros')\n> -\n>  android_hal_sources = files([\n>      'camera3_hal.cpp',\n>      'camera_hal_manager.cpp',\n> --\n> 2.31.1.818.g46aad6cb9e-goog","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 5CA40C3200\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 26 May 2021 07:40:10 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 70C4E68924;\n\tWed, 26 May 2021 09:40:09 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id B12E76891E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 26 May 2021 09:40:07 +0200 (CEST)","from pyrite.rasen.tech (unknown\n\t[IPv6:2400:4051:61:600:2c71:1b79:d06d:5032])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 0665D332;\n\tWed, 26 May 2021 09:40:05 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"B+M8VSDI\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1622014807;\n\tbh=/zp+LQHgJJFwp+sInTB0777cef3YTiek7w3ocyAvTa0=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=B+M8VSDIqEY3Moh1xJ6hqJ348dxS9MYb0qJG6lGpuYY6aK3I1IpMMt8bGQgU8FK/k\n\tOmWuBfvVtIaAfvnLpi0e6f0bEj7UuPk46nr2ge4fhj59tK8FLKxyeo20cLER5ZE6Aa\n\tlbRowSYjsx2OeTJ5VJA5SJSmKbT9l1cDNLPVBHwk=","Date":"Wed, 26 May 2021 16:40:00 +0900","From":"paul.elder@ideasonboard.com","To":"Hirokazu Honda <hiroh@chromium.org>","Message-ID":"<20210526074000.GB1274010@pyrite.rasen.tech>","References":"<20210524115640.2334778-1-hiroh@chromium.org>\n\t<20210524115640.2334778-2-hiroh@chromium.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<20210524115640.2334778-2-hiroh@chromium.org>","Subject":"Re: [libcamera-devel] [PATCH RFC 1/2] android: Move ChromeOS\n\tspecific Camera HAL calls to camera3_hal.cpp","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":17260,"web_url":"https://patchwork.libcamera.org/comment/17260/","msgid":"<CAO5uPHNbQofq4dXLydUqk5N1U3R79wnQ11TL4dmxkWvRJ3ci3g@mail.gmail.com>","date":"2021-05-26T08:10:55","subject":"Re: [libcamera-devel] [PATCH RFC 1/2] android: Move ChromeOS\n\tspecific Camera HAL calls to camera3_hal.cpp","submitter":{"id":63,"url":"https://patchwork.libcamera.org/api/people/63/","name":"Hirokazu Honda","email":"hiroh@chromium.org"},"content":"Hi Paul,\n\nOn Wed, May 26, 2021 at 4:40 PM <paul.elder@ideasonboard.com> wrote:\n\n> Hello Hiro,\n>\n> On Mon, May 24, 2021 at 08:56:39PM +0900, Hirokazu Honda wrote:\n> > ChromeOS specific Camera HAL calls are in android/cros directory.\n> > Moves them to android/camera3_hal.cpp by enclosing them with\n> > OS_CHROMEOS macro.\n>\n> I'm not too fond of this movement...\n>\n> >\n> > Signed-off-by: Hirokazu Honda <hiroh@chromium.org>\n> >\n> > ---\n> > Found LOG macro conflict issues in libchrome and libcamera.\n> > See the error message.  https://paste.debian.net/1198594/\n> > I ask for comments, while I hack the conflict by undefining LOG of\n> > libcamera.\n>\n> I remember running into this conflict.\n>\n> > ---\n> >  src/android/camera3_hal.cpp      | 27 +++++++++++++++++++++++++++\n> >  src/android/cros/camera3_hal.cpp | 21 ---------------------\n> >  src/android/cros/meson.build     | 17 -----------------\n> >  src/android/meson.build          |  3 +--\n> >  4 files changed, 28 insertions(+), 40 deletions(-)\n> >  delete mode 100644 src/android/cros/camera3_hal.cpp\n> >  delete mode 100644 src/android/cros/meson.build\n> >\n> > diff --git a/src/android/camera3_hal.cpp b/src/android/camera3_hal.cpp\n> > index 08773d33..f2d4799f 100644\n> > --- a/src/android/camera3_hal.cpp\n> > +++ b/src/android/camera3_hal.cpp\n> > @@ -5,6 +5,14 @@\n> >   * camera3_hal.cpp - Android Camera HALv3 module\n> >   */\n> >\n> > +#if defined(OS_CHROMEOS)\n> > +#include <cros-camera/cros_camera_hal.h>\n> > +/* HACK. LOG is defined in logging.h in chrome. It conflicts LOG macro\n> in\n> > + * libcamera.\n> > + */\n> > +#undef LOG\n> > +#endif\n> > +\n> >  #include <hardware/camera_common.h>\n> >\n> >  #include \"libcamera/internal/log.h\"\n> > @@ -115,3 +123,22 @@ camera_module_t HAL_MODULE_INFO_SYM = {\n> >       .init = hal_init,\n> >       .reserved = {},\n> >  };\n> > +\n> > +#if defined(OS_CHROMEOS)\n> >\n> +/*------------------------------------------------------------------------------\n> > + * ChromeOS specific Camera HAL callbacks\n> > + */\n> > +\n> > +static void set_up(cros::CameraMojoChannelManagerToken *token)\n> > +{\n> > +}\n> > +\n> > +static void tear_down()\n> > +{\n> > +}\n> > +\n> > +cros::cros_camera_hal_t CROS_CAMERA_EXPORT CROS_CAMERA_HAL_INFO_SYM = {\n> > +     .set_up = set_up,\n> > +     .tear_down = tear_down\n> > +};\n> > +#endif\n>\n> Does this work? Are these symbols exported?\n>\n> When I wrote this (well, the hunk below) originally, it wasn't being\n> exported, that's why in the meson file I have a static_library().\n>\n>\nThanks. I think this is correctly exported. I confirmed that tear_down and\nset_up both were called by cros_camera_service.\n\n\n> > diff --git a/src/android/cros/camera3_hal.cpp\n> b/src/android/cros/camera3_hal.cpp\n> > deleted file mode 100644\n> > index 31ad36ac..00000000\n> > --- a/src/android/cros/camera3_hal.cpp\n> > +++ /dev/null\n> > @@ -1,21 +0,0 @@\n> > -/* SPDX-License-Identifier: LGPL-2.1-or-later */\n> > -/*\n> > - * Copyright (C) 2021, Google Inc.\n> > - *\n> > - * camera3_hal.cpp - cros-specific components of Android Camera HALv3\n> module\n> > - */\n> > -\n> > -#include <cros-camera/cros_camera_hal.h>\n>\n> If I understand correctly, what you want to do here is:\n>\n> #include \"../camera_hal_manager.h\"\n>\n> Which fails because:\n>\n> src/android/cros/../camera_hal_manager.h:20:10: fatal error:\n> 'libcamera/camera_manager.h' file not found:\n> #include <libcamera/camera_manager.h>\n>\n> Is this correct?\n>\n>\nCorrect.\n\n\n> In this case, adding libcamera_includes to the include_directories list\n> in src/android/cros/meson.build would fix this. Which does include\n> private and android headers, but I think it's better than merging this\n> into android/camera3_hal.cpp.\n>\n>\nI see.\nSince cros_hal_info is static library, if we include that, I think we have\nto add that to libcamera_link_with like android_camera_metadata?\n\n-Hiro\n\n>\n> Paul\n>\n> > -\n> > -static void set_up(cros::CameraMojoChannelManagerToken *token)\n> > -{\n> > -}\n> > -\n> > -static void tear_down()\n> > -{\n> > -}\n> > -\n> > -cros::cros_camera_hal_t CROS_CAMERA_EXPORT CROS_CAMERA_HAL_INFO_SYM = {\n> > -     .set_up = set_up,\n> > -     .tear_down = tear_down\n> > -};\n> > diff --git a/src/android/cros/meson.build b/src/android/cros/meson.build\n> > deleted file mode 100644\n> > index 4aab0f20..00000000\n> > --- a/src/android/cros/meson.build\n> > +++ /dev/null\n> > @@ -1,17 +0,0 @@\n> > -# SPDX-License-Identifier: CC0-1.0\n> > -\n> > -if get_option('android_platform') != 'cros'\n> > -   subdir_done()\n> > -endif\n> > -\n> > -cros_hal_info_sources = files([\n> > -    'camera3_hal.cpp',\n> > -])\n> > -\n> > -cros_hal_info = static_library('cros_hal_info',\n> > -                               cros_hal_info_sources,\n> > -                               dependencies :\n> dependency('libcros_camera'),\n> > -                               c_args : '-Wno-shadow',\n> > -                               include_directories : android_includes)\n> > -\n> > -libcamera_objects += cros_hal_info.extract_objects('camera3_hal.cpp')\n> > diff --git a/src/android/meson.build b/src/android/meson.build\n> > index 2be20c97..84144f33 100644\n> > --- a/src/android/meson.build\n> > +++ b/src/android/meson.build\n> > @@ -37,10 +37,9 @@ android_deps += [libyuv_dep]\n> >\n> >  if get_option('android_platform') == 'cros'\n> >     libcamera_cpp_args += [ '-DOS_CHROMEOS']\n> > +   android_deps += [dependency('libcros_camera')]\n> >  endif\n> >\n> > -subdir('cros')\n> > -\n> >  android_hal_sources = files([\n> >      'camera3_hal.cpp',\n> >      'camera_hal_manager.cpp',\n> > --\n> > 2.31.1.818.g46aad6cb9e-goog\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 815A9C3200\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 26 May 2021 08:11:07 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 498E468922;\n\tWed, 26 May 2021 10:11:07 +0200 (CEST)","from mail-ed1-x52f.google.com (mail-ed1-x52f.google.com\n\t[IPv6:2a00:1450:4864:20::52f])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 635926891F\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 26 May 2021 10:11:06 +0200 (CEST)","by mail-ed1-x52f.google.com with SMTP id h16so243409edr.6\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 26 May 2021 01:11:06 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=chromium.org header.i=@chromium.org\n\theader.b=\"iNQ1lhcP\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org;\n\ts=google; \n\th=mime-version:references:in-reply-to:from:date:message-id:subject:to\n\t:cc; bh=cw7mz4U/m4c4OQ68LzQRVd799OnYH/f5KJ/XohHUNIo=;\n\tb=iNQ1lhcPjZoLSflBnJSHDLTSjZKEW1LlR0P6Tgg8c6mhRuRe6Fqr5lLEcqu/ByVgbI\n\trlmRB5aD6uj3yiXk6Dnlb/N/jUvwakEo2sazJdvyW1XwUY03nCfiutdEc447lVZErjbq\n\tbID9OzFJs/ONr1sx9DsgnOfJkZ0pp5uPbA47Y=","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:references:in-reply-to:from:date\n\t:message-id:subject:to:cc;\n\tbh=cw7mz4U/m4c4OQ68LzQRVd799OnYH/f5KJ/XohHUNIo=;\n\tb=YPk+XrG1FeEGtl41YaUZ2jxbKEvTu3kKkc3UOgiIC+ureUwQIDxeVCnPkNKqDQ1VBz\n\tAWo3lGrTeL3tiH7Ddfpki2KC1/AWUW6RP7edxykWZbbqrZWw7dcB33OQegy8uWJWUeFi\n\tUuRslwUlnZNtAsIvRbakDtBktCOcaF8MMBJ2HC+zZ9+bQ8/mmEA4sZs+fxUJq8EEMmzY\n\tN33KwFLH60qLBpQ2acvr/bN0WrCgSZALiAEXKxCNfDkGruD7INB81jTBifsRef0wnG+5\n\tbq9BrMVKphK2rlBq7vTVB9qiU+ns4NyAEuYokhnHt3587F2qimnvicnfgKZ2BuggjFwy\n\tgysg==","X-Gm-Message-State":"AOAM531IQkawbmwafsKPAyLu29Mbc7M1TXcH1ToqE63fSui5vPs2gLXX\n\tk0PRbk2obR9sONtZjyh4CGSbNgeGGEw+ymMORBC5JmoEUA4=","X-Google-Smtp-Source":"ABdhPJxZNEXGEFb23NvPf9caf0jCu0jHHsMJuMNKMm1PXqjTHic6arp6rCJuBBrLyCq6H7MKsUan2W1851bqkc6bmuw=","X-Received":"by 2002:a50:8e44:: with SMTP id 4mr36450201edx.244.1622016666073;\n\tWed, 26 May 2021 01:11:06 -0700 (PDT)","MIME-Version":"1.0","References":"<20210524115640.2334778-1-hiroh@chromium.org>\n\t<20210524115640.2334778-2-hiroh@chromium.org>\n\t<20210526074000.GB1274010@pyrite.rasen.tech>","In-Reply-To":"<20210526074000.GB1274010@pyrite.rasen.tech>","From":"Hirokazu Honda <hiroh@chromium.org>","Date":"Wed, 26 May 2021 17:10:55 +0900","Message-ID":"<CAO5uPHNbQofq4dXLydUqk5N1U3R79wnQ11TL4dmxkWvRJ3ci3g@mail.gmail.com>","To":"Paul Elder <paul.elder@ideasonboard.com>","Content-Type":"multipart/alternative; boundary=\"000000000000338be705c3372f16\"","Subject":"Re: [libcamera-devel] [PATCH RFC 1/2] android: Move ChromeOS\n\tspecific Camera HAL calls to camera3_hal.cpp","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":17264,"web_url":"https://patchwork.libcamera.org/comment/17264/","msgid":"<20210526082612.GC1274010@pyrite.rasen.tech>","date":"2021-05-26T08:26:12","subject":"Re: [libcamera-devel] [PATCH RFC 1/2] android: Move ChromeOS\n\tspecific Camera HAL calls to camera3_hal.cpp","submitter":{"id":17,"url":"https://patchwork.libcamera.org/api/people/17/","name":"Paul Elder","email":"paul.elder@ideasonboard.com"},"content":"Hi Hiro,\n\nOn Wed, May 26, 2021 at 05:10:55PM +0900, Hirokazu Honda wrote:\n> Hi Paul,\n> \n> On Wed, May 26, 2021 at 4:40 PM <paul.elder@ideasonboard.com> wrote:\n> \n>     Hello Hiro,\n> \n>     On Mon, May 24, 2021 at 08:56:39PM +0900, Hirokazu Honda wrote:\n>     > ChromeOS specific Camera HAL calls are in android/cros directory.\n>     > Moves them to android/camera3_hal.cpp by enclosing them with\n>     > OS_CHROMEOS macro.\n> \n>     I'm not too fond of this movement...\n> \n>     >\n>     > Signed-off-by: Hirokazu Honda <hiroh@chromium.org>\n>     >\n>     > ---\n>     > Found LOG macro conflict issues in libchrome and libcamera.\n>     > See the error message.  https://paste.debian.net/1198594/\n>     > I ask for comments, while I hack the conflict by undefining LOG of\n>     > libcamera.\n> \n>     I remember running into this conflict.\n> \n>     > ---\n>     >  src/android/camera3_hal.cpp      | 27 +++++++++++++++++++++++++++\n>     >  src/android/cros/camera3_hal.cpp | 21 ---------------------\n>     >  src/android/cros/meson.build     | 17 -----------------\n>     >  src/android/meson.build          |  3 +--\n>     >  4 files changed, 28 insertions(+), 40 deletions(-)\n>     >  delete mode 100644 src/android/cros/camera3_hal.cpp\n>     >  delete mode 100644 src/android/cros/meson.build\n>     >\n>     > diff --git a/src/android/camera3_hal.cpp b/src/android/camera3_hal.cpp\n>     > index 08773d33..f2d4799f 100644\n>     > --- a/src/android/camera3_hal.cpp\n>     > +++ b/src/android/camera3_hal.cpp\n>     > @@ -5,6 +5,14 @@\n>     >   * camera3_hal.cpp - Android Camera HALv3 module\n>     >   */\n>     >\n>     > +#if defined(OS_CHROMEOS)\n>     > +#include <cros-camera/cros_camera_hal.h>\n>     > +/* HACK. LOG is defined in logging.h in chrome. It conflicts LOG macro\n>     in\n>     > + * libcamera.\n>     > + */\n>     > +#undef LOG\n>     > +#endif\n>     > +\n>     >  #include <hardware/camera_common.h>\n>     >\n>     >  #include \"libcamera/internal/log.h\"\n>     > @@ -115,3 +123,22 @@ camera_module_t HAL_MODULE_INFO_SYM = {\n>     >       .init = hal_init,\n>     >       .reserved = {},\n>     >  };\n>     > +\n>     > +#if defined(OS_CHROMEOS)\n>     > +/\n>     *------------------------------------------------------------------------------\n>     > + * ChromeOS specific Camera HAL callbacks\n>     > + */\n>     > +\n>     > +static void set_up(cros::CameraMojoChannelManagerToken *token)\n>     > +{\n>     > +}\n>     > +\n>     > +static void tear_down()\n>     > +{\n>     > +}\n>     > +\n>     > +cros::cros_camera_hal_t CROS_CAMERA_EXPORT CROS_CAMERA_HAL_INFO_SYM = {\n>     > +     .set_up = set_up,\n>     > +     .tear_down = tear_down\n>     > +};\n>     > +#endif\n> \n>     Does this work? Are these symbols exported?\n> \n>     When I wrote this (well, the hunk below) originally, it wasn't being\n>     exported, that's why in the meson file I have a static_library().\n> \n> \n> \n> Thanks. I think this is correctly exported. I confirmed that tear_down and\n> set_up both were called by cros_camera_service.\n>  \n\nAh, okay.\n\n> \n>     > diff --git a/src/android/cros/camera3_hal.cpp b/src/android/cros/\n>     camera3_hal.cpp\n>     > deleted file mode 100644\n>     > index 31ad36ac..00000000\n>     > --- a/src/android/cros/camera3_hal.cpp\n>     > +++ /dev/null\n>     > @@ -1,21 +0,0 @@\n>     > -/* SPDX-License-Identifier: LGPL-2.1-or-later */\n>     > -/*\n>     > - * Copyright (C) 2021, Google Inc.\n>     > - *\n>     > - * camera3_hal.cpp - cros-specific components of Android Camera HALv3\n>     module\n>     > - */\n>     > -\n>     > -#include <cros-camera/cros_camera_hal.h>\n> \n>     If I understand correctly, what you want to do here is:\n> \n>     #include \"../camera_hal_manager.h\"\n> \n>     Which fails because:\n> \n>     src/android/cros/../camera_hal_manager.h:20:10: fatal error:\n>     'libcamera/camera_manager.h' file not found:\n>     #include <libcamera/camera_manager.h>\n> \n>     Is this correct?\n> \n> \n> \n> Correct.\n>  \n> \n>     In this case, adding libcamera_includes to the include_directories list\n>     in src/android/cros/meson.build would fix this. Which does include\n>     private and android headers, but I think it's better than merging this\n>     into android/camera3_hal.cpp.\n> \n> \n> \n> I see.\n> Since cros_hal_info is static library, if we include that, I think we have to\n> add that to libcamera_link_with like android_camera_metadata?\n\nI don't think so, because it's linked back into libcamera:\n\nlibcamera_objects += cros_hal_info.extract_objects('camera3_hal.cpp')\n\n\nPaul\n\n>     > -\n>     > -static void set_up(cros::CameraMojoChannelManagerToken *token)\n>     > -{\n>     > -}\n>     > -\n>     > -static void tear_down()\n>     > -{\n>     > -}\n>     > -\n>     > -cros::cros_camera_hal_t CROS_CAMERA_EXPORT CROS_CAMERA_HAL_INFO_SYM = {\n>     > -     .set_up = set_up,\n>     > -     .tear_down = tear_down\n>     > -};\n>     > diff --git a/src/android/cros/meson.build b/src/android/cros/meson.build\n>     > deleted file mode 100644\n>     > index 4aab0f20..00000000\n>     > --- a/src/android/cros/meson.build\n>     > +++ /dev/null\n>     > @@ -1,17 +0,0 @@\n>     > -# SPDX-License-Identifier: CC0-1.0\n>     > -\n>     > -if get_option('android_platform') != 'cros'\n>     > -   subdir_done()\n>     > -endif\n>     > -\n>     > -cros_hal_info_sources = files([\n>     > -    'camera3_hal.cpp',\n>     > -])\n>     > -\n>     > -cros_hal_info = static_library('cros_hal_info',\n>     > -                               cros_hal_info_sources,\n>     > -                               dependencies : dependency\n>     ('libcros_camera'),\n>     > -                               c_args : '-Wno-shadow',\n>     > -                               include_directories : android_includes)\n>     > -\n>     > -libcamera_objects += cros_hal_info.extract_objects('camera3_hal.cpp')\n>     > diff --git a/src/android/meson.build b/src/android/meson.build\n>     > index 2be20c97..84144f33 100644\n>     > --- a/src/android/meson.build\n>     > +++ b/src/android/meson.build\n>     > @@ -37,10 +37,9 @@ android_deps += [libyuv_dep]\n>     >\n>     >  if get_option('android_platform') == 'cros'\n>     >     libcamera_cpp_args += [ '-DOS_CHROMEOS']\n>     > +   android_deps += [dependency('libcros_camera')]\n>     >  endif\n>     >\n>     > -subdir('cros')\n>     > -\n>     >  android_hal_sources = files([\n>     >      'camera3_hal.cpp',\n>     >      'camera_hal_manager.cpp',\n>     > --\n>     > 2.31.1.818.g46aad6cb9e-goog\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 60E4FC3200\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 26 May 2021 08:26:21 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id B21D368924;\n\tWed, 26 May 2021 10:26:20 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id E4EC86891E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 26 May 2021 10:26:19 +0200 (CEST)","from pyrite.rasen.tech (unknown\n\t[IPv6:2400:4051:61:600:2c71:1b79:d06d:5032])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 6F154332;\n\tWed, 26 May 2021 10:26:18 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"WL56vtRc\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1622017579;\n\tbh=Nqja3Yj8vdCRCSRXKfXCYQue2DfYtaYhjiX+9xk4W+Y=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=WL56vtRcr1l2Fx6/L9OC5hSQ5AQHXwXR/uUrbV2BYrQuzXLpNRbDyw2d8jqZ2gL9R\n\thgOqr/lC03D2Fm/8zihoun1K5bcCfe1f1zGl5CoiKH1NxUTv5UJoCdUNAN17eSUSVN\n\tmeAbFjirpOTQ9Ovqv+AKgODzr2s17O1wtq0CU7eA=","Date":"Wed, 26 May 2021 17:26:12 +0900","From":"paul.elder@ideasonboard.com","To":"Hirokazu Honda <hiroh@chromium.org>","Message-ID":"<20210526082612.GC1274010@pyrite.rasen.tech>","References":"<20210524115640.2334778-1-hiroh@chromium.org>\n\t<20210524115640.2334778-2-hiroh@chromium.org>\n\t<20210526074000.GB1274010@pyrite.rasen.tech>\n\t<CAO5uPHNbQofq4dXLydUqk5N1U3R79wnQ11TL4dmxkWvRJ3ci3g@mail.gmail.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=iso-8859-1","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<CAO5uPHNbQofq4dXLydUqk5N1U3R79wnQ11TL4dmxkWvRJ3ci3g@mail.gmail.com>","Subject":"Re: [libcamera-devel] [PATCH RFC 1/2] android: Move ChromeOS\n\tspecific Camera HAL calls to camera3_hal.cpp","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":17265,"web_url":"https://patchwork.libcamera.org/comment/17265/","msgid":"<CAO5uPHMXSJtCO1XA=TanHDpT8aLcKq7xaSOsbSCxNXWMUfBcjg@mail.gmail.com>","date":"2021-05-26T08:30:40","subject":"Re: [libcamera-devel] [PATCH RFC 1/2] android: Move ChromeOS\n\tspecific Camera HAL calls to camera3_hal.cpp","submitter":{"id":63,"url":"https://patchwork.libcamera.org/api/people/63/","name":"Hirokazu Honda","email":"hiroh@chromium.org"},"content":"Hi Paul,\n\nOn Wed, May 26, 2021 at 5:26 PM <paul.elder@ideasonboard.com> wrote:\n\n> Hi Hiro,\n>\n> On Wed, May 26, 2021 at 05:10:55PM +0900, Hirokazu Honda wrote:\n> > Hi Paul,\n> >\n> > On Wed, May 26, 2021 at 4:40 PM <paul.elder@ideasonboard.com> wrote:\n> >\n> >     Hello Hiro,\n> >\n> >     On Mon, May 24, 2021 at 08:56:39PM +0900, Hirokazu Honda wrote:\n> >     > ChromeOS specific Camera HAL calls are in android/cros directory.\n> >     > Moves them to android/camera3_hal.cpp by enclosing them with\n> >     > OS_CHROMEOS macro.\n> >\n> >     I'm not too fond of this movement...\n> >\n> >     >\n> >     > Signed-off-by: Hirokazu Honda <hiroh@chromium.org>\n> >     >\n> >     > ---\n> >     > Found LOG macro conflict issues in libchrome and libcamera.\n> >     > See the error message.  https://paste.debian.net/1198594/\n> >     > I ask for comments, while I hack the conflict by undefining LOG of\n> >     > libcamera.\n> >\n> >     I remember running into this conflict.\n> >\n> >     > ---\n> >     >  src/android/camera3_hal.cpp      | 27 +++++++++++++++++++++++++++\n> >     >  src/android/cros/camera3_hal.cpp | 21 ---------------------\n> >     >  src/android/cros/meson.build     | 17 -----------------\n> >     >  src/android/meson.build          |  3 +--\n> >     >  4 files changed, 28 insertions(+), 40 deletions(-)\n> >     >  delete mode 100644 src/android/cros/camera3_hal.cpp\n> >     >  delete mode 100644 src/android/cros/meson.build\n> >     >\n> >     > diff --git a/src/android/camera3_hal.cpp\n> b/src/android/camera3_hal.cpp\n> >     > index 08773d33..f2d4799f 100644\n> >     > --- a/src/android/camera3_hal.cpp\n> >     > +++ b/src/android/camera3_hal.cpp\n> >     > @@ -5,6 +5,14 @@\n> >     >   * camera3_hal.cpp - Android Camera HALv3 module\n> >     >   */\n> >     >\n> >     > +#if defined(OS_CHROMEOS)\n> >     > +#include <cros-camera/cros_camera_hal.h>\n> >     > +/* HACK. LOG is defined in logging.h in chrome. It conflicts LOG\n> macro\n> >     in\n> >     > + * libcamera.\n> >     > + */\n> >     > +#undef LOG\n> >     > +#endif\n> >     > +\n> >     >  #include <hardware/camera_common.h>\n> >     >\n> >     >  #include \"libcamera/internal/log.h\"\n> >     > @@ -115,3 +123,22 @@ camera_module_t HAL_MODULE_INFO_SYM = {\n> >     >       .init = hal_init,\n> >     >       .reserved = {},\n> >     >  };\n> >     > +\n> >     > +#if defined(OS_CHROMEOS)\n> >     > +/\n> >\n>  *------------------------------------------------------------------------------\n> >     > + * ChromeOS specific Camera HAL callbacks\n> >     > + */\n> >     > +\n> >     > +static void set_up(cros::CameraMojoChannelManagerToken *token)\n> >     > +{\n> >     > +}\n> >     > +\n> >     > +static void tear_down()\n> >     > +{\n> >     > +}\n> >     > +\n> >     > +cros::cros_camera_hal_t CROS_CAMERA_EXPORT\n> CROS_CAMERA_HAL_INFO_SYM = {\n> >     > +     .set_up = set_up,\n> >     > +     .tear_down = tear_down\n> >     > +};\n> >     > +#endif\n> >\n> >     Does this work? Are these symbols exported?\n> >\n> >     When I wrote this (well, the hunk below) originally, it wasn't being\n> >     exported, that's why in the meson file I have a static_library().\n> >\n> >\n> >\n> > Thanks. I think this is correctly exported. I confirmed that tear_down\n> and\n> > set_up both were called by cros_camera_service.\n> >\n>\n> Ah, okay.\n>\n> >\n> >     > diff --git a/src/android/cros/camera3_hal.cpp b/src/android/cros/\n> >     camera3_hal.cpp\n> >     > deleted file mode 100644\n> >     > index 31ad36ac..00000000\n> >     > --- a/src/android/cros/camera3_hal.cpp\n> >     > +++ /dev/null\n> >     > @@ -1,21 +0,0 @@\n> >     > -/* SPDX-License-Identifier: LGPL-2.1-or-later */\n> >     > -/*\n> >     > - * Copyright (C) 2021, Google Inc.\n> >     > - *\n> >     > - * camera3_hal.cpp - cros-specific components of Android Camera\n> HALv3\n> >     module\n> >     > - */\n> >     > -\n> >     > -#include <cros-camera/cros_camera_hal.h>\n> >\n> >     If I understand correctly, what you want to do here is:\n> >\n> >     #include \"../camera_hal_manager.h\"\n> >\n> >     Which fails because:\n> >\n> >     src/android/cros/../camera_hal_manager.h:20:10: fatal error:\n> >     'libcamera/camera_manager.h' file not found:\n> >     #include <libcamera/camera_manager.h>\n> >\n> >     Is this correct?\n> >\n> >\n> >\n> > Correct.\n> >\n> >\n> >     In this case, adding libcamera_includes to the include_directories\n> list\n> >     in src/android/cros/meson.build would fix this. Which does include\n> >     private and android headers, but I think it's better than merging\n> this\n> >     into android/camera3_hal.cpp.\n> >\n> >\n> >\n> > I see.\n> > Since cros_hal_info is static library, if we include that, I think we\n> have to\n> > add that to libcamera_link_with like android_camera_metadata?\n>\n> I don't think so, because it's linked back into libcamera:\n>\n> libcamera_objects += cros_hal_info.extract_objects('camera3_hal.cpp')\n>\n>\nAck. I am not familiar enough with meson. :p\nI will upload the next version shortly.\n\nThanks,\n-Hiro\n\n>\n> Paul\n>\n> >     > -\n> >     > -static void set_up(cros::CameraMojoChannelManagerToken *token)\n> >     > -{\n> >     > -}\n> >     > -\n> >     > -static void tear_down()\n> >     > -{\n> >     > -}\n> >     > -\n> >     > -cros::cros_camera_hal_t CROS_CAMERA_EXPORT\n> CROS_CAMERA_HAL_INFO_SYM = {\n> >     > -     .set_up = set_up,\n> >     > -     .tear_down = tear_down\n> >     > -};\n> >     > diff --git a/src/android/cros/meson.build\n> b/src/android/cros/meson.build\n> >     > deleted file mode 100644\n> >     > index 4aab0f20..00000000\n> >     > --- a/src/android/cros/meson.build\n> >     > +++ /dev/null\n> >     > @@ -1,17 +0,0 @@\n> >     > -# SPDX-License-Identifier: CC0-1.0\n> >     > -\n> >     > -if get_option('android_platform') != 'cros'\n> >     > -   subdir_done()\n> >     > -endif\n> >     > -\n> >     > -cros_hal_info_sources = files([\n> >     > -    'camera3_hal.cpp',\n> >     > -])\n> >     > -\n> >     > -cros_hal_info = static_library('cros_hal_info',\n> >     > -                               cros_hal_info_sources,\n> >     > -                               dependencies : dependency\n> >     ('libcros_camera'),\n> >     > -                               c_args : '-Wno-shadow',\n> >     > -                               include_directories :\n> android_includes)\n> >     > -\n> >     > -libcamera_objects +=\n> cros_hal_info.extract_objects('camera3_hal.cpp')\n> >     > diff --git a/src/android/meson.build b/src/android/meson.build\n> >     > index 2be20c97..84144f33 100644\n> >     > --- a/src/android/meson.build\n> >     > +++ b/src/android/meson.build\n> >     > @@ -37,10 +37,9 @@ android_deps += [libyuv_dep]\n> >     >\n> >     >  if get_option('android_platform') == 'cros'\n> >     >     libcamera_cpp_args += [ '-DOS_CHROMEOS']\n> >     > +   android_deps += [dependency('libcros_camera')]\n> >     >  endif\n> >     >\n> >     > -subdir('cros')\n> >     > -\n> >     >  android_hal_sources = files([\n> >     >      'camera3_hal.cpp',\n> >     >      'camera_hal_manager.cpp',\n> >     > --\n> >     > 2.31.1.818.g46aad6cb9e-goog\n> >\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id E17B0C3203\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 26 May 2021 08:30:56 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 6AE9768922;\n\tWed, 26 May 2021 10:30:53 +0200 (CEST)","from mail-ed1-x52b.google.com (mail-ed1-x52b.google.com\n\t[IPv6:2a00:1450:4864:20::52b])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id AC60B6891E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 26 May 2021 10:30:51 +0200 (CEST)","by mail-ed1-x52b.google.com with SMTP id w12so338278edx.1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 26 May 2021 01:30:51 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=chromium.org header.i=@chromium.org\n\theader.b=\"cTViBqJH\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org;\n\ts=google; \n\th=mime-version:references:in-reply-to:from:date:message-id:subject:to\n\t:cc; bh=TpjP5U9J40NiZj4phR74j2W0CUBdUsWUPeArkGH07Dc=;\n\tb=cTViBqJHAofp92WmnlklrydT/KYaq5TIwHEwRhOdtd8Jxmp/6KjylZjQ5PEpPN/h32\n\t2kAnUUDiaLHl0k1+L/6ipOGE/mmywz9v6n/Yj68NxHjv1+VkWxsEAm2T3xb/xpxRJt1v\n\tI85FvCv8vxKWbEFG8Ef1n+eh3RnjgShBMrhZQ=","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:references:in-reply-to:from:date\n\t:message-id:subject:to:cc;\n\tbh=TpjP5U9J40NiZj4phR74j2W0CUBdUsWUPeArkGH07Dc=;\n\tb=isV5hCNNpbl8GqmHqwHoZ2+3E9aLiRcu5FGRp12wF2Llk4XXVzjHajG7FQjdTn5k7c\n\tSGCcyp1LSawUlP2fcxchi6ZBsZpevWUeagQYrCyt9mDv3/6jwFLMYRz/7nwLFHTY82ip\n\t94FNof5nEds8IE6ijlUlk+rHYgC6ZsFFPMa82RThyJ+D3i+U11Ap1qELDW5cf2Jq+efr\n\tTAEmbDAb4OtiEWUo5VqvYyRUgx0OdxXfFmyE7H2XevmUf25KzZ7UdZWfsXueMymYHhCL\n\tD7xhfmBNwk9ndFHgP4o4b27zipHjVOjMV/ekxtpd6LZ4o3g5Lok473s6H+RQ2PWsDEIZ\n\tbcxA==","X-Gm-Message-State":"AOAM531rrSOPeGXn6MkZP/7u8/yhWgdUBFZEg2AaKyEibHYGp42TbwTg\n\tmNh9wLuw3P4b0Xp/hde7FsNuoUdF4u35MbJBtDBgdg==","X-Google-Smtp-Source":"ABdhPJzK2W5jLLcLIEbYGLjN04CllziCKIWlW3HzubXt1JpCgBwMWuVxJZGLRiQaa8HyLrSMw3fyBEGCbsSDFVdOYVg=","X-Received":"by 2002:a05:6402:50c6:: with SMTP id\n\th6mr36444611edb.327.1622017851362; \n\tWed, 26 May 2021 01:30:51 -0700 (PDT)","MIME-Version":"1.0","References":"<20210524115640.2334778-1-hiroh@chromium.org>\n\t<20210524115640.2334778-2-hiroh@chromium.org>\n\t<20210526074000.GB1274010@pyrite.rasen.tech>\n\t<CAO5uPHNbQofq4dXLydUqk5N1U3R79wnQ11TL4dmxkWvRJ3ci3g@mail.gmail.com>\n\t<20210526082612.GC1274010@pyrite.rasen.tech>","In-Reply-To":"<20210526082612.GC1274010@pyrite.rasen.tech>","From":"Hirokazu Honda <hiroh@chromium.org>","Date":"Wed, 26 May 2021 17:30:40 +0900","Message-ID":"<CAO5uPHMXSJtCO1XA=TanHDpT8aLcKq7xaSOsbSCxNXWMUfBcjg@mail.gmail.com>","To":"Paul Elder <paul.elder@ideasonboard.com>","Content-Type":"multipart/alternative; boundary=\"000000000000d9b4fe05c3377533\"","Subject":"Re: [libcamera-devel] [PATCH RFC 1/2] android: Move ChromeOS\n\tspecific Camera HAL calls to camera3_hal.cpp","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]