161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan/*--------------------------------------------------------------------------
261a2c6a19dbd06a317a419623020e02056661876Praveen ChavanCopyright (c) 2012, The Linux Foundation. All rights reserved.
361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan
461a2c6a19dbd06a317a419623020e02056661876Praveen ChavanRedistribution and use in source and binary forms, with or without
561a2c6a19dbd06a317a419623020e02056661876Praveen Chavanmodification, are permitted provided that the following conditions are met:
661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    * Redistributions of source code must retain the above copyright
761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan      notice, this list of conditions and the following disclaimer.
861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    * Redistributions in binary form must reproduce the above copyright
961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan      notice, this list of conditions and the following disclaimer in the
1061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan      documentation and/or other materials provided with the distribution.
1161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    * Neither the name of Code Aurora nor
1261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan      the names of its contributors may be used to endorse or promote
1361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan      products derived from this software without specific prior written
1461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan      permission.
1561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan
1661a2c6a19dbd06a317a419623020e02056661876Praveen ChavanTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
1761a2c6a19dbd06a317a419623020e02056661876Praveen ChavanAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1861a2c6a19dbd06a317a419623020e02056661876Praveen ChavanIMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
1961a2c6a19dbd06a317a419623020e02056661876Praveen ChavanNON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
2061a2c6a19dbd06a317a419623020e02056661876Praveen ChavanCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
2161a2c6a19dbd06a317a419623020e02056661876Praveen ChavanEXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
2261a2c6a19dbd06a317a419623020e02056661876Praveen ChavanPROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
2361a2c6a19dbd06a317a419623020e02056661876Praveen ChavanOR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
2461a2c6a19dbd06a317a419623020e02056661876Praveen ChavanWHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
2561a2c6a19dbd06a317a419623020e02056661876Praveen ChavanOTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
2661a2c6a19dbd06a317a419623020e02056661876Praveen ChavanADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan--------------------------------------------------------------------------*/
2861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan#include <dlfcn.h>
2961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan#include "C2DColorConverter.h"
3061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan
3161a2c6a19dbd06a317a419623020e02056661876Praveen Chavanusing namespace android;
3261a2c6a19dbd06a317a419623020e02056661876Praveen Chavanclass omx_c2d_conv {
3361a2c6a19dbd06a317a419623020e02056661876Praveen Chavanpublic:
3461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    omx_c2d_conv();
3561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    ~omx_c2d_conv();
3661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    bool init();
3761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    void destroy();
3861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    bool open(unsigned int height,unsigned int width,
3961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan              ColorConvertFormat src,
4061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan              ColorConvertFormat dest);
41e0403d8b56d9b2def405981159cddacbdd461ed3Praveen Chavan    bool convert(int src_fd, void *src_base, void *src_viraddr,
42e0403d8b56d9b2def405981159cddacbdd461ed3Praveen Chavan                 int dest_fd, void *dest_base, void *dest_viraddr);
4361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    bool get_buffer_size(int port,unsigned int &buf_size);
4461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    int get_src_format();
4561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    void close();
4661a2c6a19dbd06a317a419623020e02056661876Praveen Chavanprivate:
4761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan     C2DColorConverterBase *c2dcc;
4861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    void *mLibHandle;
4961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    ColorConvertFormat src_format;
5061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    createC2DColorConverter_t *mConvertOpen;
5161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    destroyC2DColorConverter_t *mConvertClose;
5261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan};
53