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> 4461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang#include "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: 5561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang v4l2_pixel_format = V4L2_PIX_FMT_RGB32; 5661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 5761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 5861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_RGB_888: 5961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang v4l2_pixel_format = V4L2_PIX_FMT_RGB24; 6061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 6161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 6261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_RGB_565: 6361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang v4l2_pixel_format = V4L2_PIX_FMT_RGB565; 6461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 6561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 6661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_BGRA_8888: 6761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang v4l2_pixel_format = V4L2_PIX_FMT_BGR32; 6861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 6961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 7061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_RGBA_5551: 7161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang v4l2_pixel_format = V4L2_PIX_FMT_RGB555X; 7261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 7361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 7461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_RGBA_4444: 7561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang v4l2_pixel_format = V4L2_PIX_FMT_RGB444; 7661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 7761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 78c853be7b9977a6a0402bd5a65c0c32ac9e2fde1dRebecca Schultz Zavin case HAL_PIXEL_FORMAT_EXYNOS_YV12: 7961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang v4l2_pixel_format = V4L2_PIX_FMT_YVU420M; 8061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 8161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 8261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_YCbCr_420_P: 8361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang v4l2_pixel_format = V4L2_PIX_FMT_YUV420M; 8461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 8561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 8661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_YCbCr_422_SP: 8761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CUSTOM_YCbCr_422_SP: 8861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang v4l2_pixel_format = V4L2_PIX_FMT_NV61; 8961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 9061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 9161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_YCbCr_420_SP: 9261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CUSTOM_YCbCr_420_SP: 9361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang v4l2_pixel_format = V4L2_PIX_FMT_NV12M; 9461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 9561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 9661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_YCbCr_422_I: 9761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CUSTOM_YCbCr_422_I: 9861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang v4l2_pixel_format = V4L2_PIX_FMT_YUYV; 9961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 10061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 10161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_YCbCr_422_P: 10261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang v4l2_pixel_format = V4L2_PIX_FMT_YUV422P; 10361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 10461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 10561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CbYCrY_422_I: 10661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CUSTOM_CbYCrY_422_I: 10761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang v4l2_pixel_format = V4L2_PIX_FMT_UYVY; 10861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 10961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 11061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_YCrCb_422_SP: 11161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CUSTOM_YCrCb_422_SP: 11261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang v4l2_pixel_format = V4L2_PIX_FMT_NV16; 11361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 11461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 115c853be7b9977a6a0402bd5a65c0c32ac9e2fde1dRebecca Schultz Zavin case HAL_PIXEL_FORMAT_EXYNOS_YCrCb_420_SP: 11661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CUSTOM_YCrCb_420_SP: 11761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang v4l2_pixel_format = V4L2_PIX_FMT_NV21M; 11861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 11961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 12061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_YCbCr_420_SP_TILED: 12161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang v4l2_pixel_format = V4L2_PIX_FMT_NV12MT_16X16; 12261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 12361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 12461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CUSTOM_YCbCr_420_SP_TILED: 12561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang v4l2_pixel_format = V4L2_PIX_FMT_NV12MT_16X16; 12661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 12761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 12861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CUSTOM_YCrCb_422_I: 12961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang v4l2_pixel_format = V4L2_PIX_FMT_YVYU; 13061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 13161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 13261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CUSTOM_CrYCbY_422_I: 13361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang v4l2_pixel_format = V4L2_PIX_FMT_VYUY; 13461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 13561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 13661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang default: 13753b4197a2353461bda663a86887adb68f6325e43Dima Zavin ALOGE("%s::unmatched HAL_PIXEL_FORMAT color_space(0x%x)\n", 13861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang __func__, hal_pixel_format); 13961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 14061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang } 14161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 14261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang return v4l2_pixel_format; 14361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang} 14461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 14561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Changint V4L2_PIX_2_HAL_PIXEL_FORMAT( 14661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang int v4l2_pixel_format) 14761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang{ 14861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang int hal_pixel_format = -1; 14961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 15061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang switch (v4l2_pixel_format) { 15161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_RGB32: 15261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang hal_pixel_format = HAL_PIXEL_FORMAT_RGBA_8888; 15361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 15461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 15561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_RGB24: 15661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang hal_pixel_format = HAL_PIXEL_FORMAT_RGB_888; 15761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 15861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 15961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_RGB565: 16061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang hal_pixel_format = HAL_PIXEL_FORMAT_RGB_565; 16161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 16261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 16361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_BGR32: 16461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang hal_pixel_format = HAL_PIXEL_FORMAT_BGRA_8888; 16561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 16661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 16761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_RGB555X: 16861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang hal_pixel_format = HAL_PIXEL_FORMAT_RGBA_5551; 16961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 17061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 17161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_RGB444: 17261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang hal_pixel_format = HAL_PIXEL_FORMAT_RGBA_4444; 17361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 17461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 17561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_YUV420: 17661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_YUV420M: 17761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang hal_pixel_format = HAL_PIXEL_FORMAT_YCbCr_420_P; 17861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 17961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 18061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_YVU420: 18161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_YVU420M: 182c853be7b9977a6a0402bd5a65c0c32ac9e2fde1dRebecca Schultz Zavin hal_pixel_format = HAL_PIXEL_FORMAT_EXYNOS_YV12; 18361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 18461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 18561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_NV16: 18661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang hal_pixel_format = HAL_PIXEL_FORMAT_CUSTOM_YCrCb_422_SP; 18761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 18861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 18961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_NV12: 19061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang hal_pixel_format = HAL_PIXEL_FORMAT_YCbCr_420_SP; 19161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 19261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 19361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_NV12M: 19461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang hal_pixel_format = HAL_PIXEL_FORMAT_CUSTOM_YCbCr_420_SP; 19561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 19661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 19761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_YUYV: 19861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang hal_pixel_format = HAL_PIXEL_FORMAT_CUSTOM_YCbCr_422_I; 19961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 20061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 20161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_YUV422P: 20261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang hal_pixel_format = HAL_PIXEL_FORMAT_YCbCr_422_P; 20361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 20461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 20561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_UYVY: 20661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang hal_pixel_format = HAL_PIXEL_FORMAT_CUSTOM_CbYCrY_422_I; 20761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 20861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 20961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_NV21: 21061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang hal_pixel_format = HAL_PIXEL_FORMAT_CUSTOM_YCrCb_420_SP; 21161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 21261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_NV12MT_16X16: 21361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 21461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang hal_pixel_format = HAL_PIXEL_FORMAT_YCbCr_420_SP_TILED; 21561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 21661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 21761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_NV61: 21861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang hal_pixel_format = HAL_PIXEL_FORMAT_CUSTOM_YCbCr_422_SP; 21961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 22061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 22161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_YVYU: 22261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang hal_pixel_format = HAL_PIXEL_FORMAT_CUSTOM_YCrCb_422_I; 22361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 22461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 22561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_VYUY: 22661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang hal_pixel_format = HAL_PIXEL_FORMAT_CUSTOM_CrYCbY_422_I; 22761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 22861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 22961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang default: 23053b4197a2353461bda663a86887adb68f6325e43Dima Zavin ALOGE("%s::unmatched V4L2_PIX color_space(%d)\n", 23161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang __func__, v4l2_pixel_format); 23261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 23361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang } 23461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 23561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang return hal_pixel_format; 23661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang} 23761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 238471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavinint NUM_PLANES(int hal_pixel_format) 239471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin{ 240471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin switch(hal_pixel_format) { 241c853be7b9977a6a0402bd5a65c0c32ac9e2fde1dRebecca Schultz Zavin case HAL_PIXEL_FORMAT_EXYNOS_YV12: 242471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin case HAL_PIXEL_FORMAT_YCbCr_420_P: 243471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin return 3; 244c853be7b9977a6a0402bd5a65c0c32ac9e2fde1dRebecca Schultz Zavin case HAL_PIXEL_FORMAT_EXYNOS_YCrCb_420_SP: 245471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin case HAL_PIXEL_FORMAT_YCbCr_420_SP: 246471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin case HAL_PIXEL_FORMAT_CUSTOM_YCbCr_420_SP: 247471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin case HAL_PIXEL_FORMAT_CUSTOM_YCrCb_420_SP: 248471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin case HAL_PIXEL_FORMAT_CUSTOM_YCbCr_420_SP_TILED: 249471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin return 2; 250471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin break; 251471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin case HAL_PIXEL_FORMAT_YCbCr_420_I: 252471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin case HAL_PIXEL_FORMAT_CbYCrY_420_I: 253471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin return 1; 254471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin default: 255471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin return 1; 256471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin } 257471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin} 258471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin 25961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Changunsigned int FRAME_SIZE( 26061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang int hal_pixel_format, 26161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang int width, 26261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang int height) 26361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang{ 26461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang unsigned int frame_size = 0; 26561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang unsigned int size = 0; 26661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 26761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang switch (hal_pixel_format) { 26861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang // 16bpp 26961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_RGB_565: 27061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_RGBA_5551: 27161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_RGBA_4444: 27261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang frame_size = GET_16BPP_FRAME_SIZE(width, height); 27361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 27461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 27561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang // 24bpp 27661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_RGB_888: 27761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang frame_size = GET_24BPP_FRAME_SIZE(width, height); 27861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 27961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 28061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang // 32bpp 28161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_RGBA_8888: 28261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_BGRA_8888: 28361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_RGBX_8888: 28461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang frame_size = GET_32BPP_FRAME_SIZE(width, height); 28561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 28661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 28761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang // 12bpp 288c853be7b9977a6a0402bd5a65c0c32ac9e2fde1dRebecca Schultz Zavin case HAL_PIXEL_FORMAT_EXYNOS_YV12: 28961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_YCbCr_420_P: 29061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_YCbCr_420_I: 29161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CbYCrY_420_I: 29261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang size = ALIGN(width, 16) * ALIGN(height, 16); 29361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang frame_size = size + 2 * ALIGN(width >> 1, 8) * ALIGN(height >> 1, 8); 29461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 29561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 296c853be7b9977a6a0402bd5a65c0c32ac9e2fde1dRebecca Schultz Zavin case HAL_PIXEL_FORMAT_EXYNOS_YCrCb_420_SP: 29761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_YCbCr_420_SP: 29861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CUSTOM_YCbCr_420_SP: 29961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CUSTOM_YCrCb_420_SP: 30061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang size = ALIGN(ALIGN(width, 16) * ALIGN(height, 16), 2048); 30161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang frame_size = size + ALIGN(ALIGN(width, 16) * ALIGN(height >> 1, 8), 2048); 30261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 30361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 30461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CUSTOM_YCbCr_420_SP_TILED: 30561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang frame_size = ALIGN_TO_8KB(ALIGN_TO_128B(width) * ALIGN_TO_32B(height)) 30661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang + ALIGN_TO_8KB(ALIGN_TO_128B(width) * ALIGN_TO_32B(height >> 1)); 30761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 30861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 30961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang // 16bpp 31061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_YCbCr_422_SP: 31161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_YCbCr_422_I: 31261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_YCbCr_422_P: 31361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CbYCrY_422_I: 31461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_YCrCb_422_SP: 31561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CUSTOM_YCbCr_422_SP: 31661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CUSTOM_YCrCb_422_SP: 31761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CUSTOM_YCbCr_422_I: 31861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CUSTOM_YCrCb_422_I: 31961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CUSTOM_CbYCrY_422_I: 32061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case HAL_PIXEL_FORMAT_CUSTOM_CrYCbY_422_I: 32161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang frame_size = GET_16BPP_FRAME_SIZE(width, height); 32261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 32361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 32461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang default: 32553b4197a2353461bda663a86887adb68f6325e43Dima Zavin ALOGD("%s::no matching source colorformat(0x%x), width(%d), h(%d) fail\n", 32661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang __func__, hal_pixel_format, width, height); 32761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 32861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang } 32961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 33061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang return frame_size; 33161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang} 33261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 333471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavinint PLANAR_FRAME_SIZE(int hal_pixel_format, int width, int height, 334471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin unsigned int *luma_size, unsigned int *chroma_size) 335471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin{ 336471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin unsigned int size = 0; 337471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin 338471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin switch(hal_pixel_format) { 339c853be7b9977a6a0402bd5a65c0c32ac9e2fde1dRebecca Schultz Zavin case HAL_PIXEL_FORMAT_EXYNOS_YV12: 340471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin case HAL_PIXEL_FORMAT_YCbCr_420_P: 341471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin size = width * height; 342471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin *luma_size = size; 343471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin *chroma_size = size >> 2; 344c853be7b9977a6a0402bd5a65c0c32ac9e2fde1dRebecca Schultz Zavin case HAL_PIXEL_FORMAT_EXYNOS_YCrCb_420_SP: 345471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin case HAL_PIXEL_FORMAT_YCbCr_420_I: 346471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin case HAL_PIXEL_FORMAT_CbYCrY_420_I: 347471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin case HAL_PIXEL_FORMAT_YCbCr_420_SP: 348471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin case HAL_PIXEL_FORMAT_CUSTOM_YCbCr_420_SP: 349471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin case HAL_PIXEL_FORMAT_CUSTOM_YCrCb_420_SP: 350471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin size = width * height; 351471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin *luma_size = size; 352471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin *chroma_size = (size >> 2) << 1; 353471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin break; 354471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin case HAL_PIXEL_FORMAT_CUSTOM_YCbCr_420_SP_TILED: 355471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin *luma_size = ALIGN_TO_8KB(ALIGN_TO_128B(width) * ALIGN_TO_32B(height)); 356471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin *chroma_size = ALIGN_TO_8KB(ALIGN_TO_128B(width) * 357471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin ALIGN_TO_32B(height >> 1)); 358471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin break; 359471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin default: 360471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin *luma_size = FRAME_SIZE(hal_pixel_format, width, height); 361471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin } 362471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin return 0; 363471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin} 364471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin 365471812b710583ffdb5b4bda6c7c85c893762b0f2Rebecca Schultz Zavin 36661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Changint V4L2_PIX_2_YUV_INFO(unsigned int v4l2_pixel_format, unsigned int * bpp, unsigned int * planes) 36761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang{ 36861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang switch (v4l2_pixel_format) { 36961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_NV12: 37061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang *bpp = 12; 37161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang *planes = 1; 37261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 37361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_NV21: 37461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_NV21X: 37561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_NV12M: 37661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_NV21M: 377aad0a4c53f4bcea7c780530175b58469a12cb332Benoit Goby case V4L2_PIX_FMT_NV12MT_16X16: 37861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang *bpp = 12; 37961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang *planes = 2; 38061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 38161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_YUV420: 38261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_YUV420M: 38361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_YVU420M: 38461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang *bpp = 12; 38561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang *planes = 3; 38661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 38761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_YUYV: 38861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_YVYU: 38961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_UYVY: 39061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_VYUY: 39161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang *bpp = 16; 39261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang *planes = 1; 39361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 39461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_NV16: 39561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_NV61: 39661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_NV16X: 39761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_NV61X: 39861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang *bpp = 16; 39961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang *planes = 2; 40061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 40161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case V4L2_PIX_FMT_YUV422P: 40261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang *bpp = 16; 40361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang *planes = 3; 40461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 40561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang default: 40661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang return -1; 40761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 40861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang } 40961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 41061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang return 0; 41161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang} 41261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 41361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Changunsigned int get_yuv_bpp(unsigned int v4l2_pixel_format) 41461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang{ 41561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang unsigned int bpp, planes; 41661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 41761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang if (V4L2_PIX_2_YUV_INFO(v4l2_pixel_format, &bpp, &planes) < 0) 41861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang bpp = -1; 41961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 42061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang return bpp; 42161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang} 42261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 42361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Changunsigned int get_yuv_planes(unsigned int v4l2_pixel_format) 42461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang{ 42561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang unsigned int bpp, planes; 42661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 42761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang if (V4L2_PIX_2_YUV_INFO(v4l2_pixel_format, &bpp, &planes) < 0) 42861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang planes = -1; 42961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 43061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang return planes; 43161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang} 43261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang#endif 433