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