| /* |
| * Copyright (C) 2014 Intel Corporation. All rights reserved. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| */ |
| |
| #ifndef __ISV_PROFILE_H |
| #define __ISV_PROFILE_H |
| |
| #define MAX_BUF_SIZE (4 * 1024) |
| #define MAX_TAB_SIZE (10) |
| #define MAX_STRING_LEN (50) |
| |
| #include <utils/RefBase.h> |
| using namespace android; |
| |
| typedef enum _FRC_RATE { |
| FRC_RATE_1X = 1, |
| FRC_RATE_2X, |
| FRC_RATE_2_5X, |
| FRC_RATE_4X |
| } FRC_RATE; |
| |
| typedef enum { |
| VPP_COMMON_ON = 1, // VPP is on |
| VPP_FRC_ON = 1 << 1, // FRC is on |
| } VPP_SETTING_STATUS; |
| |
| typedef struct _ISVParameter { |
| char name[MAX_STRING_LEN]; |
| float value; |
| } ISVParameter; |
| |
| typedef struct _ISVConfig { |
| bool enabled; |
| uint32_t minResolution; |
| uint32_t maxResolution; |
| //bool isOn; |
| ISVParameter paraTables[MAX_TAB_SIZE]; |
| uint32_t paraSize; |
| } ISVConfig; |
| |
| typedef struct _ISVFRCRate { |
| uint32_t input_fps; |
| FRC_RATE rate; |
| } ISVFRCRate; |
| |
| //FIXME: need align to ProcFilterType |
| typedef enum _FilterType { |
| FilterNone = 0x00000001, |
| FilterNoiseReduction = 0x00000002, |
| FilterDeinterlacing = 0x00000004, |
| FilterSharpening = 0x00000008, |
| FilterColorBalance = 0x00000010, |
| FilterDeblocking = 0x00000020, |
| FilterFrameRateConversion = 0x00000040, |
| FilterSkinToneEnhancement = 0x00000080, |
| FilterTotalColorCorrection = 0x00000100, |
| FilterNonLinearAnamorphicScaling = 0x00000200, |
| FilterImageStabilization = 0x00000400, |
| } FilterType; |
| |
| class ISVProfile : public RefBase |
| { |
| public: |
| ISVProfile(const uint32_t width, const uint32_t height); |
| ~ISVProfile(); |
| |
| /* get the global ISV setting status */ |
| FRC_RATE getFRCRate(uint32_t inputFps); |
| |
| /* get filter config data |
| * the filters' status are saved in uint32_t |
| */ |
| uint32_t getFilterStatus(); |
| |
| /* the global setting for VPP */ |
| static bool isVPPOn(); |
| |
| /* the global setting for FRC */ |
| static bool isFRCOn(); |
| |
| private: |
| /* Read the global setting for ISV */ |
| static int32_t getGlobalStatus(); |
| |
| /* Get the config data from XML file */ |
| void getDataFromXmlFile(void); |
| |
| /* Update the filter status */ |
| void updateFilterStatus(); |
| |
| /* handle the XML file */ |
| static void startElement(void *userData, const char *name, const char **atts); |
| static void endElement(void *userData, const char *name); |
| int getFilterID(const char * name); |
| uint32_t getResolution(const char * name); |
| void getConfigData(const char *name, const char **atts); |
| void handleFilterParameter(const char *name, const char **atts); |
| void handleCommonParameter(const char *name, const char **atts); |
| |
| /* dump the config data */ |
| void dumpConfigData(); |
| |
| typedef enum _ProcFilterType { |
| ProcFilterNone = 0, |
| ProcFilterNoiseReduction, |
| ProcFilterDeinterlacing, |
| ProcFilterSharpening, |
| ProcFilterColorBalance, |
| ProcFilterDeblocking, |
| ProcFilterFrameRateConversion, |
| ProcFilterSkinToneEnhancement, |
| ProcFilterTotalColorCorrection, |
| ProcFilterNonLinearAnamorphicScaling, |
| ProcFilterImageStabilization, |
| ProcFilterCount |
| } ProcFilterType; |
| |
| private: |
| uint32_t mWidth; |
| uint32_t mHeight; |
| |
| /* The default value of VPP/FRC. |
| * They will be read from config xml file. |
| */ |
| int32_t mDefaultVPPStatus; |
| int32_t mDefaultFRCStatus; |
| |
| /* the filters' status according to resolution |
| * bit 0 used for ProcFilterNone |
| * bit 1 used for ProcFilterNoiseReduction |
| * ... |
| * bit 10 used for ProcFilterImageStabilization |
| */ |
| uint32_t mStatus; |
| |
| ISVConfig mConfigs[ProcFilterCount]; |
| uint32_t mCurrentFilter; //used by parasing xml file |
| ISVFRCRate mFrcRates[MAX_TAB_SIZE]; |
| uint32_t mCurrentFrcTab; |
| |
| static const int mBufSize = MAX_BUF_SIZE; |
| }; |
| |
| #endif /* __ISV_PROFILE_H */ |