| /* |
| * Copyright (C) 2016-2017 Intel Corporation |
| * Copyright (c) 2017, Fuzhou Rockchip Electronics Co., Ltd |
| * |
| * 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 _CAMERA3_V4L2_FORMAT_H_ |
| #define _CAMERA3_V4L2_FORMAT_H_ |
| #include <linux/videodev2.h> |
| #include "UtilityMacros.h" |
| |
| NAMESPACE_DECLARATION { |
| /** |
| * \struct CameraFormatBridge |
| * Structure to hold static array of formats with their depths, description |
| * and information often needed in image buffer processing. |
| * This is derived concept from camera driver, with |
| * redefinition of info we are interested. |
| */ |
| struct CameraFormatBridge { |
| unsigned int pixelformat; |
| unsigned int depth; |
| bool planar; |
| bool bayer; |
| }; |
| extern const struct CameraFormatBridge sV4l2PixelFormatBridge[]; |
| const struct CameraFormatBridge* getCameraFormatBridge(unsigned int fourcc); |
| |
| /** |
| * returns number of non contiguous planes for given V4L2 pixelformat (fourcc) |
| * commonly used to determine planes number for buffer. |
| */ |
| int numOfNonContiguousPlanes(unsigned int fourcc); |
| /** |
| * return pixels based on bytes |
| * |
| * commonly used to calculate bytes-per-line as per pixel width |
| */ |
| int bytesToPixels(int fourcc, int bytes); |
| /** |
| * return bytes-per-line based on given pixels |
| */ |
| int pixelsToBytes(int fourcc, int pixels); |
| |
| /** |
| * Return frame size (in bytes) based on image format description |
| */ |
| int frameSize(int fourcc, int width, int height); |
| |
| const char* v4l2Fmt2Str(int format); |
| bool isBayerFormat(int fourcc); |
| |
| } NAMESPACE_DECLARATION_END |
| |
| #endif// _CAMERA3_V4L2_FORMAT_H_ |