1/* Copyright (c) 2012 - 2013, 2015 The Linux Foundation. All rights reserved. 2 * 3 * redistribution and use in source and binary forms, with or without 4 * modification, are permitted provided that the following conditions are 5 * met: 6 * * redistributions of source code must retain the above copyright 7 * notice, this list of conditions and the following disclaimer. 8 * * redistributions in binary form must reproduce the above 9 * copyright notice, this list of conditions and the following 10 * disclaimer in the documentation and/or other materials provided 11 * with the distribution. 12 * * neither the name of The Linux Foundation nor the names of its 13 * contributors may be used to endorse or promote products derived 14 * from this software without specific prior written permission. 15 * 16 * this software is provided "as is" and any express or implied 17 * warranties, including, but not limited to, the implied warranties of 18 * merchantability, fitness for a particular purpose and non-infringement 19 * are disclaimed. in no event shall the copyright owner or contributors 20 * be liable for any direct, indirect, incidental, special, exemplary, or 21 * consequential damages (including, but not limited to, procurement of 22 * substitute goods or services; loss of use, data, or profits; or 23 * business interruption) however caused and on any theory of liability, 24 * whether in contract, strict liability, or tort (including negligence 25 * or otherwise) arising in any way out of the use of this software, even 26 * if advised of the possibility of such damage. 27 * 28 */ 29 30#ifndef C2D_ColorConverter_H_ 31#define C2D_ColorConverter_H_ 32 33#include <c2d2.h> 34#include <sys/types.h> 35 36typedef C2D_STATUS (*LINK_c2dCreateSurface)( uint32 *surface_id, 37 uint32 surface_bits, 38 C2D_SURFACE_TYPE surface_type, 39 void *surface_definition ); 40 41typedef C2D_STATUS (*LINK_c2dUpdateSurface)( uint32 surface_id, 42 uint32 surface_bits, 43 C2D_SURFACE_TYPE surface_type, 44 void *surface_definition ); 45 46typedef C2D_STATUS (*LINK_c2dReadSurface)( uint32 surface_id, 47 C2D_SURFACE_TYPE surface_type, 48 void *surface_definition, 49 int32 x, int32 y ); 50 51typedef C2D_STATUS (*LINK_c2dDraw)( uint32 target_id, 52 uint32 target_config, C2D_RECT *target_scissor, 53 uint32 target_mask_id, uint32 target_color_key, 54 C2D_OBJECT *objects_list, uint32 num_objects ); 55 56typedef C2D_STATUS (*LINK_c2dFlush)( uint32 target_id, c2d_ts_handle *timestamp); 57 58typedef C2D_STATUS (*LINK_c2dFinish)( uint32 target_id); 59 60typedef C2D_STATUS (*LINK_c2dWaitTimestamp)( c2d_ts_handle timestamp ); 61 62typedef C2D_STATUS (*LINK_c2dDestroySurface)( uint32 surface_id ); 63 64typedef C2D_STATUS (*LINK_c2dMapAddr)( int mem_fd, void * hostptr, uint32 len, uint32 offset, uint32 flags, void ** gpuaddr); 65 66typedef C2D_STATUS (*LINK_c2dUnMapAddr)(void * gpuaddr); 67 68typedef void (*LINK_AdrenoComputeAlignedWidthAndHeight) (int width, int height, int bpp, int tile_mode, int raster_mode, 69 int padding_threshold, int *aligned_width, int * aligned_height); 70 71namespace android { 72 73/*TODO: THIS NEEDS TO ENABLED FOR JB PLUS*/ 74enum ColorConvertFormat { 75 RGB565 = 1, 76 YCbCr420Tile, 77 YCbCr420SP, 78 YCbCr420P, 79 YCrCb420P, 80 RGBA8888, 81 NV12_2K, 82 NV12_128m, 83 NV12_UBWC, 84}; 85 86typedef struct { 87 int32_t numerator; 88 int32_t denominator; 89} C2DBytesPerPixel; 90 91typedef struct { 92 int32_t width; 93 int32_t height; 94 int32_t stride; 95 int32_t sliceHeight; 96 int32_t lumaAlign; 97 int32_t sizeAlign; 98 int32_t size; 99 C2DBytesPerPixel bpp; 100} C2DBuffReq; 101 102typedef enum { 103 C2D_INPUT = 0, 104 C2D_OUTPUT, 105} C2D_PORT; 106 107class C2DColorConverterBase { 108 109public: 110 virtual ~C2DColorConverterBase(){}; 111 virtual int convertC2D(int srcFd, void *srcBase, void * srcData, int dstFd, void *dstBase, void * dstData) = 0; 112 virtual int32_t getBuffReq(int32_t port, C2DBuffReq *req) = 0; 113 virtual int32_t dumpOutput(char * filename, char mode) = 0; 114}; 115 116typedef C2DColorConverterBase* createC2DColorConverter_t(size_t srcWidth, size_t srcHeight, size_t dstWidth, size_t dstHeight, ColorConvertFormat srcFormat, ColorConvertFormat dstFormat, int32_t flags, size_t srcStride); 117typedef void destroyC2DColorConverter_t(C2DColorConverterBase*); 118 119} 120 121#endif // C2D_ColorConverter_H_ 122