{"id":10269,"url":"https://patchwork.libcamera.org/api/1.1/covers/10269/?format=json","web_url":"https://patchwork.libcamera.org/cover/10269/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/1.1/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20201027212447.131431-1-email@uajain.com>","date":"2020-10-27T21:24:44","name":"[libcamera-devel,v2,0/3] android: jpeg: exif: Embed a JPEG-encoded thumbnail","submitter":{"id":1,"url":"https://patchwork.libcamera.org/api/1.1/people/1/?format=json","name":"Umang Jain","email":"email@uajain.com"},"mbox":"https://patchwork.libcamera.org/cover/10269/mbox/","series":[{"id":1422,"url":"https://patchwork.libcamera.org/api/1.1/series/1422/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=1422","date":"2020-10-27T21:24:44","name":"android: jpeg: exif: Embed a JPEG-encoded thumbnail","version":2,"mbox":"https://patchwork.libcamera.org/series/1422/mbox/"}],"comments":"https://patchwork.libcamera.org/api/covers/10269/comments/","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 48911C3B5C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 27 Oct 2020 21:24:58 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D200D621C2;\n\tTue, 27 Oct 2020 22:24:57 +0100 (CET)","from mail.uajain.com (static.126.159.217.95.clients.your-server.de\n\t[95.217.159.126])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 8D7706205F\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 27 Oct 2020 22:24:56 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=uajain.com header.i=@uajain.com\n\theader.b=\"VVrUFDAF\"; dkim-atps=neutral","From":"Umang Jain <email@uajain.com>","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=uajain.com; s=mail;\n\tt=1603833896; bh=tIRem2GRgy2Jen2okxTUhw9vOt49zQryfVBk19noQ/A=;\n\th=From:To:Cc:Subject;\n\tb=VVrUFDAFkOw33anIVcEVNIwf42XSsbtB9y0vXVq705ATK/4gVNlHiTNXKdTbYz08X\n\trYTSNjFXVKsgsnXs/Y5Jms/4F+AQBeLLuQYaFUH375AlqnoJXvQ1uoFHadpxAFA/NX\n\tMwainr2E+8Stxu7Kc8oQDFoNSipFoDelMnUZfCi+yJgKFQ3Pfi85qDURfiWvbaqKhG\n\tv3r6Nxut8DFkqzwViWrGYnb4OjcYJudjBvAelGLktlX0TXv4UK7lwWrLJ1LFU4oc24\n\tLu4yTK0ijB/3InDSUFcfkHSUJKQ91QoDbm5r1Z5MxbnnQzrhRAE7a88D0orfFFLcWd\n\tWTjptRw3wgwIQ==","To":"libcamera-devel@lists.libcamera.org","Date":"Wed, 28 Oct 2020 02:54:44 +0530","Message-Id":"<20201027212447.131431-1-email@uajain.com>","Mime-Version":"1.0","Subject":"[libcamera-devel] [PATCH v2 0/3] android: jpeg: exif: Embed a\n\tJPEG-encoded thumbnail","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>","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"},"content":"Changes in v2:\n- Drop patch 1/3 from v1.\n- Use pointers instead of reference if the function is making change to\n  the parameter.\n- Split Thumbnailer class and its usage into 2 patches.\n- More rigorous const correct-ness in patch 1/3\n\nThere are two major open-ended topics I would like further commenta on:\n\n1. Whether to keep thumbnailEncoder_ inside PostProcessorJpeg or move it\n   to Thumbnailer class itself? Hiroh suggests that it might be useful\n   to keep it in the latter, so let's discuss it widely of what makes\n   sense.\n2. Fate of EncoderLibJpeg::encode() introduced in patch 1/3. This is\n   basically allowing us to encode from raw bytes, but is still internal\n   to EncoderLibJpeg(and uses the same naming as Encoder::encode()\n   virtual function). Should I rename it to something else, while\n   keeping it internal to EncoderLibJpeg? Also, I wonder if this is a\n   potential candidate for Encoder interface too? In the sense that\n   Encoder(s) have a way to encode stuff directly handed to them as\n   bytes. \n\nThanks for the reviews all of you!\n\nUmang Jain (3):\n  android: jpeg: encoder_libjpeg: Allow encoding raw frame bytes\n  android: jpeg: Introduce a simple image thumbnailer\n  android: jpeg: post_processor_jpeg: Embed thumbnail into Exif metadata\n\n src/android/jpeg/encoder_libjpeg.cpp     |  18 ++--\n src/android/jpeg/encoder_libjpeg.h       |   7 +-\n src/android/jpeg/exif.cpp                |  24 ++++-\n src/android/jpeg/exif.h                  |   2 +\n src/android/jpeg/post_processor_jpeg.cpp |  34 +++++++\n src/android/jpeg/post_processor_jpeg.h   |   8 +-\n src/android/jpeg/thumbnailer.cpp         | 113 +++++++++++++++++++++++\n src/android/jpeg/thumbnailer.h           |  36 ++++++++\n src/android/meson.build                  |   1 +\n 9 files changed, 233 insertions(+), 10 deletions(-)\n create mode 100644 src/android/jpeg/thumbnailer.cpp\n create mode 100644 src/android/jpeg/thumbnailer.h"}