PixelFormat.cpp revision 5773d3f5b2694c647e010246dff99acc70131289
1edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project/*
2edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project
3edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project *
4edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
5edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * you may not use this file except in compliance with the License.
6edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * You may obtain a copy of the License at
7edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project *
8edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
9edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project *
10edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
11edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
12edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * See the License for the specific language governing permissions and
14edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * limitations under the License.
15edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project */
16edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project
17edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#include <ui/PixelFormat.h>
183db21640519541141137166ce55627cf76e1974bMathias Agopian#include <hardware/hardware.h>
19edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project
2042e2458144778596281ea2c4a98ad671053234e0Mathias Agopian// ----------------------------------------------------------------------------
21edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectnamespace android {
2242e2458144778596281ea2c4a98ad671053234e0Mathias Agopian// ----------------------------------------------------------------------------
23edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project
245773d3f5b2694c647e010246dff99acc70131289Mathias Agopianssize_t bytesPerPixel(PixelFormat format) {
255773d3f5b2694c647e010246dff99acc70131289Mathias Agopian    switch (format) {
265773d3f5b2694c647e010246dff99acc70131289Mathias Agopian        case HAL_PIXEL_FORMAT_RGBA_8888:
275773d3f5b2694c647e010246dff99acc70131289Mathias Agopian        case HAL_PIXEL_FORMAT_RGBX_8888:
285773d3f5b2694c647e010246dff99acc70131289Mathias Agopian        case HAL_PIXEL_FORMAT_BGRA_8888:
295773d3f5b2694c647e010246dff99acc70131289Mathias Agopian            return 4;
305773d3f5b2694c647e010246dff99acc70131289Mathias Agopian        case HAL_PIXEL_FORMAT_RGB_888:
315773d3f5b2694c647e010246dff99acc70131289Mathias Agopian            return 3;
325773d3f5b2694c647e010246dff99acc70131289Mathias Agopian        case HAL_PIXEL_FORMAT_RGB_565:
335773d3f5b2694c647e010246dff99acc70131289Mathias Agopian        case HAL_PIXEL_FORMAT_RGBA_5551:
345773d3f5b2694c647e010246dff99acc70131289Mathias Agopian        case HAL_PIXEL_FORMAT_RGBA_4444:
355773d3f5b2694c647e010246dff99acc70131289Mathias Agopian            return 2;
365773d3f5b2694c647e010246dff99acc70131289Mathias Agopian        case HAL_PIXEL_FORMAT_YCbCr_422_SP:
375773d3f5b2694c647e010246dff99acc70131289Mathias Agopian        case HAL_PIXEL_FORMAT_YCbCr_422_I:
385773d3f5b2694c647e010246dff99acc70131289Mathias Agopian        case HAL_PIXEL_FORMAT_YCrCb_420_SP:
395773d3f5b2694c647e010246dff99acc70131289Mathias Agopian        case HAL_PIXEL_FORMAT_YV12:
405773d3f5b2694c647e010246dff99acc70131289Mathias Agopian            return 1;
41edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project    }
425773d3f5b2694c647e010246dff99acc70131289Mathias Agopian    return BAD_VALUE;
43edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project}
44edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project
455773d3f5b2694c647e010246dff99acc70131289Mathias Agopianssize_t bitsPerPixel(PixelFormat format) {
463db21640519541141137166ce55627cf76e1974bMathias Agopian    switch (format) {
475773d3f5b2694c647e010246dff99acc70131289Mathias Agopian        case HAL_PIXEL_FORMAT_RGBA_8888:
485773d3f5b2694c647e010246dff99acc70131289Mathias Agopian        case HAL_PIXEL_FORMAT_RGBX_8888:
495773d3f5b2694c647e010246dff99acc70131289Mathias Agopian        case HAL_PIXEL_FORMAT_BGRA_8888:
505773d3f5b2694c647e010246dff99acc70131289Mathias Agopian            return 32;
515773d3f5b2694c647e010246dff99acc70131289Mathias Agopian        case HAL_PIXEL_FORMAT_RGB_888:
525773d3f5b2694c647e010246dff99acc70131289Mathias Agopian            return 24;
535773d3f5b2694c647e010246dff99acc70131289Mathias Agopian        case HAL_PIXEL_FORMAT_RGB_565:
545773d3f5b2694c647e010246dff99acc70131289Mathias Agopian        case HAL_PIXEL_FORMAT_RGBA_5551:
555773d3f5b2694c647e010246dff99acc70131289Mathias Agopian        case HAL_PIXEL_FORMAT_RGBA_4444:
565773d3f5b2694c647e010246dff99acc70131289Mathias Agopian        case HAL_PIXEL_FORMAT_YCbCr_422_SP:
575773d3f5b2694c647e010246dff99acc70131289Mathias Agopian        case HAL_PIXEL_FORMAT_YCbCr_422_I:
585773d3f5b2694c647e010246dff99acc70131289Mathias Agopian            return 16;
595773d3f5b2694c647e010246dff99acc70131289Mathias Agopian        case HAL_PIXEL_FORMAT_YCrCb_420_SP:
605773d3f5b2694c647e010246dff99acc70131289Mathias Agopian        case HAL_PIXEL_FORMAT_YV12:
615773d3f5b2694c647e010246dff99acc70131289Mathias Agopian            return 12;
623db21640519541141137166ce55627cf76e1974bMathias Agopian    }
635773d3f5b2694c647e010246dff99acc70131289Mathias Agopian    return BAD_VALUE;
64edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project}
65edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project
6642e2458144778596281ea2c4a98ad671053234e0Mathias Agopian// ----------------------------------------------------------------------------
67edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project}; // namespace android
6842e2458144778596281ea2c4a98ad671053234e0Mathias Agopian// ----------------------------------------------------------------------------
69edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project
70