summaryrefslogtreecommitdiff
path: root/static/usage.html
diff options
context:
space:
mode:
Diffstat (limited to 'static/usage.html')
-rw-r--r--static/usage.html146
1 files changed, 117 insertions, 29 deletions
diff --git a/static/usage.html b/static/usage.html
index 0da1527a..12d79db3 100644
--- a/static/usage.html
+++ b/static/usage.html
@@ -76,7 +76,13 @@
</ul>
</li>
<li><a href="#web-browsing">Web browsing</a></li>
- <li><a href="#camera">Camera</a></li>
+ <li>
+ <a href="#camera">Camera</a>
+ <ul>
+ <li><a href="#grapheneos-camera-app">GrapheneOS Camera app</a></li>
+ <li><a href="#google-camera">Google Camera</a></li>
+ </ul>
+ </li>
<li><a href="#exec-spawning">Exec spawning</a></li>
<li><a href="#bugs-uncovered-by-security-features">Bugs uncovered by security features</a></li>
<li>
@@ -492,38 +498,120 @@
<section id="camera">
<h2><a href="#camera">Camera</a></h2>
- <p>GrapheneOS itself has the same camera capabilities and quality as the stock OS.
- It will match the stock OS when comparing the same app on each OS.</p>
+ <p>GrapheneOS has the same camera capabilities and quality as the stock OS. It
+ will match the stock OS when comparing the same app on each OS.</p>
+
+ <section id="grapheneos-camera-app">
+ <h3><a href="#grapheneos-camera-app">GrapheneOS Camera app</a></h3>
+
+ <p>GrapheneOS includes our own modern Camera app based on the bleeding edge
+ release channel of Android's CameraX library. It provides modes for QR
+ scanning, image capture and video recording as tabs at the bottom of the
+ screen. You can either use the tab interface or swipe left and right anywhere
+ on the screen above it to switch between them. The arrow button at the top of
+ the screen opens the settings panel and you can close it by pressing anywhere
+ outside the settings panel. You can also swipe down to open the settings and
+ swipe up to close it. Outside of the QR scanning mode, there's a row of large
+ buttons above the tab bar for switching between the cameras (left), capturing
+ images and starting/stopping video recording (middle) and opening the gallery
+ (right). The volume keys can also be used as an equivalent to pressing the
+ capture button. While recording a video, the gallery button becomes an image
+ capture button for capturing images.</p>
+
+ <p>Our Camera app provides the system media intents used by other apps to
+ capture images / record videos via the OS provided camera implementation.
+ These intents can only be provided by a system app since Android 11, so the
+ quality of the system camera is quite important.</p>
+
+ <p>The in-app gallery / video player doesn't yet support zooming and depends
+ on opening an external image/video editor. This will be improved in the
+ future. We'll eventually be making our own gallery/editor app sharing a lot of
+ the code with the in-app gallery in the camera.</p>
+
+ <p>Using the default 4:3 aspect ratio for image capture is recommended since
+ 16:9 is simply cropped output on all supported devices. A device oriented
+ towards video recording might actually have a wider image sensor but that's
+ not the case for Pixels or nearly any other smartphone.</p>
- <p>The Camera app included in GrapheneOS is very basic and can't take full advantage
- of the hardware. It doesn't offer much in the way of configuration. In the long term,
- it's going to be replaced. In the short term, there are other apps available providing
- more capabilities and better support for taking advantage of the hardware.</p>
+ <p>Image capture uses lightweight HDR+ on all supported Pixels and HDRnet for the
+ preview on 5th generation Pixels. Using the torch or camera flash will result
+ in HDR+ being disabled which is why automatic flash isn't enabled by default.
+ The lightweight HDR+ doesn't use as many frames as the more aggressive Google
+ Camera HDR+. CameraX extensions will eventually provide support for an HDR
+ mode with more aggressive HDR+ taking/combining more than only around 3 frames
+ along with a Night mode providing the Night Sight variant of HDR+ inflating
+ the light of the scene through combining the frames. Other fancy features like
+ Portrait mode will also depend on CameraX extensions being provided in the
+ future. There isn't a timeline for this but an initial implementation will
+ likely be shipped within the next year for Pixels.</p>
- <p>Open Camera is somewhat more advanced and much more configurable. You should
- make sure to configure it to use the Camera2 API since it uses the legacy camera
- APIs by default for broader compatibility with devices. It isn't currently able to
- make use of special purpose cameras and doesn't have any advanced image capturing
- or processing technology. It has a traditional software-based HDR mode which
- captures 3 images and merges them in a way that isn't at all intelligent and
- causes a lot of blur and distortion. You probably don't want to use this unless
- you have a way to mount the phone in a stable position and aren't taking a picture
- of anything that's not almost entirely still.</p>
+ <p>Zooming via pinch to zoom or the zoom slider will automatically make use of
+ the wide angle and telephoto cameras on Pixels. 4th generation Pixels have a
+ telephoto camera for 2x zoom and above. 5th generation Pixels have a wide
+ angle lens for zooming out from 1x to 0.6x. Images taken with the wide angle
+ lens won't match the quality of the normal camera but it offers a much wider
+ field of view.</p>
- <p>Google Camera can be used with the <a href="#sandboxed-play-services">sandboxed
- Play services compatibility layer</a> and can take full advantage of the available
- cameras and image processing hardware as it can on the stock OS. Other camera apps
- could provide the same image quality and features but there aren't any comparable
- alternatives in practice. HDR+ is enabled by default and is a much more advanced
- replacement for HDR taking bursts of pictures and intelligently combining those
- which is what makes the image quality so much higher, especially for low light.
- The Night Sight feature is essentially the same thing, but with the light of the
- picture unnaturally increased through combining the data.</p>
+ <p>By default, continuous auto focus, auto exposure and auto white balance are
+ used across the whole scene. Tapping to focus will switch to auto focus, auto
+ exposure and auto white balance based on that location. The focus timeout
+ setting determines the timeout before it switches back the default mode. The
+ exposure compensation slider on the left allows manually tuning exposure and
+ will automatically adjust shutter speed, aperture and ISO without disrupting
+ lightweight HDR+ support. Further configuration / tuning over the algorithms
+ will be provided in the future. Direct manual control doesn't make much sense
+ with the modern camera stack and isn't planned.</p>
- <p>Since there isn't a project making a serious, high quality open source camera
- app able to even compete with Google Camera without HDR+ and the fancy features,
- GrapheneOS is funding the creation of a new app as a replacement for the AOSP
- Camera app.</p>
+ <p>CameraX only recently gained official support for video recording in
+ October 2021 and there are still some quirks. The preview can sometimes end up
+ misaligned but the recorded videos won't be impacted. 16:9 is currently the
+ only supported video aspect ratio. 1080p (FHD) is the default but 2160p (UHD)
+ is supported. CameraX UHD support may be buggy on some devices.</p>
+
+ <p>The QR scanning mode only scans within the scanning square marked on the
+ screen. The QR code should be aligned with the edges of the square but can
+ have any 90 degree orientation. Non-standard inverted QR codes are fully
+ supported. It's a very quick and high quality QR scanner able to easily scan
+ very high density QR codes from Pixels. Every 2 seconds, it will refresh auto
+ focus, auto exposure and auto white balance on the scanning square. It has
+ full support for zooming in and out. Support for other kinds of barcodes will
+ be added in the future, but adding them transparently would result in getting
+ false positives and would substantially harm the QR scanning capability. It
+ will need to be done in a way offering more control without having an overly
+ complex user interface.</p>
+
+ <p>Camera permission is the only one that's required. Images and videos are
+ stored via the Media Store API so media/storage permissions aren't required.
+ The Microphone permission is needed for video recording by default but not
+ when including audio is disabled. Location permission is only needed if you
+ explicitly enabling location tagging, which is an experimental feature.</p>
+
+ <p>Captured images currently include an EXIF timestamp, the phone model and an
+ abstraction of the exposure configuration. This will become fully optional in
+ the future and will likely be opt-in rather than opt-out. EXIF orientation
+ data is crucial for setting the proper orientation of the image. Videos have
+ their own similar metadata.</p>
+ </section>
+
+ <section id="google-camera">
+ <h3><a href="#google-camera">Google Camera</a></h3>
+
+ <p>Google Camera can be used with the <a href="#sandboxed-play-services">sandboxed
+ Play services compatibility layer</a> and can take full advantage of the
+ available cameras and image processing hardware as it can on the stock OS.
+ Other camera apps could provide the same image quality and features but there
+ aren't any comparable alternatives in practice. HDR+ is enabled by default and
+ is a much more advanced replacement for HDR taking bursts of pictures and
+ intelligently combining those which is what makes the image quality so much
+ higher, especially for low light. The Night Sight feature is essentially the
+ same thing, but with the light of the picture unnaturally increased through
+ combining the data.</p>
+
+ <p>Since there isn't a project making a serious, high quality open source
+ camera app able to even compete with Google Camera without HDR+ and the fancy
+ features, GrapheneOS is funding the creation of a new app as a replacement for
+ the AOSP Camera app.</p>
+ </section>
</section>
<section id="exec-spawning">