161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang/* 261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * Copyright@ Samsung Electronics Co. LTD 361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * 461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * Licensed under the Apache License, Version 2.0 (the "License"); 561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * you may not use this file except in compliance with the License. 661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * You may obtain a copy of the License at 761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * 861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * http://www.apache.org/licenses/LICENSE-2.0 961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * 1061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * Unless required by applicable law or agreed to in writing, software 1161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * distributed under the License is distributed on an "AS IS" BASIS, 1261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * See the License for the specific language governing permissions and 1461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * limitations under the License. 1561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang*/ 1661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 1761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang/* 1861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * file exynos5_format_v4l2.c 1961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * author Sangwoo, Park(sw5771.park@samsung.com) 2061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * date 2011/06/02 2161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * 2261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * Revision History: 2361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * - 2010/06/03 : Sangwoo, Park(sw5771.park@samsung.com) 2461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * Initial version 2561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * 2661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * - 2011/12/07 : Hyeonmyeong Choi( hyeon.choi@samsung.com) 2761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * Add V4L2_PIX_FMT_YVU420M 2861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * 2961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * - 2012/03/06 : shinwon lee(shinwon.lee@samsung.com) 3061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * Merge to libexynosutils 3161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * 3261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang */ 3361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 3461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang#ifndef __EXYNOS5_FORMAT_V4L2_H__ 3561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang#define __EXYNOS5_FORMAT_V4L2_H__ 3661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 3761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang//---------------------------------------------------------// 3861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang// Include 3961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang//---------------------------------------------------------// 4061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang#include <hardware/hardware.h> 4161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang#include "exynos_format.h" 4261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang#include "s5p_fimc_v4l2.h" 4361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang#include <utils/Log.h> 440dd00e7b38b410dfbc9d9886f5d259b338a60bb1Christopher Ferris#include <linux/videodev2.h> 45c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang#include "videodev2_exynos_media.h" 4661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 4761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Changint HAL_PIXEL_FORMAT_2_V4L2_PIX( 4861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang int hal_pixel_format) 4961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang{ 5061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang int v4l2_pixel_format = -1; 5161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 5261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang switch (hal_pixel_format) { 5361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_RGBA_8888: 5461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_RGBX_8888: 55129f353cd0597f7acd05097f4bca0b3c5890dc23Greg Hackmann case HAL_PIXEL_FORMAT_CUSTOM_ARGB_8888: 5661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang v4l2_pixel_format = V4L2_PIX_FMT_RGB32; 5761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 5861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 5961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_RGB_888: 6061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang v4l2_pixel_format = V4L2_PIX_FMT_RGB24; 6161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 6261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 6361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_RGB_565: 6461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang v4l2_pixel_format = V4L2_PIX_FMT_RGB565; 6561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 6661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 6761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_BGRA_8888: 6861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang v4l2_pixel_format = V4L2_PIX_FMT_BGR32; 6961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 7061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 71c853be7b9977a6a0402bd5a65c0c32ac9e2fde1dRebecca Schultz Zavin case HAL_PIXEL_FORMAT_EXYNOS_YV12: 7261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang v4l2_pixel_format = V4L2_PIX_FMT_YVU420M; 7361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 7461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 7561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_YCbCr_420_P: 7661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang v4l2_pixel_format = V4L2_PIX_FMT_YUV420M; 7761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 7861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 7961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_YCbCr_422_SP: 8061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CUSTOM_YCbCr_422_SP: 8161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang v4l2_pixel_format = V4L2_PIX_FMT_NV61; 8261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 8361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 8461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_YCbCr_420_SP: 8561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CUSTOM_YCbCr_420_SP: 8661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang v4l2_pixel_format = V4L2_PIX_FMT_NV12M; 8761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 8861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 8961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_YCbCr_422_I: 9061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CUSTOM_YCbCr_422_I: 9161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang v4l2_pixel_format = V4L2_PIX_FMT_YUYV; 9261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 9361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 9461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_YCbCr_422_P: 9561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang v4l2_pixel_format = V4L2_PIX_FMT_YUV422P; 9661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 9761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 9861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CbYCrY_422_I: 9961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CUSTOM_CbYCrY_422_I: 10061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang v4l2_pixel_format = V4L2_PIX_FMT_UYVY; 10161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 10261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 10361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_YCrCb_422_SP: 10461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CUSTOM_YCrCb_422_SP: 10561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang v4l2_pixel_format = V4L2_PIX_FMT_NV16; 10661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 10761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 108c853be7b9977a6a0402bd5a65c0c32ac9e2fde1dRebecca Schultz Zavin case HAL_PIXEL_FORMAT_EXYNOS_YCrCb_420_SP: 10961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CUSTOM_YCrCb_420_SP: 11061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang v4l2_pixel_format = V4L2_PIX_FMT_NV21M; 11161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 11261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 11361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_YCbCr_420_SP_TILED: 11461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang v4l2_pixel_format = V4L2_PIX_FMT_NV12MT_16X16; 11561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 11661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 11761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CUSTOM_YCbCr_420_SP_TILED: 11861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang v4l2_pixel_format = V4L2_PIX_FMT_NV12MT_16X16; 11961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 12061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 12161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CUSTOM_YCrCb_422_I: 12261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang v4l2_pixel_format = V4L2_PIX_FMT_YVYU; 12361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 12461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 12561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CUSTOM_CrYCbY_422_I: 12661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang v4l2_pixel_format = V4L2_PIX_FMT_VYUY; 12761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 12861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 12961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang default: 13053b4197a2353461bda663a86887adb68f6325e43Dima Zavin ALOGE("%s::unmatched HAL_PIXEL_FORMAT color_space(0x%x)\n", 13161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang __func__, hal_pixel_format); 13261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 13361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang } 13461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 13561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang return v4l2_pixel_format; 13661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang} 13761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 13861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Changint V4L2_PIX_2_HAL_PIXEL_FORMAT( 13961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang int v4l2_pixel_format) 14061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang{ 14161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang int hal_pixel_format = -1; 14261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 14361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang switch (v4l2_pixel_format) { 14461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_RGB32: 14561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang hal_pixel_format = HAL_PIXEL_FORMAT_RGBA_8888; 14661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 14761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 14861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_RGB24: 14961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang hal_pixel_format = HAL_PIXEL_FORMAT_RGB_888; 15061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 15161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 15261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_RGB565: 15361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang hal_pixel_format = HAL_PIXEL_FORMAT_RGB_565; 15461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 15561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 15661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_BGR32: 15761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang hal_pixel_format = HAL_PIXEL_FORMAT_BGRA_8888; 15861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 15961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 16061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_YUV420: 16161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_YUV420M: 16261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang hal_pixel_format = HAL_PIXEL_FORMAT_YCbCr_420_P; 16361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 16461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 16561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_YVU420: 16661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_YVU420M: 167c853be7b9977a6a0402bd5a65c0c32ac9e2fde1dRebecca Schultz Zavin hal_pixel_format = HAL_PIXEL_FORMAT_EXYNOS_YV12; 16861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 16961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 17061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_NV16: 17161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang hal_pixel_format = HAL_PIXEL_FORMAT_CUSTOM_YCrCb_422_SP; 17261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 17361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 17461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_NV12: 17561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang hal_pixel_format = HAL_PIXEL_FORMAT_YCbCr_420_SP; 17661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 17761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 17861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_NV12M: 17961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang hal_pixel_format = HAL_PIXEL_FORMAT_CUSTOM_YCbCr_420_SP; 18061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 18161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 18261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_YUYV: 18361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang hal_pixel_format = HAL_PIXEL_FORMAT_CUSTOM_YCbCr_422_I; 18461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 18561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 18661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_YUV422P: 18761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang hal_pixel_format = HAL_PIXEL_FORMAT_YCbCr_422_P; 18861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 18961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 19061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_UYVY: 19161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang hal_pixel_format = HAL_PIXEL_FORMAT_CUSTOM_CbYCrY_422_I; 19261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 19361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 19461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_NV21: 19561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang hal_pixel_format = HAL_PIXEL_FORMAT_CUSTOM_YCrCb_420_SP; 19661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 19761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_NV12MT_16X16: 19861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 19961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang hal_pixel_format = HAL_PIXEL_FORMAT_YCbCr_420_SP_TILED; 20061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 20161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 20261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_NV61: 20361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang hal_pixel_format = HAL_PIXEL_FORMAT_CUSTOM_YCbCr_422_SP; 20461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 20561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 20661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_YVYU: 20761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang hal_pixel_format = HAL_PIXEL_FORMAT_CUSTOM_YCrCb_422_I; 20861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 20961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 21061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_VYUY: 21161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang hal_pixel_format = HAL_PIXEL_FORMAT_CUSTOM_CrYCbY_422_I; 21261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 21361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 21461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang default: 21553b4197a2353461bda663a86887adb68f6325e43Dima Zavin ALOGE("%s::unmatched V4L2_PIX color_space(%d)\n", 21661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang __func__, v4l2_pixel_format); 21761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 21861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang } 21961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 22061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang return hal_pixel_format; 22161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang} 22261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 223471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavinint NUM_PLANES(int hal_pixel_format) 224471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin{ 225471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin switch(hal_pixel_format) { 226c853be7b9977a6a0402bd5a65c0c32ac9e2fde1dRebecca Schultz Zavin case HAL_PIXEL_FORMAT_EXYNOS_YV12: 227471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin case HAL_PIXEL_FORMAT_YCbCr_420_P: 228471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin return 3; 229c853be7b9977a6a0402bd5a65c0c32ac9e2fde1dRebecca Schultz Zavin case HAL_PIXEL_FORMAT_EXYNOS_YCrCb_420_SP: 230471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin case HAL_PIXEL_FORMAT_YCbCr_420_SP: 231471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin case HAL_PIXEL_FORMAT_CUSTOM_YCbCr_420_SP: 232471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin case HAL_PIXEL_FORMAT_CUSTOM_YCrCb_420_SP: 233471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin case HAL_PIXEL_FORMAT_CUSTOM_YCbCr_420_SP_TILED: 234471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin return 2; 235471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin break; 236471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin case HAL_PIXEL_FORMAT_YCbCr_420_I: 237471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin case HAL_PIXEL_FORMAT_CbYCrY_420_I: 238471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin return 1; 239471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin default: 240471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin return 1; 241471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin } 242471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin} 243471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin 24461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Changunsigned int FRAME_SIZE( 24561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang int hal_pixel_format, 24661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang int width, 24761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang int height) 24861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang{ 24961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang unsigned int frame_size = 0; 25061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang unsigned int size = 0; 25161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 25261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang switch (hal_pixel_format) { 25361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang // 16bpp 25461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_RGB_565: 25561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang frame_size = GET_16BPP_FRAME_SIZE(width, height); 25661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 25761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 25861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang // 24bpp 25961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_RGB_888: 26061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang frame_size = GET_24BPP_FRAME_SIZE(width, height); 26161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 26261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 26361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang // 32bpp 26461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_RGBA_8888: 26561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_BGRA_8888: 26661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_RGBX_8888: 267129f353cd0597f7acd05097f4bca0b3c5890dc23Greg Hackmann case HAL_PIXEL_FORMAT_CUSTOM_ARGB_8888: 26861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang frame_size = GET_32BPP_FRAME_SIZE(width, height); 26961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 27061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 27161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang // 12bpp 272c853be7b9977a6a0402bd5a65c0c32ac9e2fde1dRebecca Schultz Zavin case HAL_PIXEL_FORMAT_EXYNOS_YV12: 27361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_YCbCr_420_P: 27461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_YCbCr_420_I: 27561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CbYCrY_420_I: 27661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang size = ALIGN(width, 16) * ALIGN(height, 16); 27761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang frame_size = size + 2 * ALIGN(width >> 1, 8) * ALIGN(height >> 1, 8); 27861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 27961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 280c853be7b9977a6a0402bd5a65c0c32ac9e2fde1dRebecca Schultz Zavin case HAL_PIXEL_FORMAT_EXYNOS_YCrCb_420_SP: 28161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_YCbCr_420_SP: 28261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CUSTOM_YCbCr_420_SP: 28361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CUSTOM_YCrCb_420_SP: 28461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang size = ALIGN(ALIGN(width, 16) * ALIGN(height, 16), 2048); 28561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang frame_size = size + ALIGN(ALIGN(width, 16) * ALIGN(height >> 1, 8), 2048); 28661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 28761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 28861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CUSTOM_YCbCr_420_SP_TILED: 28961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang frame_size = ALIGN_TO_8KB(ALIGN_TO_128B(width) * ALIGN_TO_32B(height)) 29061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang + ALIGN_TO_8KB(ALIGN_TO_128B(width) * ALIGN_TO_32B(height >> 1)); 29161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 29261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 29361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang // 16bpp 29461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_YCbCr_422_SP: 29561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_YCbCr_422_I: 29661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_YCbCr_422_P: 29761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CbYCrY_422_I: 29861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_YCrCb_422_SP: 29961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CUSTOM_YCbCr_422_SP: 30061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CUSTOM_YCrCb_422_SP: 30161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CUSTOM_YCbCr_422_I: 30261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CUSTOM_YCrCb_422_I: 30361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CUSTOM_CbYCrY_422_I: 30461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CUSTOM_CrYCbY_422_I: 30561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang frame_size = GET_16BPP_FRAME_SIZE(width, height); 30661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 30761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 30861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang default: 30953b4197a2353461bda663a86887adb68f6325e43Dima Zavin ALOGD("%s::no matching source colorformat(0x%x), width(%d), h(%d) fail\n", 31061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang __func__, hal_pixel_format, width, height); 31161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 31261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang } 31361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 31461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang return frame_size; 31561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang} 31661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 317471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavinint PLANAR_FRAME_SIZE(int hal_pixel_format, int width, int height, 318471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin unsigned int *luma_size, unsigned int *chroma_size) 319471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin{ 320471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin unsigned int size = 0; 321471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin 322471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin switch(hal_pixel_format) { 323c853be7b9977a6a0402bd5a65c0c32ac9e2fde1dRebecca Schultz Zavin case HAL_PIXEL_FORMAT_EXYNOS_YV12: 324471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin case HAL_PIXEL_FORMAT_YCbCr_420_P: 325471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin size = width * height; 326471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin *luma_size = size; 327471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin *chroma_size = size >> 2; 328c853be7b9977a6a0402bd5a65c0c32ac9e2fde1dRebecca Schultz Zavin case HAL_PIXEL_FORMAT_EXYNOS_YCrCb_420_SP: 329471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin case HAL_PIXEL_FORMAT_YCbCr_420_I: 330471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin case HAL_PIXEL_FORMAT_CbYCrY_420_I: 331471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin case HAL_PIXEL_FORMAT_YCbCr_420_SP: 332471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin case HAL_PIXEL_FORMAT_CUSTOM_YCbCr_420_SP: 333471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin case HAL_PIXEL_FORMAT_CUSTOM_YCrCb_420_SP: 334471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin size = width * height; 335471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin *luma_size = size; 336471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin *chroma_size = (size >> 2) << 1; 337471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin break; 338471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin case HAL_PIXEL_FORMAT_CUSTOM_YCbCr_420_SP_TILED: 339471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin *luma_size = ALIGN_TO_8KB(ALIGN_TO_128B(width) * ALIGN_TO_32B(height)); 340471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin *chroma_size = ALIGN_TO_8KB(ALIGN_TO_128B(width) * 341471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin ALIGN_TO_32B(height >> 1)); 342471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin break; 343471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin default: 344471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin *luma_size = FRAME_SIZE(hal_pixel_format, width, height); 345471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin } 346471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin return 0; 347471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin} 348471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin 349471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin 35061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Changint V4L2_PIX_2_YUV_INFO(unsigned int v4l2_pixel_format, unsigned int * bpp, unsigned int * planes) 35161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang{ 35261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang switch (v4l2_pixel_format) { 35361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_NV12: 35461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang *bpp = 12; 35561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang *planes = 1; 35661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 35761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_NV21: 35861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_NV21X: 35961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_NV12M: 36061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_NV21M: 361aad0a4c53f4bcea7c780530175b58469a12cb332Benoit Goby case V4L2_PIX_FMT_NV12MT_16X16: 36261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang *bpp = 12; 36361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang *planes = 2; 36461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 36561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_YUV420: 36661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_YUV420M: 36761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_YVU420M: 36861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang *bpp = 12; 36961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang *planes = 3; 37061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 37161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_YUYV: 37261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_YVYU: 37361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_UYVY: 37461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_VYUY: 37561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang *bpp = 16; 37661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang *planes = 1; 37761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 37861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_NV16: 37961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_NV61: 38061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_NV16X: 38161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_NV61X: 38261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang *bpp = 16; 38361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang *planes = 2; 38461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 38561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_YUV422P: 38661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang *bpp = 16; 38761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang *planes = 3; 38861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 38961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang default: 39061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang return -1; 39161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 39261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang } 39361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 39461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang return 0; 39561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang} 39661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 39761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Changunsigned int get_yuv_bpp(unsigned int v4l2_pixel_format) 39861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang{ 39961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang unsigned int bpp, planes; 40061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 40161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang if (V4L2_PIX_2_YUV_INFO(v4l2_pixel_format, &bpp, &planes) < 0) 40261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang bpp = -1; 40361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 40461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang return bpp; 40561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang} 40661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 40761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Changunsigned int get_yuv_planes(unsigned int v4l2_pixel_format) 40861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang{ 40961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang unsigned int bpp, planes; 41061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 41161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang if (V4L2_PIX_2_YUV_INFO(v4l2_pixel_format, &bpp, &planes) < 0) 41261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang planes = -1; 41361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 41461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang return planes; 41561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang} 41661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang#endif 417