hardware.h revision 54921de415cd91af21801115baa40e78fc4ea4be
1f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project/* 2f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 3f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project * 4f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project * you may not use this file except in compliance with the License. 6f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project * You may obtain a copy of the License at 7f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project * 8f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project * 10f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project * See the License for the specific language governing permissions and 14f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project * limitations under the License. 15f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project */ 16f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project 17f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project#ifndef ANDROID_INCLUDE_HARDWARE_HARDWARE_H 18f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project#define ANDROID_INCLUDE_HARDWARE_HARDWARE_H 19f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project 20f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project#include <stdint.h> 21f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project#include <sys/cdefs.h> 22f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project 23a8a75166a2d3c7639a7432a67075c98796165206Mathias Agopian#include <cutils/native_handle.h> 24a8a75166a2d3c7639a7432a67075c98796165206Mathias Agopian 25f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project__BEGIN_DECLS 26f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project 27f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project/* 28f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project * Value for the hw_module_t.tag field 29f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project */ 30a8a75166a2d3c7639a7432a67075c98796165206Mathias Agopian 31a8a75166a2d3c7639a7432a67075c98796165206Mathias Agopian#define MAKE_TAG_CONSTANT(A,B,C,D) (((A) << 24) | ((B) << 16) | ((C) << 8) | (D)) 32a8a75166a2d3c7639a7432a67075c98796165206Mathias Agopian 33a8a75166a2d3c7639a7432a67075c98796165206Mathias Agopian#define HARDWARE_MODULE_TAG MAKE_TAG_CONSTANT('H', 'W', 'M', 'T') 34a8a75166a2d3c7639a7432a67075c98796165206Mathias Agopian#define HARDWARE_DEVICE_TAG MAKE_TAG_CONSTANT('H', 'W', 'D', 'T') 35f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project 36f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Projectstruct hw_module_t; 37f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Projectstruct hw_module_methods_t; 38f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Projectstruct hw_device_t; 39f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project 40f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project/** 41f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project * Every hardware module must have a data structure named HAL_MODULE_INFO_SYM 42f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project * and the fields of this data structure must begin with hw_module_t 43f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project * followed by module specific information. 44f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project */ 459d82c1a447a72a2c086b9cd34c5b73b163d7acbcMathias Agopiantypedef struct hw_module_t { 46f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project /** tag must be initialized to HARDWARE_MODULE_TAG */ 47f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project uint32_t tag; 48f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project 49f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project /** major version number for the module */ 50f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project uint16_t version_major; 51f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project 52f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project /** minor version number of the module */ 53f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project uint16_t version_minor; 54f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project 55f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project /** Identifier of module */ 56f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project const char *id; 57f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project 58f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project /** Name of this module */ 59f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project const char *name; 60f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project 61f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project /** Author/owner/implementor of the module */ 62f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project const char *author; 63f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project 64f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project /** Modules methods */ 65f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project struct hw_module_methods_t* methods; 66a8a75166a2d3c7639a7432a67075c98796165206Mathias Agopian 67a8a75166a2d3c7639a7432a67075c98796165206Mathias Agopian /** module's dso */ 68a8a75166a2d3c7639a7432a67075c98796165206Mathias Agopian void* dso; 69a8a75166a2d3c7639a7432a67075c98796165206Mathias Agopian 70f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project /** padding to 128 bytes, reserved for future use */ 71a8a75166a2d3c7639a7432a67075c98796165206Mathias Agopian uint32_t reserved[32-7]; 72f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project 739d82c1a447a72a2c086b9cd34c5b73b163d7acbcMathias Agopian} hw_module_t; 749d82c1a447a72a2c086b9cd34c5b73b163d7acbcMathias Agopian 759d82c1a447a72a2c086b9cd34c5b73b163d7acbcMathias Agopiantypedef struct hw_module_methods_t { 76f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project /** Open a specific device */ 77f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project int (*open)(const struct hw_module_t* module, const char* id, 78f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project struct hw_device_t** device); 799d82c1a447a72a2c086b9cd34c5b73b163d7acbcMathias Agopian 809d82c1a447a72a2c086b9cd34c5b73b163d7acbcMathias Agopian} hw_module_methods_t; 81f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project 82f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project/** 83f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project * Every device data structure must begin with hw_device_t 84f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project * followed by module specific public methods and attributes. 85f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project */ 869d82c1a447a72a2c086b9cd34c5b73b163d7acbcMathias Agopiantypedef struct hw_device_t { 87f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project /** tag must be initialized to HARDWARE_DEVICE_TAG */ 88f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project uint32_t tag; 89f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project 90f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project /** version number for hw_device_t */ 91f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project uint32_t version; 92f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project 93f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project /** reference to the module this device belongs to */ 94f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project struct hw_module_t* module; 95f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project 96f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project /** padding reserved for future use */ 97f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project uint32_t reserved[12]; 98f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project 99f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project /** Close this device */ 100f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project int (*close)(struct hw_device_t* device); 1019d82c1a447a72a2c086b9cd34c5b73b163d7acbcMathias Agopian 1029d82c1a447a72a2c086b9cd34c5b73b163d7acbcMathias Agopian} hw_device_t; 103f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project 104f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project/** 105a8a75166a2d3c7639a7432a67075c98796165206Mathias Agopian * Name of the hal_module_info 106f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project */ 107f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project#define HAL_MODULE_INFO_SYM HMI 108f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project 109f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project/** 110f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project * Name of the hal_module_info as a string 111f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project */ 112f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project#define HAL_MODULE_INFO_SYM_AS_STR "HMI" 113f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project 114f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project/** 115f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project * Get the module info associated with a module by id. 11654921de415cd91af21801115baa40e78fc4ea4beDima Zavin * 11754921de415cd91af21801115baa40e78fc4ea4beDima Zavin * @return: 0 == success, <0 == error and *module == NULL 118f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project */ 119f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Projectint hw_get_module(const char *id, const struct hw_module_t **module); 120f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project 12154921de415cd91af21801115baa40e78fc4ea4beDima Zavin/** 12254921de415cd91af21801115baa40e78fc4ea4beDima Zavin * Get the module info associated with a module instance by class 'class_id' 12354921de415cd91af21801115baa40e78fc4ea4beDima Zavin * and instance 'inst'. 12454921de415cd91af21801115baa40e78fc4ea4beDima Zavin * 12554921de415cd91af21801115baa40e78fc4ea4beDima Zavin * Some modules types necessitate multiple instances. For example audio supports 12654921de415cd91af21801115baa40e78fc4ea4beDima Zavin * multiple concurrent interfaces and thus 'audio' is the module class 12754921de415cd91af21801115baa40e78fc4ea4beDima Zavin * and 'primary' or 'a2dp' are module interfaces. This implies that the files 12854921de415cd91af21801115baa40e78fc4ea4beDima Zavin * providing these modules would be named audio.primary.<variant>.so and 12954921de415cd91af21801115baa40e78fc4ea4beDima Zavin * audio.a2dp.<variant>.so 13054921de415cd91af21801115baa40e78fc4ea4beDima Zavin * 13154921de415cd91af21801115baa40e78fc4ea4beDima Zavin * @return: 0 == success, <0 == error and *module == NULL 13254921de415cd91af21801115baa40e78fc4ea4beDima Zavin */ 13354921de415cd91af21801115baa40e78fc4ea4beDima Zavinint hw_get_module_by_class(const char *class_id, const char *inst, 13454921de415cd91af21801115baa40e78fc4ea4beDima Zavin const struct hw_module_t **module); 135f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project 136f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project/** 137f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project * pixel format definitions 138f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project */ 139f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project 140f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Projectenum { 141373a9c6efebc97ade940dc5996f24992cda450c7Mathias Agopian HAL_PIXEL_FORMAT_RGBA_8888 = 1, 142373a9c6efebc97ade940dc5996f24992cda450c7Mathias Agopian HAL_PIXEL_FORMAT_RGBX_8888 = 2, 143373a9c6efebc97ade940dc5996f24992cda450c7Mathias Agopian HAL_PIXEL_FORMAT_RGB_888 = 3, 144373a9c6efebc97ade940dc5996f24992cda450c7Mathias Agopian HAL_PIXEL_FORMAT_RGB_565 = 4, 145373a9c6efebc97ade940dc5996f24992cda450c7Mathias Agopian HAL_PIXEL_FORMAT_BGRA_8888 = 5, 146373a9c6efebc97ade940dc5996f24992cda450c7Mathias Agopian HAL_PIXEL_FORMAT_RGBA_5551 = 6, 147373a9c6efebc97ade940dc5996f24992cda450c7Mathias Agopian HAL_PIXEL_FORMAT_RGBA_4444 = 7, 148f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project 1496915eb345b6640a43b9c1241f7ad8ffa0463874aMathias Agopian /* 0x8 - 0xFF range unavailable */ 1506915eb345b6640a43b9c1241f7ad8ffa0463874aMathias Agopian 1516915eb345b6640a43b9c1241f7ad8ffa0463874aMathias Agopian /* 1526915eb345b6640a43b9c1241f7ad8ffa0463874aMathias Agopian * 0x100 - 0x1FF 1536915eb345b6640a43b9c1241f7ad8ffa0463874aMathias Agopian * 1542ec2193365ab26c6f77a2c5617887ced7a8d6711Jamie Gennis * This range is reserved for pixel formats that are specific to the HAL 1552ec2193365ab26c6f77a2c5617887ced7a8d6711Jamie Gennis * implementation. Implementations can use any value in this range to 1562ec2193365ab26c6f77a2c5617887ced7a8d6711Jamie Gennis * communicate video pixel formats between their HAL modules. These formats 1572ec2193365ab26c6f77a2c5617887ced7a8d6711Jamie Gennis * must not have an alpha channel. Additionally, an EGLimage created from a 1582ec2193365ab26c6f77a2c5617887ced7a8d6711Jamie Gennis * gralloc buffer of one of these formats must be supported for use with the 1592ec2193365ab26c6f77a2c5617887ced7a8d6711Jamie Gennis * GL_OES_EGL_image_external OpenGL ES extension. 1606915eb345b6640a43b9c1241f7ad8ffa0463874aMathias Agopian */ 1616915eb345b6640a43b9c1241f7ad8ffa0463874aMathias Agopian 1626915eb345b6640a43b9c1241f7ad8ffa0463874aMathias Agopian /* 16380107f8e92e25e62c945600325f3e846477bc855Mathias Agopian * Android YUV format: 1646915eb345b6640a43b9c1241f7ad8ffa0463874aMathias Agopian * 16580107f8e92e25e62c945600325f3e846477bc855Mathias Agopian * This format is exposed outside of the HAL to software 1666915eb345b6640a43b9c1241f7ad8ffa0463874aMathias Agopian * decoders and applications. 16780107f8e92e25e62c945600325f3e846477bc855Mathias Agopian * EGLImageKHR must support it in conjunction with the 1686915eb345b6640a43b9c1241f7ad8ffa0463874aMathias Agopian * OES_EGL_image_external extension. 1696915eb345b6640a43b9c1241f7ad8ffa0463874aMathias Agopian * 17080107f8e92e25e62c945600325f3e846477bc855Mathias Agopian * YV12 is 4:2:0 YCrCb planar format comprised of a WxH Y plane followed 1716915eb345b6640a43b9c1241f7ad8ffa0463874aMathias Agopian * by (W/2) x (H/2) Cr and Cb planes. 1726915eb345b6640a43b9c1241f7ad8ffa0463874aMathias Agopian * 173a2df7ab5fe89fda56606f8151659db47e160a5b3Mathias Agopian * This format assumes 174a2df7ab5fe89fda56606f8151659db47e160a5b3Mathias Agopian * - an even width 175a2df7ab5fe89fda56606f8151659db47e160a5b3Mathias Agopian * - an even height 176a2df7ab5fe89fda56606f8151659db47e160a5b3Mathias Agopian * - a horizontal stride multiple of 16 pixels 177a2df7ab5fe89fda56606f8151659db47e160a5b3Mathias Agopian * - a vertical stride equal to the height 178a2df7ab5fe89fda56606f8151659db47e160a5b3Mathias Agopian * 179a2df7ab5fe89fda56606f8151659db47e160a5b3Mathias Agopian * y_size = stride * height 180a2df7ab5fe89fda56606f8151659db47e160a5b3Mathias Agopian * c_size = ALIGN(stride/2, 16) * height/2 18180107f8e92e25e62c945600325f3e846477bc855Mathias Agopian * size = y_size + c_size * 2 18280107f8e92e25e62c945600325f3e846477bc855Mathias Agopian * cr_offset = y_size 18380107f8e92e25e62c945600325f3e846477bc855Mathias Agopian * cb_offset = y_size + c_size 1846915eb345b6640a43b9c1241f7ad8ffa0463874aMathias Agopian * 1856915eb345b6640a43b9c1241f7ad8ffa0463874aMathias Agopian */ 18680107f8e92e25e62c945600325f3e846477bc855Mathias Agopian HAL_PIXEL_FORMAT_YV12 = 0x32315659, // YCrCb 4:2:0 Planar 18780107f8e92e25e62c945600325f3e846477bc855Mathias Agopian 1886915eb345b6640a43b9c1241f7ad8ffa0463874aMathias Agopian 1896915eb345b6640a43b9c1241f7ad8ffa0463874aMathias Agopian 1906915eb345b6640a43b9c1241f7ad8ffa0463874aMathias Agopian /* Legacy formats (deprecated), used by ImageFormat.java */ 1916915eb345b6640a43b9c1241f7ad8ffa0463874aMathias Agopian HAL_PIXEL_FORMAT_YCbCr_422_SP = 0x10, // NV16 1926915eb345b6640a43b9c1241f7ad8ffa0463874aMathias Agopian HAL_PIXEL_FORMAT_YCrCb_420_SP = 0x11, // NV21 1936915eb345b6640a43b9c1241f7ad8ffa0463874aMathias Agopian HAL_PIXEL_FORMAT_YCbCr_422_I = 0x14, // YUY2 194373a9c6efebc97ade940dc5996f24992cda450c7Mathias Agopian}; 195f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project 1966915eb345b6640a43b9c1241f7ad8ffa0463874aMathias Agopian 197f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project/** 198f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project * Transformation definitions 1992d1e978e3229bb524c6415580ad91fab051f944cMathias Agopian * 2002d1e978e3229bb524c6415580ad91fab051f944cMathias Agopian * IMPORTANT NOTE: 2012d1e978e3229bb524c6415580ad91fab051f944cMathias Agopian * HAL_TRANSFORM_ROT_90 is applied CLOCKWISE and AFTER HAL_TRANSFORM_FLIP_{H|V}. 2022d1e978e3229bb524c6415580ad91fab051f944cMathias Agopian * 203f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project */ 204f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project 205f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Projectenum { 2062d1e978e3229bb524c6415580ad91fab051f944cMathias Agopian /* flip source image horizontally (around the vertical axis) */ 207f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project HAL_TRANSFORM_FLIP_H = 0x01, 2082d1e978e3229bb524c6415580ad91fab051f944cMathias Agopian /* flip source image vertically (around the horizontal axis)*/ 209f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project HAL_TRANSFORM_FLIP_V = 0x02, 2102d1e978e3229bb524c6415580ad91fab051f944cMathias Agopian /* rotate source image 90 degrees clockwise */ 211f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project HAL_TRANSFORM_ROT_90 = 0x04, 2129e149fc6e112fe23e408ca972a948a1d9aadc9a8Mathias Agopian /* rotate source image 180 degrees */ 213f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project HAL_TRANSFORM_ROT_180 = 0x03, 2142d1e978e3229bb524c6415580ad91fab051f944cMathias Agopian /* rotate source image 270 degrees clockwise */ 215f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project HAL_TRANSFORM_ROT_270 = 0x07, 216f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project}; 217f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project 218f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project__END_DECLS 219f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project 220f53ebec38718ff5d6b2aff2fa62b92a75d007ca5The Android Open Source Project#endif /* ANDROID_INCLUDE_HARDWARE_HARDWARE_H */ 221