/* | |
* Copyright (C) 2011 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. | |
*/ | |
#ifndef ANDROID_CAMERA_CAMERA_FORMAT_CONVERTERS_H | |
#define ANDROID_CAMERA_CAMERA_FORMAT_CONVERTERS_H | |
/* | |
* Contains declaration of the API that allows converting frames from one | |
* pixel format to another. | |
* | |
* For the emulator, we really need to convert into two formats: YV12, which is | |
* used by the camera framework for video, and RGB32 for preview window. | |
*/ | |
#include "camera-common.h" | |
/* Checks if conversion between two pixel formats is available. | |
* Param: | |
* from - Pixel format to convert from. | |
* to - Pixel format to convert to. | |
* Return: | |
* boolean: 1 if converter is available, or 0 if no conversion exists. | |
*/ | |
extern int has_converter(uint32_t from, uint32_t to); | |
/* Converts a frame into multiple framebuffers. | |
* When camera service replies to a framebuffer request from the client, it | |
* usualy sends two framebuffers in the reply: one for video, and another for | |
* preview window. Since these two framebuffers have different pixel formats | |
* (most of the time), we need to do two conversions for each frame received from | |
* the camera. This is the main intention behind this routine: to have a one call | |
* that produces as many conversions as needed. | |
* Param: | |
* frame - Frame to convert. | |
* pixel_format - Defines pixel format for the converting framebuffer. | |
* framebuffer_size, width, height - Converting framebuffer byte size, width, | |
* and height. | |
* framebuffers - Array of framebuffers where to convert the frame. Size of this | |
* array is defined by the 'fbs_num' parameter. Note that the caller must | |
* make sure that buffers are large enough to contain entire frame captured | |
* from the device. | |
* fbs_num - Number of entries in the 'framebuffers' array. | |
* r_scale, g_scale, b_scale - White balance scale. | |
* exp_comp - Expsoure compensation. | |
* Return: | |
* 0 on success, or non-zero value on failure. | |
*/ | |
extern int convert_frame(const void* frame, | |
uint32_t pixel_format, | |
size_t framebuffer_size, | |
int width, | |
int height, | |
ClientFrameBuffer* framebuffers, | |
int fbs_num, | |
float r_scale, | |
float g_scale, | |
float b_scale, | |
float exp_comp); | |
#endif /* ANDROID_CAMERA_CAMERA_FORMAT_CONVERTERS_H */ |