{"id":9354,"url":"https://patchwork.libcamera.org/api/1.1/covers/9354/?format=json","web_url":"https://patchwork.libcamera.org/cover/9354/","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":"<20200821161602.5093-1-show.liu@linaro.org>","date":"2020-08-21T16:15:59","name":"[libcamera-devel,v4,0/3] qcam: NV family YUV format conversion by using OpenGL shader","submitter":{"id":24,"url":"https://patchwork.libcamera.org/api/1.1/people/24/?format=json","name":"Show Liu","email":"show.liu@linaro.org"},"mbox":"https://patchwork.libcamera.org/cover/9354/mbox/","series":[{"id":1229,"url":"https://patchwork.libcamera.org/api/1.1/series/1229/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=1229","date":"2020-08-21T16:15:59","name":"qcam: NV family YUV format conversion by using OpenGL shader","version":4,"mbox":"https://patchwork.libcamera.org/series/1229/mbox/"}],"comments":"https://patchwork.libcamera.org/api/covers/9354/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 51340BD87C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 21 Aug 2020 16:16:25 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id DE82A61B4F;\n\tFri, 21 Aug 2020 18:16:24 +0200 (CEST)","from mail-pg1-x541.google.com (mail-pg1-x541.google.com\n\t[IPv6:2607:f8b0:4864:20::541])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id B3D7E60383\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 21 Aug 2020 18:16:23 +0200 (CEST)","by mail-pg1-x541.google.com with SMTP id p37so1226770pgl.3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 21 Aug 2020 09:16:23 -0700 (PDT)","from localhost.localdomain\n\t(2001-b011-200c-3405-5522-d8a8-1333-f09d.dynamic-ip6.hinet.net.\n\t[2001:b011:200c:3405:5522:d8a8:1333:f09d])\n\tby smtp.gmail.com with ESMTPSA id\n\th15sm2524184pjf.54.2020.08.21.09.16.20\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tFri, 21 Aug 2020 09:16:21 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=linaro.org header.i=@linaro.org\n\theader.b=\"GNMN6dXA\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google;\n\th=from:to:cc:subject:date:message-id:mime-version\n\t:content-transfer-encoding;\n\tbh=a3ihhj+rdi8Xq1qvKPZrdYxJiOIQgqdgyotDTl6IK/8=;\n\tb=GNMN6dXABOtz/4NBP75x4ir9FTP/TjVyzXzs+aIST2SiMSmqej1LfqHjgMCpqfKiWN\n\tYAkeJD4FHYT/sM3xqMEf/SfibqAmQU6UKZCJ61NHSwba5GZz4VRowfA1adU8qZz5s4VS\n\tAVgjigNbvyOv+222PwqQDFM+2aDC0eoTid+UEh+FHN/maG5vIOpDqlcSxG/8RcEkep1X\n\thkwEgkhjFD5KepuuvXVFZzuNAufGwG/vv4nko8sKO/e8XC6gYqTRKuuq6E3gV/0yLZyZ\n\tTvs/oF7yZEcli1uiomK4PLYh/X/471iPXUzf8aDFsbtSNkhVcJzMw7Qnq7uMJG6/fmIb\n\tLEEA==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version\n\t:content-transfer-encoding;\n\tbh=a3ihhj+rdi8Xq1qvKPZrdYxJiOIQgqdgyotDTl6IK/8=;\n\tb=fpRDkLUMEuys/MMniq3F5RUtOrp3rAj2dNJyGY6Tv0hOYblv7+jRPC5doHghdlZe27\n\tbI5tsGF3ZjZ6BePv66QID4zvMqbB8/UyKjj8YcFCF4624Ewm/pBOnhoiXIT32htLRnyO\n\t4Xyi9Fh5Zv/+GarEyPgd8gdCHrv+m0I+QMW6DYFmG34hl6sNwAcf2ia9VYhG5qlo5N0q\n\tFPfu+kXZDdWa46splXZrgkCA/iEHfnH9j91h1cAJwhexFsM3FjgulpETlIpJFK+yzmFy\n\tRNzV4R2btHomwB5uUbztmWqQyay6XO/KASOQpO4a7dEUVe2zw6h5bbJye4gcgUSnBWrM\n\tkY1w==","X-Gm-Message-State":"AOAM532QTfYtHwvFHxi7ucfWJWuEsPDLFKq9XlwpyCPYvon/QMDuLNYL\n\tQrjPCYBT/ojdEq258mtredkTcNWaWuuGDw==","X-Google-Smtp-Source":"ABdhPJxw0aFRyEHIjcXErk0WJGK+Vn70CHjMRoRfe2tfhSuGLrIJIQrcNRVW8FB1DUoctHrLIZd6ww==","X-Received":"by 2002:a63:5b05:: with SMTP id p5mr2772635pgb.143.1598026581790;\n\tFri, 21 Aug 2020 09:16:21 -0700 (PDT)","From":"Show Liu <show.liu@linaro.org>","To":"libcamera-devel@lists.libcamera.org","Date":"Sat, 22 Aug 2020 00:15:59 +0800","Message-Id":"<20200821161602.5093-1-show.liu@linaro.org>","X-Mailer":"git-send-email 2.20.1","MIME-Version":"1.0","Subject":"[libcamera-devel] [PATCH v4 0/3] qcam: NV family YUV format\n\tconversion by using OpenGL shader","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":"Hi,\n\nThis is the version 4 patchset for qcam to accelerate the YUV format conversion\nby OpenGL shader. Most of the modifications are according to the comments\nand suggestions from V3. \nAnd the big change is using the QOpenGLFramebufferObject with QOffscreenSurface\ninstead of the QOpenGLWidget, the main reason that use dynamic_cast\nto get the viewfinder_ is really weird.\nIn this version, OpenGL rendering enabled by --render=gles,\nand if any error occurs during OpenGL configuration, it will return to use QT rendering.\nBut compared with the previous version, this version performance dropped a lot\ndue to I using the toImage() function to get the image when rendering complete,\nit's really an inefficient operation. the framerate down to 16.x ~ 18.x fps(1280 x 800).\nI am still trying to improve this performance issue. Any suggestions are welcome.\n\n\n\nBR,\nShow Liu\n\nShow Liu (3):\n  qcam: add OpenGL shader code as QT resource\n  qcam: add OpenGL renderer\n  qcam: use the OpenGL renderer as NV family YUV format converter\n\n src/qcam/assets/shader/NV_2_planes_UV_f.glsl |  32 ++\n src/qcam/assets/shader/NV_2_planes_VU_f.glsl |  32 ++\n src/qcam/assets/shader/NV_3_planes_UV_f.glsl |  33 ++\n src/qcam/assets/shader/NV_3_planes_VU_f.glsl |  33 ++\n src/qcam/assets/shader/NV_vertex_shader.glsl |  16 +\n src/qcam/assets/shader/shaders.qrc           |  10 +\n src/qcam/main.cpp                            |   3 +\n src/qcam/main_window.cpp                     |   2 +\n src/qcam/main_window.h                       |   1 +\n src/qcam/meson.build                         |   3 +\n src/qcam/renderer.cpp                        | 346 +++++++++++++++++++\n src/qcam/renderer.h                          |  81 +++++\n src/qcam/viewfinder.cpp                      |  46 ++-\n src/qcam/viewfinder.h                        |  10 +\n 14 files changed, 640 insertions(+), 8 deletions(-)\n create mode 100644 src/qcam/assets/shader/NV_2_planes_UV_f.glsl\n create mode 100644 src/qcam/assets/shader/NV_2_planes_VU_f.glsl\n create mode 100644 src/qcam/assets/shader/NV_3_planes_UV_f.glsl\n create mode 100644 src/qcam/assets/shader/NV_3_planes_VU_f.glsl\n create mode 100644 src/qcam/assets/shader/NV_vertex_shader.glsl\n create mode 100644 src/qcam/assets/shader/shaders.qrc\n create mode 100644 src/qcam/renderer.cpp\n create mode 100644 src/qcam/renderer.h"}