{"id":10157,"url":"https://patchwork.libcamera.org/api/1.1/covers/10157/?format=json","web_url":"https://patchwork.libcamera.org/cover/10157/","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":"<20201021080806.46636-1-email@uajain.com>","date":"2020-10-21T08:08:04","name":"[libcamera-devel,RFC,0/2] andriod: Basic NV12 thumbnailer","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/10157/mbox/","series":[{"id":1397,"url":"https://patchwork.libcamera.org/api/1.1/series/1397/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=1397","date":"2020-10-21T08:08:04","name":"andriod: Basic NV12 thumbnailer","version":1,"mbox":"https://patchwork.libcamera.org/series/1397/mbox/"}],"comments":"https://patchwork.libcamera.org/api/covers/10157/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 060A1C3D3C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 21 Oct 2020 08:08:18 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 84EA360352;\n\tWed, 21 Oct 2020 10:08:17 +0200 (CEST)","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 F133A60352\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 21 Oct 2020 10:08:15 +0200 (CEST)"],"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=\"HRmXDGYG\"; 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=1603267695; bh=c+FBmRgsN1r6Gb3ji55Fx0pjRGSAG6+IW66c3p2Mnxw=;\n\th=From:To:Cc:Subject;\n\tb=HRmXDGYGi+ru9R9//PSn4iwGno6LfBtIRtFhpCYp5KgHzEusZLrt6+NkmCup1u+9D\n\tZPsZ5+ZZN/AzIoQKqv2c1wFi1Uzkh/WKu2fgk88DSuKrl7EqK8qCBJ6WccYcSgB/2d\n\taZ7fbLkKmRItINs6fbQHTB5JG+WeZmU9zuqhrURhePlhGyy6XfegK5TUzdUVUU5MgJ\n\tTPezov63J9yESxUk8HoPmrp86o1YpwgOvKzopTJmLIQ4sso4VaJwntFvbCHmb9Qonp\n\taiMacZXzf1O4rbV4+kcCKL0rR9TS0Aa0RcaslAMBDQqItVYBpx+BlmmtFqwiHpfvzN\n\tAnG2qss5jBYyg==","To":"libcamera-devel@lists.libcamera.org","Date":"Wed, 21 Oct 2020 13:38:04 +0530","Message-Id":"<20201021080806.46636-1-email@uajain.com>","Mime-Version":"1.0","Subject":"[libcamera-devel] [RFC PATCH 0/2] andriod: Basic NV12 thumbnailer","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":"Still RFC as couple of \\todos still pending to get address; partly which\nI need help with in order to know what should be the forward path from\nhere on.\n\nOne of the hurdle after writing the thumbnailer component was to use the\nexisting encoder to compress it. The encoder uses FrameBuffer parameter\nto encode as of now. The result of thumbnailer is raw bytes, so either\nwe need to get a FrameBuffer/MappedFrameBuffer instance created out of\nthose raw bytes(which seems difficult) OR make the encoder flexible\nenough so that we can encode directly from bytes. Patch 1/2 implements\nthe latter (discussed with Kieran last week).\n\nComing to patch 2/2, is the thumbnailer which is generated and\ncompressed in the PostProcessorJpeg layer. How would we embed this\nin the Exif data, is still the missing piece of the puzzle. I am still\nunsure where I should (thumnail + compress) in PostProcessor layer\nor the Encoder layer. Both these places has it's own set of challenges\naccording to me. Please refer to the \\todo and see if you can help me\nwith any ideas.\n\n(The actual thumbnailer(.cpp / .h) has been reviewed before and I might\nhave not addressed all the comments from it. Although there a few\nchanges in there, I will make sure that the reviews are addressed when\nI'll submit a non-RFC version).\n\nThanks!\n\nUmang Jain (2):\n  android: jpeg: encoder_libjpeg Allow encoding raw frame bytes\n  android: jpeg: Add a basic NV12 image thumbnailer\n\n src/android/jpeg/encoder_libjpeg.cpp     |  37 +++++----\n src/android/jpeg/encoder_libjpeg.h       |   7 +-\n src/android/jpeg/post_processor_jpeg.cpp |  39 +++++++++\n src/android/jpeg/post_processor_jpeg.h   |   3 +\n src/android/jpeg/thumbnailer.cpp         | 100 +++++++++++++++++++++++\n src/android/jpeg/thumbnailer.h           |  40 +++++++++\n src/android/meson.build                  |   1 +\n 7 files changed, 211 insertions(+), 16 deletions(-)\n create mode 100644 src/android/jpeg/thumbnailer.cpp\n create mode 100644 src/android/jpeg/thumbnailer.h"}