<?xml version="1.0" encoding="UTF-8" ?>
<!-- Copyright (C) 2012 The Android Open Source Project
     Copyright (c) 2014 Intel Corporation

     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.
-->


<VideoPostProcessSettings>
	<Filter name="ProcFilterNoiseReduction">
		<enabled value="false"/>
		<minResolution value="320x240"/>
		<maxResolution value="640x480"/>
	</Filter>

	<Filter name="ProcFilterDeinterlacing">
		<enabled value="false"/>
		<minResolution value="0"/>
		<maxResolution value="FFFFFFFF"/>
	</Filter>

	<Filter name="ProcFilterSharpening">
		<enabled value="true"/>
		<minResolution value="176x144"/>
		<maxResolution value="1920x1080"/>
	</Filter>

	<Filter name="ProcFilterColorBalance">
		<enabled value="false"/>
		<minResolution value="176x144"/>
		<maxResolution value="640x480"/>
	</Filter>

	<Filter name="ProcFilterDeblocking">
		<enabled value="false"/>
		<minResolution value="176x144"/>
		<maxResolution value="320x240"/>
	</Filter>

	<Filter name="ProcFilterFrameRateConversion">
		<enabled value="true"/>
		<minResolution value="176x144"/>
		<maxResolution value="1920x1080"/>
		<FRCRate input="15" rate="2"/>
		<FRCRate input="25" rate="2"/>
		<FRCRate input="30" rate="2"/>
		<FRCRate input="24" rate="2.5"/>
	</Filter>

	<Filter name="ProcFilterSkinToneEnhancement">
		<enabled value="false"/>
		<minResolution value="0"/>
		<maxResolution value="FFFFFFFF"/>
	</Filter>

	<Filter name="ProcFilterTotalColorCorrection">
		<enabled value="false"/>
		<minResolution value="0"/>
		<maxResolution value="FFFFFFFF"/>
	</Filter>

	<Filter name="ProcFilterNonLinearAnamorphicScaling">
		<enabled value="false"/>
		<minResolution value="0"/>
		<maxResolution value="FFFFFFFF"/>
	</Filter>

	<Filter name="ProcFilterImageStabilization">
		<enabled value="false"/>
		<minResolution value="0"/>
		<maxResolution value="FFFFFFFF"/>
	</Filter>

</VideoPostProcessSettings>
