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