page.title=Output streams and cropping
@jd:body

<!--
    Copyright 2013 The Android Open Source Project

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-->
<div id="qv-wrapper">
  <div id="qv">
    <h2>In this document</h2>
    <ol id="auto-toc">
    </ol>
  </div>
</div>

<h2 id="output-stream">Output streams</h2>
<p> Unlike the old camera subsystem, which has 3-4 different ways of producing data 
  from the camera (ANativeWindow-based preview operations, preview callbacks, 
  video callbacks, and takePicture callbacks), the new subsystem operates solely 
  on the ANativeWindow-based pipeline for all resolutions and output formats. 
  Multiple such streams can be configured at once, to send a single frame to many 
  targets such as the GPU, the video encoder, RenderScript, or app-visible buffers 
  (RAW Bayer, processed YUV buffers, or JPEG-encoded buffers).</p>
<p>As an optimization, these output streams must be configured ahead of time, and 
  only a limited number may exist at once. This allows for pre-allocation of 
  memory buffers and configuration of the camera hardware, so that when requests 
  are submitted with multiple or varying output pipelines listed, there won't be 
  delays or latency in fulfilling the request.</p>
<p>To support backwards compatibility with the current camera API, at least 3 
  simultaneous YUV output streams must be supported, plus one JPEG stream. This is 
  required for video snapshot support with the application also receiving YUV 
  buffers:</p>
<ul>
  <li>One stream to the GPU/SurfaceView (opaque YUV format) for preview</li>
  <li>One stream to the video encoder (opaque YUV format) for recording</li>
  <li>One stream to the application (known YUV format) for preview frame callbacks</li>
  <li>One stream to the application (JPEG) for video snapshots.</li>
</ul>
<p>The exact requirements are still being defined since the corresponding API
isn't yet finalized.</p>
<h2>Cropping</h2>
<p>Cropping of the full pixel array (for digital zoom and other use cases where a 
  smaller FOV is desirable) is communicated through the ANDROID_SCALER_CROP_REGION 
  setting. This is a per-request setting, and can change on a per-request basis, 
  which is critical for implementing smooth digital zoom.</p>
<p>The region is defined as a rectangle (x, y, width, height), with (x, y) 
  describing the top-left corner of the rectangle. The rectangle is defined on the 
  coordinate system of the sensor active pixel array, with (0,0) being the 
  top-left pixel of the active pixel array. Therefore, the width and height cannot 
  be larger than the dimensions reported in the ANDROID_SENSOR_ACTIVE_PIXEL_ARRAY 
  static info field. The minimum allowed width and height are reported by the HAL 
  through the ANDROID_SCALER_MAX_DIGITAL_ZOOM static info field, which describes 
  the maximum supported zoom factor. Therefore, the minimum crop region width and 
  height are:</p>
<pre>
  {width, height} =
   { floor(ANDROID_SENSOR_ACTIVE_PIXEL_ARRAY[0] /
       ANDROID_SCALER_MAX_DIGITAL_ZOOM),
     floor(ANDROID_SENSOR_ACTIVE_PIXEL_ARRAY[1] /
       ANDROID_SCALER_MAX_DIGITAL_ZOOM) }
  </pre>
<p>If the crop region needs to fulfill specific requirements (for example, it needs 
  to start on even coordinates, and its width/height needs to be even), the HAL 
  must do the necessary rounding and write out the final crop region used in the 
  output result metadata. Similarly, if the HAL implements video stabilization, it 
  must adjust the result crop region to describe the region actually included in 
  the output after video stabilization is applied. In general, a camera-using 
  application must be able to determine the field of view it is receiving based on 
  the crop region, the dimensions of the image sensor, and the lens focal length.</p>
<p>Since the crop region applies to all streams, which may have different aspect 
  ratios than the crop region, the exact sensor region used for each stream may be 
  smaller than the crop region. Specifically, each stream should maintain square 
  pixels and its aspect ratio by minimally further cropping the defined crop 
  region. If the stream's aspect ratio is wider than the crop region, the stream 
  should be further cropped vertically, and if the stream's aspect ratio is 
  narrower than the crop region, the stream should be further cropped 
  horizontally.</p>
<p>In all cases, the stream crop must be centered within the full crop region, and 
  each stream is only either cropped horizontally or vertical relative to the full 
  crop region, never both.</p>
<p>For example, if two streams are defined, a 640x480 stream (4:3 aspect), and a 
  1280x720 stream (16:9 aspect), below demonstrates the expected output regions 
  for each stream for a few sample crop regions, on a hypothetical 3 MP (2000 x 
  1500 pixel array) sensor.</p>
</p>
  Crop region: (500, 375, 1000, 750) (4:3 aspect ratio)<br/>
  640x480 stream crop: (500, 375, 1000, 750) (equal to crop region)<br/>
  1280x720 stream crop: (500, 469, 1000, 562)
</p>
  <img src="images/crop-region-43-ratio.png" alt="crop-region-43-ratio" id="figure1" />
<p class="img-caption">
  <strong>Figure 1.</strong> 4:3 aspect ratio
</p>
<p>Crop region: (500, 375, 1333, 750) (16:9 aspect ratio)<br/>
  640x480 stream crop: (666, 375, 1000, 750)<br/>
  1280x720 stream crop: (500, 375, 1333, 750) (equal to crop region)
</p>
  <img src="images/crop-region-169-ratio.png" alt="crop-region-169-ratio" id="figure2" />
<p class="img-caption">
  <strong>Figure 2.</strong> 16:9 aspect ratio
</p>
<p>Crop region: (500, 375, 750, 750) (1:1 aspect ratio)<br/>
  640x480 stream crop: (500, 469, 750, 562)<br/>
  1280x720 stream crop: (500, 543, 750, 414)
</p>
  <img src="images/crop-region-11-ratio.png" alt="crop-region-11-ratio" id="figure3" />
<p class="img-caption">
  <strong>Figure 3.</strong> 1:1 aspect ratio
</p>
<p>
  And a final example, a 1024x1024 square aspect ratio stream instead of the 480p 
  stream:<br/>
  Crop region: (500, 375, 1000, 750) (4:3 aspect ratio)<br/>
  1024x1024 stream crop: (625, 375, 750, 750)<br/>
  1280x720 stream crop: (500, 469, 1000, 562)
</p>
  <img src="images/crop-region-43-square-ratio.png" alt="crop-region-43-square-ratio" id="figure4" />
<p class="img-caption">
  <strong>Figure 4.</strong> 4:3 aspect ratio, square
</p>
<h2 id="reprocessing">Reprocessing</h2>
<p> Additional support for raw image files is provided by reprocessing support for RAW Bayer 
  data. This support allows the camera pipeline to process a previously captured 
  RAW buffer and metadata (an entire frame that was recorded previously), to 
  produce a new rendered YUV or JPEG output.</p>
