[functionalities of `EXTERNAL`](https://developer.android.com/reference/android/hardware/camera2/CameraMetadata#INFO_SUPPORTED_HARDWARE_LEVEL_EXTERNAL)
hardware level are not fully supported.
Here is a list of supported features - Single input multiple output stream and
capture:
- Support for YUV and JPEG
Notable missing features:
- Support for auto 3A (AWB, AE, AF): virtual camera will announce convergence
of 3A algorithm even though it can't receive any information about this from
the owner.
- No flash/torch support
## Overview
Graphic data are exchanged using the Surface infrastructure. Like any other
Camera HAL, the Surfaces to write data into are received from the client.
Virtual Camera exposes a **different** Surface onto which the owner can write
data. In the middle, we use an EGL Texture which adapts (if needed) the producer
data to the required consumer format (scaling only for now, but we might also
add support for rotation and cropping in the future).
When the client application requires multiple resolutions, the closest one among
supported resolutions is used for the input data and the image data is down
scaled for the lower resolutions.
Depending on the type of output, the rendering pipelines change. Here is an