1f91c8768670386683a281cc39141e21bdda9c97fKun Wang/* 2f91c8768670386683a281cc39141e21bdda9c97fKun Wang * Copyright (c) 2011 Intel Corporation. All Rights Reserved. 3f91c8768670386683a281cc39141e21bdda9c97fKun Wang * 4f91c8768670386683a281cc39141e21bdda9c97fKun Wang * Permission is hereby granted, free of charge, to any person obtaining a 5f91c8768670386683a281cc39141e21bdda9c97fKun Wang * copy of this software and associated documentation files (the 6f91c8768670386683a281cc39141e21bdda9c97fKun Wang * "Software"), to deal in the Software without restriction, including 7f91c8768670386683a281cc39141e21bdda9c97fKun Wang * without limitation the rights to use, copy, modify, merge, publish, 8f91c8768670386683a281cc39141e21bdda9c97fKun Wang * distribute, sub license, and/or sell copies of the Software, and to 9f91c8768670386683a281cc39141e21bdda9c97fKun Wang * permit persons to whom the Software is furnished to do so, subject to 10f91c8768670386683a281cc39141e21bdda9c97fKun Wang * the following conditions: 113f3d1e8746d2b793c982ac19a73061e006b1b178Kun Wang * 12f91c8768670386683a281cc39141e21bdda9c97fKun Wang * The above copyright notice and this permission notice (including the 13f91c8768670386683a281cc39141e21bdda9c97fKun Wang * next paragraph) shall be included in all copies or substantial portions 14f91c8768670386683a281cc39141e21bdda9c97fKun Wang * of the Software. 153f3d1e8746d2b793c982ac19a73061e006b1b178Kun Wang * 16f91c8768670386683a281cc39141e21bdda9c97fKun Wang * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 17f91c8768670386683a281cc39141e21bdda9c97fKun Wang * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18f91c8768670386683a281cc39141e21bdda9c97fKun Wang * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 19f91c8768670386683a281cc39141e21bdda9c97fKun Wang * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR 20f91c8768670386683a281cc39141e21bdda9c97fKun Wang * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 21f91c8768670386683a281cc39141e21bdda9c97fKun Wang * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 22f91c8768670386683a281cc39141e21bdda9c97fKun Wang * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23f91c8768670386683a281cc39141e21bdda9c97fKun Wang * 24f91c8768670386683a281cc39141e21bdda9c97fKun Wang * Authors: 25f91c8768670386683a281cc39141e21bdda9c97fKun Wang * Zeng Li <zeng.li@intel.com> 26f91c8768670386683a281cc39141e21bdda9c97fKun Wang * Jason Hu <jason.hu@intel.com> 27f91c8768670386683a281cc39141e21bdda9c97fKun Wang * Shengquan Yuan <shengquan.yuan@intel.com> 28f91c8768670386683a281cc39141e21bdda9c97fKun Wang */ 29cecb10be5449aa74cd1d9a2eb41c2a6a76d9ee79ywan#include "psb_surface.h" 30f31d5416a60f83e184b0906a7ec77ba021840531hding#ifdef ANDROID 31f31d5416a60f83e184b0906a7ec77ba021840531hdingstatic uint32_t VAROTATION2HAL(int va_rotate) { 32f31d5416a60f83e184b0906a7ec77ba021840531hding switch (va_rotate) { 33f31d5416a60f83e184b0906a7ec77ba021840531hding case VA_ROTATION_90: 34f31d5416a60f83e184b0906a7ec77ba021840531hding return HAL_TRANSFORM_ROT_90; 35f31d5416a60f83e184b0906a7ec77ba021840531hding case VA_ROTATION_180: 36f31d5416a60f83e184b0906a7ec77ba021840531hding return HAL_TRANSFORM_ROT_180; 37f31d5416a60f83e184b0906a7ec77ba021840531hding case VA_ROTATION_270: 38f31d5416a60f83e184b0906a7ec77ba021840531hding return HAL_TRANSFORM_ROT_270; 39f31d5416a60f83e184b0906a7ec77ba021840531hding default: 40f31d5416a60f83e184b0906a7ec77ba021840531hding return 0; 41f31d5416a60f83e184b0906a7ec77ba021840531hding } 42f31d5416a60f83e184b0906a7ec77ba021840531hding} 43438ce6b6895ee98bc732cc15061eca5c41de8a45Dan Liang 44438ce6b6895ee98bc732cc15061eca5c41de8a45Dan Liang 45438ce6b6895ee98bc732cc15061eca5c41de8a45Dan Liangstatic uint32_t HAL2VAROTATION(int hal_rotate) { 46438ce6b6895ee98bc732cc15061eca5c41de8a45Dan Liang switch (hal_rotate) { 47438ce6b6895ee98bc732cc15061eca5c41de8a45Dan Liang case HAL_TRANSFORM_ROT_90: 48438ce6b6895ee98bc732cc15061eca5c41de8a45Dan Liang return VA_ROTATION_90; 49438ce6b6895ee98bc732cc15061eca5c41de8a45Dan Liang case HAL_TRANSFORM_ROT_180: 50438ce6b6895ee98bc732cc15061eca5c41de8a45Dan Liang return VA_ROTATION_180; 51438ce6b6895ee98bc732cc15061eca5c41de8a45Dan Liang case HAL_TRANSFORM_ROT_270: 52438ce6b6895ee98bc732cc15061eca5c41de8a45Dan Liang return VA_ROTATION_270; 53438ce6b6895ee98bc732cc15061eca5c41de8a45Dan Liang default: 54438ce6b6895ee98bc732cc15061eca5c41de8a45Dan Liang return 0; 55438ce6b6895ee98bc732cc15061eca5c41de8a45Dan Liang } 56438ce6b6895ee98bc732cc15061eca5c41de8a45Dan Liang} 57438ce6b6895ee98bc732cc15061eca5c41de8a45Dan Liang 58f31d5416a60f83e184b0906a7ec77ba021840531hding#else 59f31d5416a60f83e184b0906a7ec77ba021840531hding#define VAROTATION2HAL(a) a 60438ce6b6895ee98bc732cc15061eca5c41de8a45Dan Liang#define HAL2VAROTATION(a) a 61f31d5416a60f83e184b0906a7ec77ba021840531hding#define psb_android_is_extvideo_mode(a) 0 62f31d5416a60f83e184b0906a7ec77ba021840531hding#define psb_android_surfaceflinger_rotate(a, b) 63f31d5416a60f83e184b0906a7ec77ba021840531hding#endif 64f31d5416a60f83e184b0906a7ec77ba021840531hding 654d06c1febaa800c6a9efb9908a2c6233472c7464Li Zengvoid psb_InitOutLoop(VADriverContextP ctx); 664d06c1febaa800c6a9efb9908a2c6233472c7464Li Zengvoid psb_RecalcAlternativeOutput(object_context_p obj_context); 67e9f11f100c212e9aeb194337ae43bbfea6a130dbKun Wangvoid psb_CheckInterlaceRotate(object_context_p obj_context, unsigned char *pic_param_tmp); 68f91c8768670386683a281cc39141e21bdda9c97fKun WangVAStatus psb_DestroyRotateSurface( 69f91c8768670386683a281cc39141e21bdda9c97fKun Wang VADriverContextP ctx, 70f91c8768670386683a281cc39141e21bdda9c97fKun Wang object_surface_p obj_surface, 71f91c8768670386683a281cc39141e21bdda9c97fKun Wang int rotate 72f91c8768670386683a281cc39141e21bdda9c97fKun Wang); 734d06c1febaa800c6a9efb9908a2c6233472c7464Li ZengVAStatus psb_CreateOutLoopSurface( 744d06c1febaa800c6a9efb9908a2c6233472c7464Li Zeng object_context_p obj_context, 75f91c8768670386683a281cc39141e21bdda9c97fKun Wang object_surface_p obj_surface, 76f91c8768670386683a281cc39141e21bdda9c97fKun Wang int msvdx_rotate 77f91c8768670386683a281cc39141e21bdda9c97fKun Wang); 78f91c8768670386683a281cc39141e21bdda9c97fKun Wang 79cecb10be5449aa74cd1d9a2eb41c2a6a76d9ee79ywanVAStatus psb_CreateScalingSurface( 80cecb10be5449aa74cd1d9a2eb41c2a6a76d9ee79ywan object_context_p obj_context, 81cecb10be5449aa74cd1d9a2eb41c2a6a76d9ee79ywan object_surface_p obj_surface 82cecb10be5449aa74cd1d9a2eb41c2a6a76d9ee79ywan); 83f91c8768670386683a281cc39141e21bdda9c97fKun Wang 84cecb10be5449aa74cd1d9a2eb41c2a6a76d9ee79ywanVAStatus psb_CreateRotateSurface( 85cecb10be5449aa74cd1d9a2eb41c2a6a76d9ee79ywan object_context_p obj_context, 86cecb10be5449aa74cd1d9a2eb41c2a6a76d9ee79ywan object_surface_p obj_surface, 87cecb10be5449aa74cd1d9a2eb41c2a6a76d9ee79ywan int msvdx_rotate 88cecb10be5449aa74cd1d9a2eb41c2a6a76d9ee79ywan); 89f91c8768670386683a281cc39141e21bdda9c97fKun Wang 90cecb10be5449aa74cd1d9a2eb41c2a6a76d9ee79ywanint psb__dump_NV12_buffers( 91cecb10be5449aa74cd1d9a2eb41c2a6a76d9ee79ywan psb_surface_p psb_surface, 92cecb10be5449aa74cd1d9a2eb41c2a6a76d9ee79ywan short srcx, 93cecb10be5449aa74cd1d9a2eb41c2a6a76d9ee79ywan short srcy, 94cecb10be5449aa74cd1d9a2eb41c2a6a76d9ee79ywan unsigned short srcw, 95cecb10be5449aa74cd1d9a2eb41c2a6a76d9ee79ywan unsigned short srch 96cecb10be5449aa74cd1d9a2eb41c2a6a76d9ee79ywan); 97f91c8768670386683a281cc39141e21bdda9c97fKun Wang 98