You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
157 lines
4.4 KiB
157 lines
4.4 KiB
/* |
|
* 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 */
|
|
|