[{"id":26071,"web_url":"https://patchwork.libcamera.org/comment/26071/","msgid":"<167101623113.9133.11957642095993088597@Monstersaurus>","date":"2022-12-14T11:10:31","subject":"Re: [libcamera-devel] [PATCH v8 0/7] Add CrOS JEA implementation","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Hi Harvey,\n\nCould you add the post-commit checkstyle hooks so you get notified about\ncheckstyle issues please?\n\n  cp utils/hooks/post-commit .git/hooks/\n\n\nI think the PUBLIC_FRAME_BUFFER_ALLOCATOR_IMPLEMENTATION indendation\nwe'd ignore, but the others in \"Add JEA implementation\" look appropriate\nto fix.\n\n--\nKieran\n\n\n\n-------------------------------------------------------------------------\n01b369fa09fb79aaca3c9a5e915e3652ae7d32df Allow inheritance of FrameBuffer\n-------------------------------------------------------------------------\nNo issue detected\n\n--------------------------------------------------------------------------------------------------\n3458f84f864921cb45ca8e3a0d7e9e347a3b59a7 Add HALFrameBuffer and replace FrameBuffer in src/android\n--------------------------------------------------------------------------------------------------\n--- src/android/frame_buffer_allocator.h\n+++ src/android/frame_buffer_allocator.h\n@@ -36,21 +36,21 @@\n \t\tint halPixelFormat, const libcamera::Size &size, uint32_t usage);\n };\n\n-#define PUBLIC_FRAME_BUFFER_ALLOCATOR_IMPLEMENTATION\t\t\t\\\n-PlatformFrameBufferAllocator::PlatformFrameBufferAllocator(\t\t\\\n-\tCameraDevice *const cameraDevice)\t\t\t\t\\\n-\t: Extensible(std::make_unique<Private>(cameraDevice))\t\t\\\n-{\t\t\t\t\t\t\t\t\t\\\n-}\t\t\t\t\t\t\t\t\t\\\n-PlatformFrameBufferAllocator::~PlatformFrameBufferAllocator()\t\t\\\n-{\t\t\t\t\t\t\t\t\t\\\n-}\t\t\t\t\t\t\t\t\t\\\n-std::unique_ptr<HALFrameBuffer> \t\t\t\t\t\\\n-PlatformFrameBufferAllocator::allocate(int halPixelFormat,\t\t\\\n-\t\t\t\t       const libcamera::Size &size,\t\\\n-\t\t\t\t       uint32_t usage)\t\t\t\\\n-{\t\t\t\t\t\t\t\t\t\\\n-\treturn _d()->allocate(halPixelFormat, size, usage);\t\t\\\n-}\n+#define PUBLIC_FRAME_BUFFER_ALLOCATOR_IMPLEMENTATION                        \\\n+\tPlatformFrameBufferAllocator::PlatformFrameBufferAllocator(         \\\n+\t\tCameraDevice *const cameraDevice)                           \\\n+\t\t: Extensible(std::make_unique<Private>(cameraDevice))       \\\n+\t{                                                                   \\\n+\t}                                                                   \\\n+\tPlatformFrameBufferAllocator::~PlatformFrameBufferAllocator()       \\\n+\t{                                                                   \\\n+\t}                                                                   \\\n+\tstd::unique_ptr<HALFrameBuffer>                                     \\\n+\tPlatformFrameBufferAllocator::allocate(int halPixelFormat,          \\\n+\t\t\t\t\t       const libcamera::Size &size, \\\n+\t\t\t\t\t       uint32_t usage)              \\\n+\t{                                                                   \\\n+\t\treturn _d()->allocate(halPixelFormat, size, usage);         \\\n+\t}\n\n #endif /* __ANDROID_FRAME_BUFFER_ALLOCATOR_H__ */\n---\n1 potential issue detected, please review\n\n----------------------------------------------------------------------------\n214944ac387b6f22e30e16ea7950a4f40899047b Add meson.build in src/android/jpeg\n----------------------------------------------------------------------------\nNo issue detected\n\n----------------------------------------------------------------------------------------\n2ed81d92f699b2c62c61e808066520f544fa5e40 Add an internal Encoder class in EncoderLibJpeg\n----------------------------------------------------------------------------------------\n--- src/android/jpeg/encoder_libjpeg.cpp\n+++ src/android/jpeg/encoder_libjpeg.cpp\n@@ -201,8 +201,8 @@\n }\n\n int EncoderLibJpeg::encode(const std::vector<Span<uint8_t>> &src,\n-\t\t\t\t    Span<uint8_t> dest, Span<const uint8_t> exifData,\n-\t\t\t\t    unsigned int quality)\n+\t\t\t   Span<uint8_t> dest, Span<const uint8_t> exifData,\n+\t\t\t   unsigned int quality)\n {\n \treturn encoder_.encode(src, std::move(dest), std::move(exifData), quality);\n }\n---\n1 potential issue detected, please review\n\n-------------------------------------------------------------------------------------------------\nf115685e544741d3084a603794328c4beb8f608c Move generateThumbnail from PostProcessorJpeg to Encoder\n-------------------------------------------------------------------------------------------------\nNo issue detected\n\n------------------------------------------------------------------------------\n3113d70138d5204fd956ae1e0fc496a106a3e96f Pass StreamBuffer to Encoder::encoder\n------------------------------------------------------------------------------\nNo issue detected\n\n---------------------------------------------------------------\n72e0597c7e3af7ac9e80ee2db9b7c212ab1172d8 Add JEA implementation\n---------------------------------------------------------------\n--- src/android/jpeg/encoder_jea.cpp\n+++ src/android/jpeg/encoder_jea.cpp\n@@ -56,9 +56,9 @@\n }\n\n void EncoderJea::generateThumbnail(const libcamera::FrameBuffer &source,\n-\t\t\t\t  const libcamera::Size &targetSize,\n-\t\t\t\t  unsigned int quality,\n-\t\t\t\t  std::vector<unsigned char> *thumbnail)\n+\t\t\t\t   const libcamera::Size &targetSize,\n+\t\t\t\t   unsigned int quality,\n+\t\t\t\t   std::vector<unsigned char> *thumbnail)\n {\n \tif (!jpegCompressor_)\n \t\treturn;\n@@ -71,11 +71,11 @@\n\n \t// JEA needs consecutive memory.\n \tunsigned long size = 0, index = 0;\n-\tfor (const auto& plane : frame.planes())\n+\tfor (const auto &plane : frame.planes())\n \t\tsize += plane.size();\n\n \tstd::vector<uint8_t> data(size);\n-\tfor (const auto& plane : frame.planes()) {\n+\tfor (const auto &plane : frame.planes()) {\n \t\tmemcpy(&data[index], plane.data(), plane.size());\n \t\tindex += plane.size();\n \t}\n---\n2 potential issues detected, please review\n\n\n\n\nQuoting Harvey Yang via libcamera-devel (2022-12-14 09:33:23)\n> Hi all,\n> \n> Updated based on Laurent's comments, and fixed a memory flaky\n> issue in JEA's generateThumbnail function.\n> \n> Sorry that the issue took me so long, with other issues in CrOS camera\n> service mixed together :p\n> \n> BR,\n> Harvey\n> \n> Harvey Yang (7):\n>   Allow inheritance of FrameBuffer\n>   Add HALFrameBuffer and replace FrameBuffer in src/android\n>   Add meson.build in src/android/jpeg\n>   Add an internal Encoder class in EncoderLibJpeg\n>   Move generateThumbnail from PostProcessorJpeg to Encoder\n>   Pass StreamBuffer to Encoder::encoder\n>   Add JEA implementation\n> \n>  include/libcamera/framebuffer.h               |   3 +-\n>  src/android/camera_device.cpp                 |   5 +-\n>  src/android/camera_device.h                   |   3 +-\n>  src/android/camera_request.h                  |   3 +-\n>  src/android/cros/camera3_hal.cpp              |   4 +-\n>  src/android/cros_mojo_token.h                 |  12 ++\n>  src/android/frame_buffer_allocator.h          |   7 +-\n>  src/android/hal_framebuffer.cpp               |  22 ++++\n>  src/android/hal_framebuffer.h                 |  26 +++++\n>  src/android/jpeg/encoder.h                    |   9 +-\n>  src/android/jpeg/encoder_jea.cpp              | 105 ++++++++++++++++++\n>  src/android/jpeg/encoder_jea.h                |  35 ++++++\n>  src/android/jpeg/encoder_libjpeg.cpp          |  85 ++++++++++++--\n>  src/android/jpeg/encoder_libjpeg.h            |  46 +++++---\n>  src/android/jpeg/meson.build                  |  17 +++\n>  src/android/jpeg/post_processor_jpeg.cpp      |  63 ++---------\n>  src/android/jpeg/post_processor_jpeg.h        |  11 +-\n>  src/android/meson.build                       |   6 +-\n>  .../mm/cros_frame_buffer_allocator.cpp        |   9 +-\n>  .../mm/generic_frame_buffer_allocator.cpp     |  11 +-\n>  20 files changed, 373 insertions(+), 109 deletions(-)\n>  create mode 100644 src/android/cros_mojo_token.h\n>  create mode 100644 src/android/hal_framebuffer.cpp\n>  create mode 100644 src/android/hal_framebuffer.h\n>  create mode 100644 src/android/jpeg/encoder_jea.cpp\n>  create mode 100644 src/android/jpeg/encoder_jea.h\n>  create mode 100644 src/android/jpeg/meson.build\n> \n> -- \n> 2.39.0.rc1.256.g54fd8350bd-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 8DF3CC31E9\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 14 Dec 2022 11:10:36 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id F1BF463362;\n\tWed, 14 Dec 2022 12:10:35 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 65FCB61F23\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 14 Dec 2022 12:10:34 +0100 (CET)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust3082.18-1.cable.virginm.net [86.31.172.11])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id E392149C;\n\tWed, 14 Dec 2022 12:10:33 +0100 (CET)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1671016236;\n\tbh=otsVG5BlQJ+zVROfaGBMM1fkHoeq/ki42EO/fpHh0Vg=;\n\th=In-Reply-To:References:To:Date:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=MyaS5nHwPDonJZ+i194sdewTAayUlr9CETb9MpqCvTnUU34VbVieBAF7VZ6dRCVfY\n\tIgG4jp83/OUmYC/oIT5xa+RBCWzluRgiZjy92QrC933zmQP3s0wDI5IlYCBz5mzvOU\n\tBcX0Uyy9h6GrJgfsTUAGg2RMtKM45hhpE27Or93AWJANIAKJ16DDgD546lJz81UiQa\n\tr3gkIvpnpk+Zb9092dG/lfPB2ALOUjTw91UrbjDSGDzATL2acqrIEBo/9fFUIGmreX\n\tCtCHQ2BlgLeNkjf4twdt16wv+h9VpnEiUYeluE/ndfIumag/8o7fGFoC0GtuVFFzEN\n\tSTBx8aDr1gnww==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1671016234;\n\tbh=otsVG5BlQJ+zVROfaGBMM1fkHoeq/ki42EO/fpHh0Vg=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=vcCXPMnQpEHoTxRa6Xxi09kaZz/8b9L7/v/Vja/EDI0EHcOkR3m3C8XGm5zL8fzGx\n\tQxdIiqOCk/CeNjIgkxV2HckXotymoosaVHY3NLAfLzJzWgrEmfOqNqOwLhFIl8S8pe\n\thDRvU5uNhBP4dJCvOFD3nxmbqBOWpv6Yt++9gqFQ="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"vcCXPMnQ\"; dkim-atps=neutral","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20221214093330.3345421-1-chenghaoyang@google.com>","References":"<20221214093330.3345421-1-chenghaoyang@google.com>","To":"Harvey Yang <chenghaoyang@chromium.org>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Wed, 14 Dec 2022 11:10:31 +0000","Message-ID":"<167101623113.9133.11957642095993088597@Monstersaurus>","User-Agent":"alot/0.10","Subject":"Re: [libcamera-devel] [PATCH v8 0/7] Add CrOS JEA implementation","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>","From":"Kieran Bingham via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"Harvey Yang <chenghaoyang@google.com>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":26078,"web_url":"https://patchwork.libcamera.org/comment/26078/","msgid":"<CAEB1ahuO9KvYWVy0gUKYj4JUM_-LvyHK0f2k_fxkGNcqd879kw@mail.gmail.com>","date":"2022-12-14T14:47:27","subject":"Re: [libcamera-devel] [PATCH v8 0/7] Add CrOS JEA implementation","submitter":{"id":117,"url":"https://patchwork.libcamera.org/api/people/117/","name":"Cheng-Hao Yang","email":"chenghaoyang@chromium.org"},"content":"Right. Thanks Kieran for catching that!\nAdded the post-commit script. Will try to prevent it from happening again.\nI'll wait a bit for other comments/reviews before sending another version\nof patches, to avoid the spamming.\n\nBR,\nHarvey\n\nOn Wed, Dec 14, 2022 at 7:10 PM Kieran Bingham <\nkieran.bingham@ideasonboard.com> wrote:\n\n> Hi Harvey,\n>\n> Could you add the post-commit checkstyle hooks so you get notified about\n> checkstyle issues please?\n>\n>   cp utils/hooks/post-commit .git/hooks/\n>\n>\n> I think the PUBLIC_FRAME_BUFFER_ALLOCATOR_IMPLEMENTATION indendation\n> we'd ignore, but the others in \"Add JEA implementation\" look appropriate\n> to fix.\n>\n> --\n> Kieran\n>\n>\n>\n> -------------------------------------------------------------------------\n> 01b369fa09fb79aaca3c9a5e915e3652ae7d32df Allow inheritance of FrameBuffer\n> -------------------------------------------------------------------------\n> No issue detected\n>\n>\n> --------------------------------------------------------------------------------------------------\n> 3458f84f864921cb45ca8e3a0d7e9e347a3b59a7 Add HALFrameBuffer and replace\n> FrameBuffer in src/android\n>\n> --------------------------------------------------------------------------------------------------\n> --- src/android/frame_buffer_allocator.h\n> +++ src/android/frame_buffer_allocator.h\n> @@ -36,21 +36,21 @@\n>                 int halPixelFormat, const libcamera::Size &size, uint32_t\n> usage);\n>  };\n>\n> -#define PUBLIC_FRAME_BUFFER_ALLOCATOR_IMPLEMENTATION                   \\\n> -PlatformFrameBufferAllocator::PlatformFrameBufferAllocator(            \\\n> -       CameraDevice *const cameraDevice)                               \\\n> -       : Extensible(std::make_unique<Private>(cameraDevice))           \\\n> -{                                                                      \\\n> -}                                                                      \\\n> -PlatformFrameBufferAllocator::~PlatformFrameBufferAllocator()          \\\n> -{                                                                      \\\n> -}                                                                      \\\n> -std::unique_ptr<HALFrameBuffer>                                        \\\n> -PlatformFrameBufferAllocator::allocate(int halPixelFormat,             \\\n> -                                      const libcamera::Size &size,     \\\n> -                                      uint32_t usage)                  \\\n> -{                                                                      \\\n> -       return _d()->allocate(halPixelFormat, size, usage);             \\\n> -}\n> +#define PUBLIC_FRAME_BUFFER_ALLOCATOR_IMPLEMENTATION\n>   \\\n> +       PlatformFrameBufferAllocator::PlatformFrameBufferAllocator(\n>  \\\n> +               CameraDevice *const cameraDevice)\n>  \\\n> +               : Extensible(std::make_unique<Private>(cameraDevice))\n>  \\\n> +       {\n>  \\\n> +       }\n>  \\\n> +       PlatformFrameBufferAllocator::~PlatformFrameBufferAllocator()\n>  \\\n> +       {\n>  \\\n> +       }\n>  \\\n> +       std::unique_ptr<HALFrameBuffer>\n>  \\\n> +       PlatformFrameBufferAllocator::allocate(int halPixelFormat,\n>   \\\n> +                                              const libcamera::Size\n> &size, \\\n> +                                              uint32_t usage)\n>   \\\n> +       {\n>  \\\n> +               return _d()->allocate(halPixelFormat, size, usage);\n>  \\\n> +       }\n>\n>  #endif /* __ANDROID_FRAME_BUFFER_ALLOCATOR_H__ */\n> ---\n> 1 potential issue detected, please review\n>\n>\n> ----------------------------------------------------------------------------\n> 214944ac387b6f22e30e16ea7950a4f40899047b Add meson.build in\n> src/android/jpeg\n>\n> ----------------------------------------------------------------------------\n> No issue detected\n>\n>\n> ----------------------------------------------------------------------------------------\n> 2ed81d92f699b2c62c61e808066520f544fa5e40 Add an internal Encoder class in\n> EncoderLibJpeg\n>\n> ----------------------------------------------------------------------------------------\n> --- src/android/jpeg/encoder_libjpeg.cpp\n> +++ src/android/jpeg/encoder_libjpeg.cpp\n> @@ -201,8 +201,8 @@\n>  }\n>\n>  int EncoderLibJpeg::encode(const std::vector<Span<uint8_t>> &src,\n> -                                   Span<uint8_t> dest, Span<const\n> uint8_t> exifData,\n> -                                   unsigned int quality)\n> +                          Span<uint8_t> dest, Span<const uint8_t>\n> exifData,\n> +                          unsigned int quality)\n>  {\n>         return encoder_.encode(src, std::move(dest), std::move(exifData),\n> quality);\n>  }\n> ---\n> 1 potential issue detected, please review\n>\n>\n> -------------------------------------------------------------------------------------------------\n> f115685e544741d3084a603794328c4beb8f608c Move generateThumbnail from\n> PostProcessorJpeg to Encoder\n>\n> -------------------------------------------------------------------------------------------------\n> No issue detected\n>\n>\n> ------------------------------------------------------------------------------\n> 3113d70138d5204fd956ae1e0fc496a106a3e96f Pass StreamBuffer to\n> Encoder::encoder\n>\n> ------------------------------------------------------------------------------\n> No issue detected\n>\n> ---------------------------------------------------------------\n> 72e0597c7e3af7ac9e80ee2db9b7c212ab1172d8 Add JEA implementation\n> ---------------------------------------------------------------\n> --- src/android/jpeg/encoder_jea.cpp\n> +++ src/android/jpeg/encoder_jea.cpp\n> @@ -56,9 +56,9 @@\n>  }\n>\n>  void EncoderJea::generateThumbnail(const libcamera::FrameBuffer &source,\n> -                                 const libcamera::Size &targetSize,\n> -                                 unsigned int quality,\n> -                                 std::vector<unsigned char> *thumbnail)\n> +                                  const libcamera::Size &targetSize,\n> +                                  unsigned int quality,\n> +                                  std::vector<unsigned char> *thumbnail)\n>  {\n>         if (!jpegCompressor_)\n>                 return;\n> @@ -71,11 +71,11 @@\n>\n>         // JEA needs consecutive memory.\n>         unsigned long size = 0, index = 0;\n> -       for (const auto& plane : frame.planes())\n> +       for (const auto &plane : frame.planes())\n>                 size += plane.size();\n>\n>         std::vector<uint8_t> data(size);\n> -       for (const auto& plane : frame.planes()) {\n> +       for (const auto &plane : frame.planes()) {\n>                 memcpy(&data[index], plane.data(), plane.size());\n>                 index += plane.size();\n>         }\n> ---\n> 2 potential issues detected, please review\n>\n>\n>\n>\n> Quoting Harvey Yang via libcamera-devel (2022-12-14 09:33:23)\n> > Hi all,\n> >\n> > Updated based on Laurent's comments, and fixed a memory flaky\n> > issue in JEA's generateThumbnail function.\n> >\n> > Sorry that the issue took me so long, with other issues in CrOS camera\n> > service mixed together :p\n> >\n> > BR,\n> > Harvey\n> >\n> > Harvey Yang (7):\n> >   Allow inheritance of FrameBuffer\n> >   Add HALFrameBuffer and replace FrameBuffer in src/android\n> >   Add meson.build in src/android/jpeg\n> >   Add an internal Encoder class in EncoderLibJpeg\n> >   Move generateThumbnail from PostProcessorJpeg to Encoder\n> >   Pass StreamBuffer to Encoder::encoder\n> >   Add JEA implementation\n> >\n> >  include/libcamera/framebuffer.h               |   3 +-\n> >  src/android/camera_device.cpp                 |   5 +-\n> >  src/android/camera_device.h                   |   3 +-\n> >  src/android/camera_request.h                  |   3 +-\n> >  src/android/cros/camera3_hal.cpp              |   4 +-\n> >  src/android/cros_mojo_token.h                 |  12 ++\n> >  src/android/frame_buffer_allocator.h          |   7 +-\n> >  src/android/hal_framebuffer.cpp               |  22 ++++\n> >  src/android/hal_framebuffer.h                 |  26 +++++\n> >  src/android/jpeg/encoder.h                    |   9 +-\n> >  src/android/jpeg/encoder_jea.cpp              | 105 ++++++++++++++++++\n> >  src/android/jpeg/encoder_jea.h                |  35 ++++++\n> >  src/android/jpeg/encoder_libjpeg.cpp          |  85 ++++++++++++--\n> >  src/android/jpeg/encoder_libjpeg.h            |  46 +++++---\n> >  src/android/jpeg/meson.build                  |  17 +++\n> >  src/android/jpeg/post_processor_jpeg.cpp      |  63 ++---------\n> >  src/android/jpeg/post_processor_jpeg.h        |  11 +-\n> >  src/android/meson.build                       |   6 +-\n> >  .../mm/cros_frame_buffer_allocator.cpp        |   9 +-\n> >  .../mm/generic_frame_buffer_allocator.cpp     |  11 +-\n> >  20 files changed, 373 insertions(+), 109 deletions(-)\n> >  create mode 100644 src/android/cros_mojo_token.h\n> >  create mode 100644 src/android/hal_framebuffer.cpp\n> >  create mode 100644 src/android/hal_framebuffer.h\n> >  create mode 100644 src/android/jpeg/encoder_jea.cpp\n> >  create mode 100644 src/android/jpeg/encoder_jea.h\n> >  create mode 100644 src/android/jpeg/meson.build\n> >\n> > --\n> > 2.39.0.rc1.256.g54fd8350bd-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 11833C31E9\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 14 Dec 2022 14:47:42 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 4923F63354;\n\tWed, 14 Dec 2022 15:47:41 +0100 (CET)","from mail-vs1-xe2c.google.com (mail-vs1-xe2c.google.com\n\t[IPv6:2607:f8b0:4864:20::e2c])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 86F5F61F23\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 14 Dec 2022 15:47:39 +0100 (CET)","by mail-vs1-xe2c.google.com with SMTP id b189so18047431vsc.10\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 14 Dec 2022 06:47:39 -0800 (PST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1671029261;\n\tbh=hH8/KFFP1Xq6pZjFLX+yZom/xXFLXblTsQM0om+Tmks=;\n\th=References:In-Reply-To:Date:To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=u4RhK5n+TR7M5oMeubO+LIFYAhU55zLes4ZUTECBayxeRM3zobqj3Z5HKXc3FZ/QK\n\tc5BTdtDidMjL/ZbQn30yFlE2tyFBZ6K+aFZuWVN5cBvJaNkmMc+IovRHLvodbQ4Yoc\n\tXW/vC5Sxk7+loQkT4rZhut4VjUcGZlmt1mpBUGMdyAXV3tMKqv02iL58tIowTywxR3\n\t7lNyFz4fzygNQurYegoOtO1o+VnqQWHOMOiwwk5oHO9YZMoRQ3qtQAS+wFZtxWh4JC\n\thpvWcGtGzMYUs6QXphGxRkDgrVsZ42DAAEbDfE7FhJzYepWvmcMi+WCF96TjrNbrX7\n\tmoGcpPfLmGwVw==","v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org;\n\ts=google; \n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:from:to:cc:subject:date:message-id:reply-to;\n\tbh=SSHq22ifOBoZ3SELsOok2zR+rFQw/mcNqKBkwaE59iM=;\n\tb=WiaIbUZ4jzmcfORLvJOAll4i8XLleGn3ZQ+O9UBc0fysVFQf9camU7Mw5xhN4OX8WX\n\tcHSIsml74VML/ChZdjOglY1u5rcdq2YMqeF04yb3lXmqLQAq+SOmBcpV6taj6cE7ACiC\n\tqkPcbYkbe2R2ymIWM3dkv8ksMrDFU9yi7h32s="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=chromium.org\n\theader.i=@chromium.org header.b=\"WiaIbUZ4\"; \n\tdkim-atps=neutral","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20210112;\n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:x-gm-message-state:from:to:cc:subject:date:message-id\n\t:reply-to;\n\tbh=SSHq22ifOBoZ3SELsOok2zR+rFQw/mcNqKBkwaE59iM=;\n\tb=5s/vTsTC+h77MjmZAMisrCVv0XGPbyxhtry54Fye5xxXaO1uz8qdxHkktf1B6dd4Hm\n\tKQ3lBXfaRvkL9jMSyIm6s6ZBPGY1Hj+p9A1ql8U8kjNdMz2jnMZzBa9uPQtgV5BzFbjV\n\t3d1wYVyRkCuo1+kOGdPTC3e0EmAINps8v2ZT+fzjV4K1sMTEGH3X2+OIrhwChAFaILcZ\n\tPY9UiO3KnxMi80XXvgymw52DycOdopzNMrvsYB4AnuvxtpTzLa4pr1+WqswnQbTKz0Eq\n\tQxQJROhOwbEzEbEE6bghcTHCwDewRMM9Kp1zuQVbrB1om3iczaH6n3kwepH/+EoWquCU\n\tNqpA==","X-Gm-Message-State":"ANoB5pkerppi7Iq/ebvuQ/XhCwNxytb8f9c2AoEDZserr/E790oPToxe\n\to2DPSQQ6ZMgPFx4hDnedPZlDHYa6+V+lBSzceokixQ==","X-Google-Smtp-Source":"AA0mqf5tJKtzHiFBwaQd/WYFBUL62jbXr0tDciPqihsWz97rzp6tarkR5vIW1WofnFSLLMCWfUxGqOQzTZ6otCKuKHI=","X-Received":"by 2002:a05:6102:370a:b0:3af:c63c:5536 with SMTP id\n\ts10-20020a056102370a00b003afc63c5536mr52780148vst.85.1671029258390;\n\tWed, 14 Dec 2022 06:47:38 -0800 (PST)","MIME-Version":"1.0","References":"<20221214093330.3345421-1-chenghaoyang@google.com>\n\t<167101623113.9133.11957642095993088597@Monstersaurus>","In-Reply-To":"<167101623113.9133.11957642095993088597@Monstersaurus>","Date":"Wed, 14 Dec 2022 22:47:27 +0800","Message-ID":"<CAEB1ahuO9KvYWVy0gUKYj4JUM_-LvyHK0f2k_fxkGNcqd879kw@mail.gmail.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Content-Type":"multipart/alternative; boundary=\"0000000000005b23e605efcad1f0\"","Subject":"Re: [libcamera-devel] [PATCH v8 0/7] Add CrOS JEA implementation","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>","From":"Cheng-Hao Yang via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Cheng-Hao Yang <chenghaoyang@chromium.org>","Cc":"Harvey Yang <chenghaoyang@google.com>,\n\tlibcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]