{"id":17644,"url":"https://patchwork.libcamera.org/api/covers/17644/?format=json","web_url":"https://patchwork.libcamera.org/cover/17644/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/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":"<20221019231537.26880-1-laurent.pinchart@ideasonboard.com>","date":"2022-10-19T23:15:31","name":"[libcamera-devel,v1,0/6] apps: Avoid duplicate compilation of common code","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/?format=json","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"mbox":"https://patchwork.libcamera.org/cover/17644/mbox/","series":[{"id":3571,"url":"https://patchwork.libcamera.org/api/series/3571/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=3571","date":"2022-10-19T23:15:31","name":"apps: Avoid duplicate compilation of common code","version":1,"mbox":"https://patchwork.libcamera.org/series/3571/mbox/"}],"comments":"https://patchwork.libcamera.org/api/covers/17644/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 1B011C0DA4\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 19 Oct 2022 23:16:06 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id E60A662E78;\n\tThu, 20 Oct 2022 01:16:04 +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 C029D604DA\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 20 Oct 2022 01:16:02 +0200 (CEST)","from pendragon.ideasonboard.com (62-78-145-57.bb.dnainternet.fi\n\t[62.78.145.57])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 054C5570\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 20 Oct 2022 01:16:01 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1666221365;\n\tbh=crR8FEEQrtrCWAIaR6QMuuY6FOslkNbpcUDesay4JZo=;\n\th=To:Date:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post:\n\tList-Help:List-Subscribe:From:Reply-To:From;\n\tb=3KCL4s030cfZ0RxhxlKw8lFa6iooT761JxgqlUM9KRrbNE8u/VkAq9oSBtbm0+Y8H\n\tcKQ0dc1/B6X3AWZ1aVt+RVrEcUCjjsijBlEMZp+AIiSyGAt2xa8Hjk+vEV1ffD75hv\n\teiKC50NPxieBQiKohYXxFLCroyzNwLKxlAe7RfkNHuNtPEITOq5LprOlfmrXhWhuY4\n\tqBZnlKdIXe9wgtN47FRruvvKwYfXHxBY1okpsyyuR4ak/rdUwQNJ2vqowA7YH86o3J\n\tTo5fgN8m7q1fZvrXmvrWVaKV+FcAYFni7LWK+aSRK5PxtE3DfDq8Q5oqtiYkGhFxNd\n\tta05y7+ALJ1eg==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1666221362;\n\tbh=crR8FEEQrtrCWAIaR6QMuuY6FOslkNbpcUDesay4JZo=;\n\th=From:To:Subject:Date:From;\n\tb=e4sPlrb4cBxwuRLjN6Hh0Cnn78HWxy7viy2CIJyI4vB7F9NimFdfOUtBCnUd7Qdz8\n\thMGpMZAJ0WImcgphqVxvbHB2/z2giF7SbgU7aRqL2G37gTsoN7/rvBBUmOXKZk27gh\n\tjkeA4Xz9MIdLRrl6wdgm/7aj6DzbbXbV6Qzx5lNc="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"e4sPlrb4\"; dkim-atps=neutral","To":"libcamera-devel@lists.libcamera.org","Date":"Thu, 20 Oct 2022 02:15:31 +0300","Message-Id":"<20221019231537.26880-1-laurent.pinchart@ideasonboard.com>","X-Mailer":"git-send-email 2.37.3","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","Subject":"[libcamera-devel] [PATCH v1 0/6] apps: Avoid duplicate compilation\n\tof common code","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":"Laurent Pinchart via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"},"content":"Hello,\n\nThis small series creates a new internal static library named libapps to\nstore code shared by the cam, qcam and lc-compliance applications. The\ngoal is to shorten the build time by avoiding duplicate compilation\nsteps.\n\nPatches 1/6 and 2/6 are drive-by fixes, and should I believe be\nconsidered even if the rest of the series is rejected.\n\nPatch 3/6 moves the cam, qcam and lc-compliance applications to a\nsrc/apps/ directory. This isn't strictly necessary, as I could have\ncreated a src/libapps/ directory instead to store the shared code, but I\nbelieve the result is cleaner with src/apps/.\n\nPatches 4/6 and 5/6 then moves the libevent and libtiff dependencies\nshared by multiple applications to src/apps/meson.build. Finally, patch\n6/6 creates the static libapps, moving the shared code from the\nsrc/apps/cam/ directory to src/apps/. I could create src/apps/libapps/\nif desired, but I thought it was a bit overkill and didn't make things\nmuch cleaner in my opinion (feel free to disagree with this).\n\nThe end result is a decrease of 5 compilation steps for a build that has\nall three applications enabled.\n\nLaurent Pinchart (6):\n  cam: Don't print DNG option text if libtiff isn't found\n  qcam: Simplify dependency handling for libtiff\n  Move test applications to src/apps/\n  apps: Move libevent dependency to src/apps/meson.build\n  apps: Move libtiff dependency to src/apps/meson.build\n  apps: Shared common source between applications\n\n src/{ => apps}/cam/camera_session.cpp         |  5 ++-\n src/{ => apps}/cam/camera_session.h           |  2 +-\n src/{ => apps}/cam/capture-script.yaml        |  0\n src/{ => apps}/cam/capture_script.cpp         |  0\n src/{ => apps}/cam/capture_script.h           |  0\n src/{ => apps}/cam/drm.cpp                    |  2 +-\n src/{ => apps}/cam/drm.h                      |  0\n src/{ => apps}/cam/file_sink.cpp              |  5 ++-\n src/{ => apps}/cam/file_sink.h                |  0\n src/{ => apps}/cam/frame_sink.cpp             |  0\n src/{ => apps}/cam/frame_sink.h               |  0\n src/{ => apps}/cam/kms_sink.cpp               |  0\n src/{ => apps}/cam/kms_sink.h                 |  0\n src/{ => apps}/cam/main.cpp                   |  9 ++--\n src/{ => apps}/cam/main.h                     |  0\n src/{ => apps}/cam/meson.build                | 19 ++-------\n src/{ => apps}/cam/sdl_sink.cpp               |  5 ++-\n src/{ => apps}/cam/sdl_sink.h                 |  0\n src/{ => apps}/cam/sdl_texture.cpp            |  0\n src/{ => apps}/cam/sdl_texture.h              |  2 +-\n src/{ => apps}/cam/sdl_texture_mjpg.cpp       |  0\n src/{ => apps}/cam/sdl_texture_mjpg.h         |  0\n src/{ => apps}/cam/sdl_texture_yuv.cpp        |  0\n src/{ => apps}/cam/sdl_texture_yuv.h          |  0\n src/{cam => apps}/dng_writer.cpp              |  0\n src/{cam => apps}/dng_writer.h                |  0\n src/{cam => apps}/event_loop.cpp              |  0\n src/{cam => apps}/event_loop.h                |  0\n src/{cam => apps}/image.cpp                   |  0\n src/{cam => apps}/image.h                     |  0\n src/{ => apps}/lc-compliance/capture_test.cpp |  0\n src/{ => apps}/lc-compliance/environment.cpp  |  0\n src/{ => apps}/lc-compliance/environment.h    |  0\n src/{ => apps}/lc-compliance/main.cpp         |  2 +-\n src/{ => apps}/lc-compliance/meson.build      |  6 +--\n .../lc-compliance/simple_capture.cpp          |  0\n src/{ => apps}/lc-compliance/simple_capture.h |  2 +-\n src/apps/meson.build                          | 41 +++++++++++++++++++\n src/{cam => apps}/options.cpp                 |  0\n src/{cam => apps}/options.h                   |  0\n .../qcam/assets/feathericons/activity.svg     |  0\n .../qcam/assets/feathericons/airplay.svg      |  0\n .../qcam/assets/feathericons/alert-circle.svg |  0\n .../assets/feathericons/alert-octagon.svg     |  0\n .../assets/feathericons/alert-triangle.svg    |  0\n .../qcam/assets/feathericons/align-center.svg |  0\n .../assets/feathericons/align-justify.svg     |  0\n .../qcam/assets/feathericons/align-left.svg   |  0\n .../qcam/assets/feathericons/align-right.svg  |  0\n .../qcam/assets/feathericons/anchor.svg       |  0\n .../qcam/assets/feathericons/aperture.svg     |  0\n .../qcam/assets/feathericons/archive.svg      |  0\n .../assets/feathericons/arrow-down-circle.svg |  0\n .../assets/feathericons/arrow-down-left.svg   |  0\n .../assets/feathericons/arrow-down-right.svg  |  0\n .../qcam/assets/feathericons/arrow-down.svg   |  0\n .../assets/feathericons/arrow-left-circle.svg |  0\n .../qcam/assets/feathericons/arrow-left.svg   |  0\n .../feathericons/arrow-right-circle.svg       |  0\n .../qcam/assets/feathericons/arrow-right.svg  |  0\n .../assets/feathericons/arrow-up-circle.svg   |  0\n .../assets/feathericons/arrow-up-left.svg     |  0\n .../assets/feathericons/arrow-up-right.svg    |  0\n .../qcam/assets/feathericons/arrow-up.svg     |  0\n .../qcam/assets/feathericons/at-sign.svg      |  0\n .../qcam/assets/feathericons/award.svg        |  0\n .../qcam/assets/feathericons/bar-chart-2.svg  |  0\n .../qcam/assets/feathericons/bar-chart.svg    |  0\n .../assets/feathericons/battery-charging.svg  |  0\n .../qcam/assets/feathericons/battery.svg      |  0\n .../qcam/assets/feathericons/bell-off.svg     |  0\n .../qcam/assets/feathericons/bell.svg         |  0\n .../qcam/assets/feathericons/bluetooth.svg    |  0\n .../qcam/assets/feathericons/bold.svg         |  0\n .../qcam/assets/feathericons/book-open.svg    |  0\n .../qcam/assets/feathericons/book.svg         |  0\n .../qcam/assets/feathericons/bookmark.svg     |  0\n .../qcam/assets/feathericons/box.svg          |  0\n .../qcam/assets/feathericons/briefcase.svg    |  0\n .../qcam/assets/feathericons/calendar.svg     |  0\n .../qcam/assets/feathericons/camera-off.svg   |  0\n .../qcam/assets/feathericons/camera.svg       |  0\n .../qcam/assets/feathericons/cast.svg         |  0\n .../qcam/assets/feathericons/check-circle.svg |  0\n .../qcam/assets/feathericons/check-square.svg |  0\n .../qcam/assets/feathericons/check.svg        |  0\n .../qcam/assets/feathericons/chevron-down.svg |  0\n .../qcam/assets/feathericons/chevron-left.svg |  0\n .../assets/feathericons/chevron-right.svg     |  0\n .../qcam/assets/feathericons/chevron-up.svg   |  0\n .../assets/feathericons/chevrons-down.svg     |  0\n .../assets/feathericons/chevrons-left.svg     |  0\n .../assets/feathericons/chevrons-right.svg    |  0\n .../qcam/assets/feathericons/chevrons-up.svg  |  0\n .../qcam/assets/feathericons/chrome.svg       |  0\n .../qcam/assets/feathericons/circle.svg       |  0\n .../qcam/assets/feathericons/clipboard.svg    |  0\n .../qcam/assets/feathericons/clock.svg        |  0\n .../assets/feathericons/cloud-drizzle.svg     |  0\n .../assets/feathericons/cloud-lightning.svg   |  0\n .../qcam/assets/feathericons/cloud-off.svg    |  0\n .../qcam/assets/feathericons/cloud-rain.svg   |  0\n .../qcam/assets/feathericons/cloud-snow.svg   |  0\n .../qcam/assets/feathericons/cloud.svg        |  0\n .../qcam/assets/feathericons/code.svg         |  0\n .../qcam/assets/feathericons/codepen.svg      |  0\n .../qcam/assets/feathericons/codesandbox.svg  |  0\n .../qcam/assets/feathericons/coffee.svg       |  0\n .../qcam/assets/feathericons/columns.svg      |  0\n .../qcam/assets/feathericons/command.svg      |  0\n .../qcam/assets/feathericons/compass.svg      |  0\n .../qcam/assets/feathericons/copy.svg         |  0\n .../assets/feathericons/corner-down-left.svg  |  0\n .../assets/feathericons/corner-down-right.svg |  0\n .../assets/feathericons/corner-left-down.svg  |  0\n .../assets/feathericons/corner-left-up.svg    |  0\n .../assets/feathericons/corner-right-down.svg |  0\n .../assets/feathericons/corner-right-up.svg   |  0\n .../assets/feathericons/corner-up-left.svg    |  0\n .../assets/feathericons/corner-up-right.svg   |  0\n .../qcam/assets/feathericons/cpu.svg          |  0\n .../qcam/assets/feathericons/credit-card.svg  |  0\n .../qcam/assets/feathericons/crop.svg         |  0\n .../qcam/assets/feathericons/crosshair.svg    |  0\n .../qcam/assets/feathericons/database.svg     |  0\n .../qcam/assets/feathericons/delete.svg       |  0\n .../qcam/assets/feathericons/disc.svg         |  0\n .../qcam/assets/feathericons/dollar-sign.svg  |  0\n .../assets/feathericons/download-cloud.svg    |  0\n .../qcam/assets/feathericons/download.svg     |  0\n .../qcam/assets/feathericons/droplet.svg      |  0\n .../qcam/assets/feathericons/edit-2.svg       |  0\n .../qcam/assets/feathericons/edit-3.svg       |  0\n .../qcam/assets/feathericons/edit.svg         |  0\n .../assets/feathericons/external-link.svg     |  0\n .../qcam/assets/feathericons/eye-off.svg      |  0\n .../qcam/assets/feathericons/eye.svg          |  0\n .../qcam/assets/feathericons/facebook.svg     |  0\n .../qcam/assets/feathericons/fast-forward.svg |  0\n .../qcam/assets/feathericons/feather.svg      |  0\n .../qcam/assets/feathericons/feathericons.qrc |  0\n .../qcam/assets/feathericons/figma.svg        |  0\n .../qcam/assets/feathericons/file-minus.svg   |  0\n .../qcam/assets/feathericons/file-plus.svg    |  0\n .../qcam/assets/feathericons/file-text.svg    |  0\n .../qcam/assets/feathericons/file.svg         |  0\n .../qcam/assets/feathericons/film.svg         |  0\n .../qcam/assets/feathericons/filter.svg       |  0\n .../qcam/assets/feathericons/flag.svg         |  0\n .../qcam/assets/feathericons/folder-minus.svg |  0\n .../qcam/assets/feathericons/folder-plus.svg  |  0\n .../qcam/assets/feathericons/folder.svg       |  0\n .../qcam/assets/feathericons/framer.svg       |  0\n .../qcam/assets/feathericons/frown.svg        |  0\n .../qcam/assets/feathericons/gift.svg         |  0\n .../qcam/assets/feathericons/git-branch.svg   |  0\n .../qcam/assets/feathericons/git-commit.svg   |  0\n .../qcam/assets/feathericons/git-merge.svg    |  0\n .../assets/feathericons/git-pull-request.svg  |  0\n .../qcam/assets/feathericons/github.svg       |  0\n .../qcam/assets/feathericons/gitlab.svg       |  0\n .../qcam/assets/feathericons/globe.svg        |  0\n .../qcam/assets/feathericons/grid.svg         |  0\n .../qcam/assets/feathericons/hard-drive.svg   |  0\n .../qcam/assets/feathericons/hash.svg         |  0\n .../qcam/assets/feathericons/headphones.svg   |  0\n .../qcam/assets/feathericons/heart.svg        |  0\n .../qcam/assets/feathericons/help-circle.svg  |  0\n .../qcam/assets/feathericons/hexagon.svg      |  0\n .../qcam/assets/feathericons/home.svg         |  0\n .../qcam/assets/feathericons/image.svg        |  0\n .../qcam/assets/feathericons/inbox.svg        |  0\n .../qcam/assets/feathericons/info.svg         |  0\n .../qcam/assets/feathericons/instagram.svg    |  0\n .../qcam/assets/feathericons/italic.svg       |  0\n .../qcam/assets/feathericons/key.svg          |  0\n .../qcam/assets/feathericons/layers.svg       |  0\n .../qcam/assets/feathericons/layout.svg       |  0\n .../qcam/assets/feathericons/life-buoy.svg    |  0\n .../qcam/assets/feathericons/link-2.svg       |  0\n .../qcam/assets/feathericons/link.svg         |  0\n .../qcam/assets/feathericons/linkedin.svg     |  0\n .../qcam/assets/feathericons/list.svg         |  0\n .../qcam/assets/feathericons/loader.svg       |  0\n .../qcam/assets/feathericons/lock.svg         |  0\n .../qcam/assets/feathericons/log-in.svg       |  0\n .../qcam/assets/feathericons/log-out.svg      |  0\n .../qcam/assets/feathericons/mail.svg         |  0\n .../qcam/assets/feathericons/map-pin.svg      |  0\n .../qcam/assets/feathericons/map.svg          |  0\n .../qcam/assets/feathericons/maximize-2.svg   |  0\n .../qcam/assets/feathericons/maximize.svg     |  0\n .../qcam/assets/feathericons/meh.svg          |  0\n .../qcam/assets/feathericons/menu.svg         |  0\n .../assets/feathericons/message-circle.svg    |  0\n .../assets/feathericons/message-square.svg    |  0\n .../qcam/assets/feathericons/mic-off.svg      |  0\n .../qcam/assets/feathericons/mic.svg          |  0\n .../qcam/assets/feathericons/minimize-2.svg   |  0\n .../qcam/assets/feathericons/minimize.svg     |  0\n .../qcam/assets/feathericons/minus-circle.svg |  0\n .../qcam/assets/feathericons/minus-square.svg |  0\n .../qcam/assets/feathericons/minus.svg        |  0\n .../qcam/assets/feathericons/monitor.svg      |  0\n .../qcam/assets/feathericons/moon.svg         |  0\n .../assets/feathericons/more-horizontal.svg   |  0\n .../assets/feathericons/more-vertical.svg     |  0\n .../assets/feathericons/mouse-pointer.svg     |  0\n .../qcam/assets/feathericons/move.svg         |  0\n .../qcam/assets/feathericons/music.svg        |  0\n .../qcam/assets/feathericons/navigation-2.svg |  0\n .../qcam/assets/feathericons/navigation.svg   |  0\n .../qcam/assets/feathericons/octagon.svg      |  0\n .../qcam/assets/feathericons/package.svg      |  0\n .../qcam/assets/feathericons/paperclip.svg    |  0\n .../qcam/assets/feathericons/pause-circle.svg |  0\n .../qcam/assets/feathericons/pause.svg        |  0\n .../qcam/assets/feathericons/pen-tool.svg     |  0\n .../qcam/assets/feathericons/percent.svg      |  0\n .../qcam/assets/feathericons/phone-call.svg   |  0\n .../assets/feathericons/phone-forwarded.svg   |  0\n .../assets/feathericons/phone-incoming.svg    |  0\n .../qcam/assets/feathericons/phone-missed.svg |  0\n .../qcam/assets/feathericons/phone-off.svg    |  0\n .../assets/feathericons/phone-outgoing.svg    |  0\n .../qcam/assets/feathericons/phone.svg        |  0\n .../qcam/assets/feathericons/pie-chart.svg    |  0\n .../qcam/assets/feathericons/play-circle.svg  |  0\n .../qcam/assets/feathericons/play.svg         |  0\n .../qcam/assets/feathericons/plus-circle.svg  |  0\n .../qcam/assets/feathericons/plus-square.svg  |  0\n .../qcam/assets/feathericons/plus.svg         |  0\n .../qcam/assets/feathericons/pocket.svg       |  0\n .../qcam/assets/feathericons/power.svg        |  0\n .../qcam/assets/feathericons/printer.svg      |  0\n .../qcam/assets/feathericons/radio.svg        |  0\n .../qcam/assets/feathericons/refresh-ccw.svg  |  0\n .../qcam/assets/feathericons/refresh-cw.svg   |  0\n .../qcam/assets/feathericons/repeat.svg       |  0\n .../qcam/assets/feathericons/rewind.svg       |  0\n .../qcam/assets/feathericons/rotate-ccw.svg   |  0\n .../qcam/assets/feathericons/rotate-cw.svg    |  0\n .../qcam/assets/feathericons/rss.svg          |  0\n .../qcam/assets/feathericons/save.svg         |  0\n .../qcam/assets/feathericons/scissors.svg     |  0\n .../qcam/assets/feathericons/search.svg       |  0\n .../qcam/assets/feathericons/send.svg         |  0\n .../qcam/assets/feathericons/server.svg       |  0\n .../qcam/assets/feathericons/settings.svg     |  0\n .../qcam/assets/feathericons/share-2.svg      |  0\n .../qcam/assets/feathericons/share.svg        |  0\n .../qcam/assets/feathericons/shield-off.svg   |  0\n .../qcam/assets/feathericons/shield.svg       |  0\n .../qcam/assets/feathericons/shopping-bag.svg |  0\n .../assets/feathericons/shopping-cart.svg     |  0\n .../qcam/assets/feathericons/shuffle.svg      |  0\n .../qcam/assets/feathericons/sidebar.svg      |  0\n .../qcam/assets/feathericons/skip-back.svg    |  0\n .../qcam/assets/feathericons/skip-forward.svg |  0\n .../qcam/assets/feathericons/slack.svg        |  0\n .../qcam/assets/feathericons/slash.svg        |  0\n .../qcam/assets/feathericons/sliders.svg      |  0\n .../qcam/assets/feathericons/smartphone.svg   |  0\n .../qcam/assets/feathericons/smile.svg        |  0\n .../qcam/assets/feathericons/speaker.svg      |  0\n .../qcam/assets/feathericons/square.svg       |  0\n .../qcam/assets/feathericons/star.svg         |  0\n .../qcam/assets/feathericons/stop-circle.svg  |  0\n .../qcam/assets/feathericons/sun.svg          |  0\n .../qcam/assets/feathericons/sunrise.svg      |  0\n .../qcam/assets/feathericons/sunset.svg       |  0\n .../qcam/assets/feathericons/tablet.svg       |  0\n .../qcam/assets/feathericons/tag.svg          |  0\n .../qcam/assets/feathericons/target.svg       |  0\n .../qcam/assets/feathericons/terminal.svg     |  0\n .../qcam/assets/feathericons/thermometer.svg  |  0\n .../qcam/assets/feathericons/thumbs-down.svg  |  0\n .../qcam/assets/feathericons/thumbs-up.svg    |  0\n .../qcam/assets/feathericons/toggle-left.svg  |  0\n .../qcam/assets/feathericons/toggle-right.svg |  0\n .../qcam/assets/feathericons/tool.svg         |  0\n .../qcam/assets/feathericons/trash-2.svg      |  0\n .../qcam/assets/feathericons/trash.svg        |  0\n .../qcam/assets/feathericons/trello.svg       |  0\n .../assets/feathericons/trending-down.svg     |  0\n .../qcam/assets/feathericons/trending-up.svg  |  0\n .../qcam/assets/feathericons/triangle.svg     |  0\n .../qcam/assets/feathericons/truck.svg        |  0\n .../qcam/assets/feathericons/tv.svg           |  0\n .../qcam/assets/feathericons/twitch.svg       |  0\n .../qcam/assets/feathericons/twitter.svg      |  0\n .../qcam/assets/feathericons/type.svg         |  0\n .../qcam/assets/feathericons/umbrella.svg     |  0\n .../qcam/assets/feathericons/underline.svg    |  0\n .../qcam/assets/feathericons/unlock.svg       |  0\n .../qcam/assets/feathericons/upload-cloud.svg |  0\n .../qcam/assets/feathericons/upload.svg       |  0\n .../qcam/assets/feathericons/user-check.svg   |  0\n .../qcam/assets/feathericons/user-minus.svg   |  0\n .../qcam/assets/feathericons/user-plus.svg    |  0\n .../qcam/assets/feathericons/user-x.svg       |  0\n .../qcam/assets/feathericons/user.svg         |  0\n .../qcam/assets/feathericons/users.svg        |  0\n .../qcam/assets/feathericons/video-off.svg    |  0\n .../qcam/assets/feathericons/video.svg        |  0\n .../qcam/assets/feathericons/voicemail.svg    |  0\n .../qcam/assets/feathericons/volume-1.svg     |  0\n .../qcam/assets/feathericons/volume-2.svg     |  0\n .../qcam/assets/feathericons/volume-x.svg     |  0\n .../qcam/assets/feathericons/volume.svg       |  0\n .../qcam/assets/feathericons/watch.svg        |  0\n .../qcam/assets/feathericons/wifi-off.svg     |  0\n .../qcam/assets/feathericons/wifi.svg         |  0\n .../qcam/assets/feathericons/wind.svg         |  0\n .../qcam/assets/feathericons/x-circle.svg     |  0\n .../qcam/assets/feathericons/x-octagon.svg    |  0\n .../qcam/assets/feathericons/x-square.svg     |  0\n src/{ => apps}/qcam/assets/feathericons/x.svg |  0\n .../qcam/assets/feathericons/youtube.svg      |  0\n .../qcam/assets/feathericons/zap-off.svg      |  0\n .../qcam/assets/feathericons/zap.svg          |  0\n .../qcam/assets/feathericons/zoom-in.svg      |  0\n .../qcam/assets/feathericons/zoom-out.svg     |  0\n src/{ => apps}/qcam/assets/shader/RGB.frag    |  0\n .../qcam/assets/shader/YUV_2_planes.frag      |  0\n .../qcam/assets/shader/YUV_3_planes.frag      |  0\n .../qcam/assets/shader/YUV_packed.frag        |  0\n .../qcam/assets/shader/bayer_1x_packed.frag   |  0\n .../qcam/assets/shader/bayer_8.frag           |  0\n .../qcam/assets/shader/bayer_8.vert           |  0\n .../qcam/assets/shader/identity.vert          |  0\n src/{ => apps}/qcam/assets/shader/shaders.qrc |  0\n src/{ => apps}/qcam/cam_select_dialog.cpp     |  0\n src/{ => apps}/qcam/cam_select_dialog.h       |  0\n src/{ => apps}/qcam/format_converter.cpp      |  2 +-\n src/{ => apps}/qcam/format_converter.h        |  0\n src/{ => apps}/qcam/main.cpp                  |  4 +-\n src/{ => apps}/qcam/main_window.cpp           |  4 +-\n src/{ => apps}/qcam/main_window.h             |  2 +-\n src/{ => apps}/qcam/meson.build               | 28 ++++---------\n src/{ => apps}/qcam/message_handler.cpp       |  0\n src/{ => apps}/qcam/message_handler.h         |  0\n src/{ => apps}/qcam/viewfinder.h              |  0\n src/{ => apps}/qcam/viewfinder_gl.cpp         |  2 +-\n src/{ => apps}/qcam/viewfinder_gl.h           |  0\n src/{ => apps}/qcam/viewfinder_qt.cpp         |  2 +-\n src/{ => apps}/qcam/viewfinder_qt.h           |  0\n src/{cam => apps}/stream_options.cpp          |  0\n src/{cam => apps}/stream_options.h            |  0\n src/meson.build                               |  5 +--\n 350 files changed, 83 insertions(+), 66 deletions(-)\n rename src/{ => apps}/cam/camera_session.cpp (99%)\n rename src/{ => apps}/cam/camera_session.h (98%)\n rename src/{ => apps}/cam/capture-script.yaml (100%)\n rename src/{ => apps}/cam/capture_script.cpp (100%)\n rename src/{ => apps}/cam/capture_script.h (100%)\n rename src/{ => apps}/cam/drm.cpp (99%)\n rename src/{ => apps}/cam/drm.h (100%)\n rename src/{ => apps}/cam/file_sink.cpp (98%)\n rename src/{ => apps}/cam/file_sink.h (100%)\n rename src/{ => apps}/cam/frame_sink.cpp (100%)\n rename src/{ => apps}/cam/frame_sink.h (100%)\n rename src/{ => apps}/cam/kms_sink.cpp (100%)\n rename src/{ => apps}/cam/kms_sink.h (100%)\n rename src/{ => apps}/cam/main.cpp (98%)\n rename src/{ => apps}/cam/main.h (100%)\n rename src/{ => apps}/cam/meson.build (77%)\n rename src/{ => apps}/cam/sdl_sink.cpp (98%)\n rename src/{ => apps}/cam/sdl_sink.h (100%)\n rename src/{ => apps}/cam/sdl_texture.cpp (100%)\n rename src/{ => apps}/cam/sdl_texture.h (96%)\n rename src/{ => apps}/cam/sdl_texture_mjpg.cpp (100%)\n rename src/{ => apps}/cam/sdl_texture_mjpg.h (100%)\n rename src/{ => apps}/cam/sdl_texture_yuv.cpp (100%)\n rename src/{ => apps}/cam/sdl_texture_yuv.h (100%)\n rename src/{cam => apps}/dng_writer.cpp (100%)\n rename src/{cam => apps}/dng_writer.h (100%)\n rename src/{cam => apps}/event_loop.cpp (100%)\n rename src/{cam => apps}/event_loop.h (100%)\n rename src/{cam => apps}/image.cpp (100%)\n rename src/{cam => apps}/image.h (100%)\n rename src/{ => apps}/lc-compliance/capture_test.cpp (100%)\n rename src/{ => apps}/lc-compliance/environment.cpp (100%)\n rename src/{ => apps}/lc-compliance/environment.h (100%)\n rename src/{ => apps}/lc-compliance/main.cpp (99%)\n rename src/{ => apps}/lc-compliance/meson.build (81%)\n rename src/{ => apps}/lc-compliance/simple_capture.cpp (100%)\n rename src/{ => apps}/lc-compliance/simple_capture.h (97%)\n create mode 100644 src/apps/meson.build\n rename src/{cam => apps}/options.cpp (100%)\n rename src/{cam => apps}/options.h (100%)\n rename src/{ => apps}/qcam/assets/feathericons/activity.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/airplay.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/alert-circle.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/alert-octagon.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/alert-triangle.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/align-center.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/align-justify.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/align-left.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/align-right.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/anchor.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/aperture.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/archive.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/arrow-down-circle.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/arrow-down-left.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/arrow-down-right.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/arrow-down.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/arrow-left-circle.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/arrow-left.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/arrow-right-circle.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/arrow-right.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/arrow-up-circle.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/arrow-up-left.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/arrow-up-right.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/arrow-up.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/at-sign.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/award.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/bar-chart-2.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/bar-chart.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/battery-charging.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/battery.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/bell-off.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/bell.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/bluetooth.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/bold.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/book-open.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/book.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/bookmark.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/box.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/briefcase.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/calendar.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/camera-off.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/camera.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/cast.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/check-circle.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/check-square.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/check.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/chevron-down.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/chevron-left.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/chevron-right.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/chevron-up.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/chevrons-down.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/chevrons-left.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/chevrons-right.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/chevrons-up.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/chrome.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/circle.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/clipboard.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/clock.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/cloud-drizzle.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/cloud-lightning.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/cloud-off.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/cloud-rain.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/cloud-snow.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/cloud.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/code.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/codepen.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/codesandbox.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/coffee.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/columns.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/command.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/compass.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/copy.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/corner-down-left.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/corner-down-right.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/corner-left-down.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/corner-left-up.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/corner-right-down.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/corner-right-up.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/corner-up-left.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/corner-up-right.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/cpu.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/credit-card.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/crop.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/crosshair.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/database.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/delete.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/disc.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/dollar-sign.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/download-cloud.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/download.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/droplet.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/edit-2.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/edit-3.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/edit.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/external-link.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/eye-off.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/eye.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/facebook.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/fast-forward.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/feather.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/feathericons.qrc (100%)\n rename src/{ => apps}/qcam/assets/feathericons/figma.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/file-minus.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/file-plus.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/file-text.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/file.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/film.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/filter.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/flag.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/folder-minus.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/folder-plus.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/folder.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/framer.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/frown.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/gift.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/git-branch.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/git-commit.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/git-merge.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/git-pull-request.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/github.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/gitlab.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/globe.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/grid.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/hard-drive.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/hash.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/headphones.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/heart.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/help-circle.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/hexagon.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/home.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/image.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/inbox.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/info.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/instagram.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/italic.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/key.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/layers.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/layout.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/life-buoy.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/link-2.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/link.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/linkedin.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/list.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/loader.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/lock.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/log-in.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/log-out.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/mail.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/map-pin.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/map.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/maximize-2.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/maximize.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/meh.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/menu.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/message-circle.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/message-square.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/mic-off.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/mic.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/minimize-2.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/minimize.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/minus-circle.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/minus-square.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/minus.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/monitor.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/moon.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/more-horizontal.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/more-vertical.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/mouse-pointer.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/move.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/music.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/navigation-2.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/navigation.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/octagon.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/package.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/paperclip.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/pause-circle.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/pause.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/pen-tool.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/percent.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/phone-call.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/phone-forwarded.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/phone-incoming.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/phone-missed.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/phone-off.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/phone-outgoing.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/phone.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/pie-chart.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/play-circle.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/play.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/plus-circle.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/plus-square.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/plus.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/pocket.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/power.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/printer.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/radio.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/refresh-ccw.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/refresh-cw.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/repeat.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/rewind.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/rotate-ccw.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/rotate-cw.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/rss.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/save.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/scissors.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/search.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/send.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/server.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/settings.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/share-2.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/share.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/shield-off.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/shield.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/shopping-bag.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/shopping-cart.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/shuffle.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/sidebar.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/skip-back.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/skip-forward.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/slack.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/slash.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/sliders.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/smartphone.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/smile.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/speaker.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/square.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/star.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/stop-circle.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/sun.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/sunrise.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/sunset.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/tablet.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/tag.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/target.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/terminal.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/thermometer.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/thumbs-down.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/thumbs-up.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/toggle-left.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/toggle-right.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/tool.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/trash-2.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/trash.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/trello.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/trending-down.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/trending-up.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/triangle.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/truck.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/tv.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/twitch.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/twitter.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/type.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/umbrella.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/underline.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/unlock.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/upload-cloud.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/upload.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/user-check.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/user-minus.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/user-plus.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/user-x.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/user.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/users.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/video-off.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/video.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/voicemail.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/volume-1.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/volume-2.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/volume-x.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/volume.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/watch.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/wifi-off.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/wifi.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/wind.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/x-circle.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/x-octagon.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/x-square.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/x.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/youtube.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/zap-off.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/zap.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/zoom-in.svg (100%)\n rename src/{ => apps}/qcam/assets/feathericons/zoom-out.svg (100%)\n rename src/{ => apps}/qcam/assets/shader/RGB.frag (100%)\n rename src/{ => apps}/qcam/assets/shader/YUV_2_planes.frag (100%)\n rename src/{ => apps}/qcam/assets/shader/YUV_3_planes.frag (100%)\n rename src/{ => apps}/qcam/assets/shader/YUV_packed.frag (100%)\n rename src/{ => apps}/qcam/assets/shader/bayer_1x_packed.frag (100%)\n rename src/{ => apps}/qcam/assets/shader/bayer_8.frag (100%)\n rename src/{ => apps}/qcam/assets/shader/bayer_8.vert (100%)\n rename src/{ => apps}/qcam/assets/shader/identity.vert (100%)\n rename src/{ => apps}/qcam/assets/shader/shaders.qrc (100%)\n rename src/{ => apps}/qcam/cam_select_dialog.cpp (100%)\n rename src/{ => apps}/qcam/cam_select_dialog.h (100%)\n rename src/{ => apps}/qcam/format_converter.cpp (99%)\n rename src/{ => apps}/qcam/format_converter.h (100%)\n rename src/{ => apps}/qcam/main.cpp (96%)\n rename src/{ => apps}/qcam/main_window.cpp (99%)\n rename src/{ => apps}/qcam/main_window.h (98%)\n rename src/{ => apps}/qcam/meson.build (80%)\n rename src/{ => apps}/qcam/message_handler.cpp (100%)\n rename src/{ => apps}/qcam/message_handler.h (100%)\n rename src/{ => apps}/qcam/viewfinder.h (100%)\n rename src/{ => apps}/qcam/viewfinder_gl.cpp (99%)\n rename src/{ => apps}/qcam/viewfinder_gl.h (100%)\n rename src/{ => apps}/qcam/viewfinder_qt.cpp (99%)\n rename src/{ => apps}/qcam/viewfinder_qt.h (100%)\n rename src/{cam => apps}/stream_options.cpp (100%)\n rename src/{cam => apps}/stream_options.h (100%)\n\n\nbase-commit: 376adeb7b7e0b75f2fa90b890fe0203d1e268cdf"}