#ifndef _LMIVIDEOCOMMONCONFIGAUTO_H_
#define _LMIVIDEOCOMMONCONFIGAUTO_H_

/*
 * DO NOT EDIT! This is an autogenerated file. All changes will be
 * overwritten!
 * Source file: LmiVideoCommonConfigAuto.xsd
 */
/**
{file:
	{name: LmiVideoCommonConfigAuto.h}
	{description: Syntax validation and parser for LmiVideoCommonConfigAuto.xsd schema.}
	{copyright:
		(c) 2006-2016 Vidyo, Inc.,
			433 Hackensack Avenue,
			Hackensack, NJ  07601.

			All rights reserved.

			The information contained herein is proprietary to Vidyo, Inc.
			and shall not be reproduced, copied (in whole or in part), adapted,
			modified, disseminated, transmitted, transcribed, stored in a retrieval
			system, or translated into any language in any form by any means
			without the express written consent of Vidyo, Inc.
							***** CONFIDENTIAL *****
	}
}
*/


#include <Lmi/Xml/LmiXsdParser.h>
#include <Lmi/Xml/LmiXmlNamespace.h>
LMI_BEGIN_EXTERN_C
typedef enum {
	LMI_TEMPORALFILTERSTATUS_Success,
	LMI_TEMPORALFILTERSTATUS_InvalidTemporalFilter,
	LMI_TEMPORALFILTERSTATUS_InvalidValue
} LmiTemporalFilterStatus;
LmiTemporalFilterStatus* LmiTemporalFilterStatusConstructDefault(LmiTemporalFilterStatus* p, LmiAllocator* a);

LmiTemporalFilterStatus* LmiTemporalFilterStatusConstructCopy(LmiTemporalFilterStatus *p, const LmiTemporalFilterStatus* o);

void LmiTemporalFilterStatusDestruct(void *p);

void LmiTemporalFilterStatusConvXml2C(void *to, const LmiString *xml);

const char* LmiTemporalFilterStatusToCStr(const LmiTemporalFilterStatus x);

LmiTemporalFilterStatus* LmiTemporalFilterStatusAssign(LmiTemporalFilterStatus *p, const LmiTemporalFilterStatus* o);

typedef enum {
	LMI_SPATIALFILTER_None,
	LMI_SPATIALFILTER_Adaptive,
	LMI_SPATIALFILTER_Level1,
	LMI_SPATIALFILTER_Level2
} LmiSpatialFilter;
LmiSpatialFilter* LmiSpatialFilterConstructDefault(LmiSpatialFilter* p, LmiAllocator* a);

LmiSpatialFilter* LmiSpatialFilterConstructCopy(LmiSpatialFilter *p, const LmiSpatialFilter* o);

void LmiSpatialFilterDestruct(void *p);

void LmiSpatialFilterConvXml2C(void *to, const LmiString *xml);

const char* LmiSpatialFilterToCStr(const LmiSpatialFilter x);

LmiSpatialFilter* LmiSpatialFilterAssign(LmiSpatialFilter *p, const LmiSpatialFilter* o);

typedef enum {
	LMI_DISTORTIONTYPE_SAD,
	LMI_DISTORTIONTYPE_HAD,
	LMI_DISTORTIONTYPE_SSD,
	LMI_DISTORTIONTYPE_FastSAD
} LmiDistortionType;
LmiDistortionType* LmiDistortionTypeConstructDefault(LmiDistortionType* p, LmiAllocator* a);

LmiDistortionType* LmiDistortionTypeConstructCopy(LmiDistortionType *p, const LmiDistortionType* o);

void LmiDistortionTypeDestruct(void *p);

void LmiDistortionTypeConvXml2C(void *to, const LmiString *xml);

const char* LmiDistortionTypeToCStr(const LmiDistortionType x);

LmiDistortionType* LmiDistortionTypeAssign(LmiDistortionType *p, const LmiDistortionType* o);


typedef struct LmiDynamicRangeS0_ LmiDynamicRangeS0;
typedef struct LmiDynamicRangeS0Impl_ LmiDynamicRangeS0Impl;
Declare_LmiSharedPtr(LmiDynamicRangeS0Impl)
Declare_LmiSharedPtrMakeUnique(LmiDynamicRangeS0Impl)

 struct LmiDynamicRangeS0_ {
	LmiSharedPtr(LmiDynamicRangeS0Impl) impl;
};


void LmiDynamicRangeS0Destruct(LmiDynamicRangeS0* self);
LmiDynamicRangeS0* LmiDynamicRangeS0ConstructDefault(LmiDynamicRangeS0* self, LmiAllocator* a);
LmiDynamicRangeS0* LmiDynamicRangeS0ConstructCopy(LmiDynamicRangeS0* self, const LmiDynamicRangeS0* other);
LmiDynamicRangeS0* LmiDynamicRangeS0Assign(LmiDynamicRangeS0* self, const LmiDynamicRangeS0* other);
LmiBool LmiDynamicRangeS0Equal(const LmiDynamicRangeS0* self, const LmiDynamicRangeS0* other);
Declare_LmiVector(LmiDynamicRangeS0)

Declare_LmiVectorConstructDeepCopy(LmiDynamicRangeS0)

LmiBool LmiDynamicRangeS0VectorEncode_(const LmiVector(LmiDynamicRangeS0)* self, const char *name, const char* nsTag, const char* nsUri, const char* globalNsUri, LmiBool isShortForm, LmiString* outStr);

typedef struct LmiDynamicRange_ LmiDynamicRange;
typedef struct LmiDynamicRangeImpl_ LmiDynamicRangeImpl;
Declare_LmiSharedPtr(LmiDynamicRangeImpl)
Declare_LmiSharedPtrMakeUnique(LmiDynamicRangeImpl)

 struct LmiDynamicRange_ {
	LmiSharedPtr(LmiDynamicRangeImpl) impl;
};


void LmiDynamicRangeDestruct(LmiDynamicRange* self);
LmiDynamicRange* LmiDynamicRangeConstructDefault(LmiDynamicRange* self, LmiAllocator* a);
LmiDynamicRange* LmiDynamicRangeConstructCopy(LmiDynamicRange* self, const LmiDynamicRange* other);
LmiDynamicRange* LmiDynamicRangeAssign(LmiDynamicRange* self, const LmiDynamicRange* other);
LmiBool LmiDynamicRangeEqual(const LmiDynamicRange* self, const LmiDynamicRange* other);
Declare_LmiVector(LmiDynamicRange)

Declare_LmiVectorConstructDeepCopy(LmiDynamicRange)

LmiBool LmiDynamicRangeVectorEncode_(const LmiVector(LmiDynamicRange)* self, const char *name, const char* nsTag, const char* nsUri, const char* globalNsUri, LmiBool isShortForm, LmiString* outStr);

typedef struct LmiTemporalFilterS0_ LmiTemporalFilterS0;
typedef struct LmiTemporalFilterS0Impl_ LmiTemporalFilterS0Impl;
Declare_LmiSharedPtr(LmiTemporalFilterS0Impl)
Declare_LmiSharedPtrMakeUnique(LmiTemporalFilterS0Impl)

 struct LmiTemporalFilterS0_ {
	LmiSharedPtr(LmiTemporalFilterS0Impl) impl;
};


void LmiTemporalFilterS0Destruct(LmiTemporalFilterS0* self);
LmiTemporalFilterS0* LmiTemporalFilterS0ConstructDefault(LmiTemporalFilterS0* self, LmiAllocator* a);
LmiTemporalFilterS0* LmiTemporalFilterS0ConstructCopy(LmiTemporalFilterS0* self, const LmiTemporalFilterS0* other);
LmiTemporalFilterS0* LmiTemporalFilterS0Assign(LmiTemporalFilterS0* self, const LmiTemporalFilterS0* other);
LmiBool LmiTemporalFilterS0Equal(const LmiTemporalFilterS0* self, const LmiTemporalFilterS0* other);
Declare_LmiVector(LmiTemporalFilterS0)

Declare_LmiVectorConstructDeepCopy(LmiTemporalFilterS0)

LmiBool LmiTemporalFilterS0VectorEncode_(const LmiVector(LmiTemporalFilterS0)* self, const char *name, const char* nsTag, const char* nsUri, const char* globalNsUri, LmiBool isShortForm, LmiString* outStr);

typedef struct LmiTemporalFilter_ LmiTemporalFilter;
typedef struct LmiTemporalFilterImpl_ LmiTemporalFilterImpl;
Declare_LmiSharedPtr(LmiTemporalFilterImpl)
Declare_LmiSharedPtrMakeUnique(LmiTemporalFilterImpl)

 struct LmiTemporalFilter_ {
	LmiSharedPtr(LmiTemporalFilterImpl) impl;
};


void LmiTemporalFilterDestruct(LmiTemporalFilter* self);
LmiTemporalFilter* LmiTemporalFilterConstructDefault(LmiTemporalFilter* self, LmiAllocator* a);
LmiTemporalFilter* LmiTemporalFilterConstructCopy(LmiTemporalFilter* self, const LmiTemporalFilter* other);
LmiTemporalFilter* LmiTemporalFilterAssign(LmiTemporalFilter* self, const LmiTemporalFilter* other);
LmiBool LmiTemporalFilterEqual(const LmiTemporalFilter* self, const LmiTemporalFilter* other);
Declare_LmiVector(LmiTemporalFilter)

Declare_LmiVectorConstructDeepCopy(LmiTemporalFilter)

LmiBool LmiTemporalFilterVectorEncode_(const LmiVector(LmiTemporalFilter)* self, const char *name, const char* nsTag, const char* nsUri, const char* globalNsUri, LmiBool isShortForm, LmiString* outStr);
/* Implementation definitions etc. */
const LmiString* LmiXsdParserPrintToString_LmiTemporalFilterStatus(const LmiTemporalFilterStatus* x, LmiString* out);

LmiBool LmiTemporalFilterStatusValidateXml(const LmiFacet_ *f,  void* xml);

LmiBool LmiTemporalFilterStatusValidateBinary(LmiTemporalFilterStatus* p);

LmiTemporalFilterStatus* LmiTemporalFilterStatusAssignNoAttrs_(LmiTemporalFilterStatus *p, const LmiTemporalFilterStatus* o);

LmiTemporalFilterStatus* LmiTemporalFilterStatusConstructDeepCopy(LmiTemporalFilterStatus *p, const LmiTemporalFilterStatus* o);

#define LMI_ENCODE_FMT_STR_LmiTemporalFilterStatus "\"%s\""
LmiBool LmiTemporalFilterStatusEncode_(const LmiTemporalFilterStatus* self, const char *name, const char* nsTag, const char* nsUri, const char* globalNsUri, LmiBool isShortForm, LmiString *outStr);

extern const LmiXsdBaseType LmiXsdBaseType_LmiTemporalFilterStatus;

const LmiString* LmiXsdParserPrintToString_LmiSpatialFilter(const LmiSpatialFilter* x, LmiString* out);

LmiBool LmiSpatialFilterValidateXml(const LmiFacet_ *f,  void* xml);

LmiBool LmiSpatialFilterValidateBinary(LmiSpatialFilter* p);

LmiSpatialFilter* LmiSpatialFilterAssignNoAttrs_(LmiSpatialFilter *p, const LmiSpatialFilter* o);

LmiSpatialFilter* LmiSpatialFilterConstructDeepCopy(LmiSpatialFilter *p, const LmiSpatialFilter* o);

#define LMI_ENCODE_FMT_STR_LmiSpatialFilter "\"%s\""
LmiBool LmiSpatialFilterEncode_(const LmiSpatialFilter* self, const char *name, const char* nsTag, const char* nsUri, const char* globalNsUri, LmiBool isShortForm, LmiString *outStr);

extern const LmiXsdBaseType LmiXsdBaseType_LmiSpatialFilter;

const LmiString* LmiXsdParserPrintToString_LmiDistortionType(const LmiDistortionType* x, LmiString* out);

LmiBool LmiDistortionTypeValidateXml(const LmiFacet_ *f,  void* xml);

LmiBool LmiDistortionTypeValidateBinary(LmiDistortionType* p);

LmiDistortionType* LmiDistortionTypeAssignNoAttrs_(LmiDistortionType *p, const LmiDistortionType* o);

LmiDistortionType* LmiDistortionTypeConstructDeepCopy(LmiDistortionType *p, const LmiDistortionType* o);

#define LMI_ENCODE_FMT_STR_LmiDistortionType "\"%s\""
LmiBool LmiDistortionTypeEncode_(const LmiDistortionType* self, const char *name, const char* nsTag, const char* nsUri, const char* globalNsUri, LmiBool isShortForm, LmiString *outStr);

extern const LmiXsdBaseType LmiXsdBaseType_LmiDistortionType;

/* Definitions for LmiDynamicRangeS0 */
struct LmiDynamicRangeS0Impl_ {
	LmiUint offsetY_;
	LmiUint base128SlopeY_;
	LmiUint minY_;
	LmiUint maxY_;
	LmiAllocator* a;
};


LmiDynamicRangeS0Impl* LmiDynamicRangeS0ImplConstructCopy(LmiDynamicRangeS0Impl* impl, const LmiDynamicRangeS0Impl* otherImpl);
LmiDynamicRangeS0* LmiDynamicRangeS0Construct(LmiDynamicRangeS0* self, LmiUint offsetYArg, LmiUint base128SlopeYArg, LmiUint minYArg, LmiUint maxYArg, LmiAllocator* a);
LMI_INLINE_DECLARATION const LmiUint* LmiDynamicRangeS0GetOffsetYConst(const LmiDynamicRangeS0* self);
LMI_INLINE_DECLARATION LmiUint* LmiDynamicRangeS0GetOffsetY(LmiDynamicRangeS0* self);
LMI_INLINE_DECLARATION const LmiUint* LmiDynamicRangeS0GetBase128SlopeYConst(const LmiDynamicRangeS0* self);
LMI_INLINE_DECLARATION LmiUint* LmiDynamicRangeS0GetBase128SlopeY(LmiDynamicRangeS0* self);
LMI_INLINE_DECLARATION const LmiUint* LmiDynamicRangeS0GetMinYConst(const LmiDynamicRangeS0* self);
LMI_INLINE_DECLARATION LmiUint* LmiDynamicRangeS0GetMinY(LmiDynamicRangeS0* self);
LMI_INLINE_DECLARATION const LmiUint* LmiDynamicRangeS0GetMaxYConst(const LmiDynamicRangeS0* self);
LMI_INLINE_DECLARATION LmiUint* LmiDynamicRangeS0GetMaxY(LmiDynamicRangeS0* self);
LmiUint* LmiDynamicRangeS0SetOffsetY(LmiDynamicRangeS0* self, LmiUint child);
LmiUint* LmiDynamicRangeS0SetBase128SlopeY(LmiDynamicRangeS0* self, LmiUint child);
LmiUint* LmiDynamicRangeS0SetMinY(LmiDynamicRangeS0* self, LmiUint child);
LmiUint* LmiDynamicRangeS0SetMaxY(LmiDynamicRangeS0* self, LmiUint child);
LmiBool LmiDynamicRangeS0Encode_(const LmiDynamicRangeS0* self, const char* name, const char* nsTag, const char* nsUri, const char* globalNsUri, LmiBool isShortForm, LmiString* outStr);
LmiBool LmiDynamicRangeS0Encode(const LmiDynamicRangeS0* self, const char* name, const char* nsTag, const char* nsUri, LmiBool isShortForm, LmiString* outStr);
LmiDynamicRangeS0* LmiDynamicRangeS0ConstructDeepCopy(LmiDynamicRangeS0* self, const LmiDynamicRangeS0* other);
LmiAllocator* LmiDynamicRangeS0GetAllocator(LmiDynamicRangeS0* self);
/* Definitions for LmiDynamicRange */
struct LmiDynamicRangeImpl_ {
	LmiDynamicRangeS0 s0_;
	LmiAllocator* a;
};


LmiDynamicRangeImpl* LmiDynamicRangeImplConstructCopy(LmiDynamicRangeImpl* impl, const LmiDynamicRangeImpl* otherImpl);
LmiDynamicRange* LmiDynamicRangeConstruct(LmiDynamicRange* self, LmiUint offsetYArg, LmiUint base128SlopeYArg, LmiUint minYArg, LmiUint maxYArg, LmiAllocator* a);
LMI_INLINE_DECLARATION const LmiDynamicRangeS0* LmiDynamicRangeGetS0Const(const LmiDynamicRange* self);
LMI_INLINE_DECLARATION LmiDynamicRangeS0* LmiDynamicRangeGetS0(LmiDynamicRange* self);
LmiDynamicRangeS0* LmiDynamicRangeSetS0(LmiDynamicRange* self, const LmiDynamicRangeS0* child);
LMI_INLINE_DECLARATION const LmiUint* LmiDynamicRangeGetOffsetYConst(const LmiDynamicRange* self); /* deep */
LMI_INLINE_DECLARATION LmiUint* LmiDynamicRangeGetOffsetY(LmiDynamicRange* self);
LmiUint* LmiDynamicRangeSetOffsetY(LmiDynamicRange* self, LmiUint indChild);
LMI_INLINE_DECLARATION const LmiUint* LmiDynamicRangeGetBase128SlopeYConst(const LmiDynamicRange* self); /* deep */
LMI_INLINE_DECLARATION LmiUint* LmiDynamicRangeGetBase128SlopeY(LmiDynamicRange* self);
LmiUint* LmiDynamicRangeSetBase128SlopeY(LmiDynamicRange* self, LmiUint indChild);
LMI_INLINE_DECLARATION const LmiUint* LmiDynamicRangeGetMinYConst(const LmiDynamicRange* self); /* deep */
LMI_INLINE_DECLARATION LmiUint* LmiDynamicRangeGetMinY(LmiDynamicRange* self);
LmiUint* LmiDynamicRangeSetMinY(LmiDynamicRange* self, LmiUint indChild);
LMI_INLINE_DECLARATION const LmiUint* LmiDynamicRangeGetMaxYConst(const LmiDynamicRange* self); /* deep */
LMI_INLINE_DECLARATION LmiUint* LmiDynamicRangeGetMaxY(LmiDynamicRange* self);
LmiUint* LmiDynamicRangeSetMaxY(LmiDynamicRange* self, LmiUint indChild);
LmiBool LmiDynamicRangeEncode_(const LmiDynamicRange* self, const char* name, const char* nsTag, const char* nsUri, const char* globalNsUri, LmiBool isShortForm, LmiString* outStr);
LmiBool LmiDynamicRangeEncode(const LmiDynamicRange* self, const char* name, const char* nsTag, const char* nsUri, LmiBool isShortForm, LmiString* outStr);
LmiDynamicRange* LmiDynamicRangeConstructDeepCopy(LmiDynamicRange* self, const LmiDynamicRange* other);
LmiAllocator* LmiDynamicRangeGetAllocator(LmiDynamicRange* self);
/* Definitions for LmiTemporalFilterS0 */
struct LmiTemporalFilterS0Impl_ {
	LmiBool on_;
	LmiUint16 maxNonBackgroundPixelsAllowedForBackgroundY_;
	LmiUint16 maxNonBackgroundPixelsAllowedForBackgroundCb_;
	LmiUint16 maxNonBackgroundPixelsAllowedForBackgroundCr_;
	LmiUint16 lumaBlockThreshold_;
	LmiUint16 chromaBlockThreshold_;
	LmiUint16 lumaThresholdBackground_;
	LmiUint16 chromaThresholdBackground_;
	LmiUint16 lumaThresholdNonBackground_;
	LmiUint16 chromaThresholdNonBackground_;
	LmiUint16 backgroundDetectionThresholdBackground_;
	LmiUint16 backgroundDetectionThresholdNonBackground_;
	LmiUint16 sadAllowedForBackgroundY_;
	LmiUint16 strongBackgroundTemporalFilterThreshold_;
	LmiUint16 sumIntraFrameDiffThreshold_;
	LmiUint16 backgroundDetectionLumaBlockThreshold_;
	LmiVector(LmiString) unparsed_;
	LmiAllocator* a;
	
	struct {
		LmiUint unparsed_ : 1;
	} mask;
};


LmiTemporalFilterS0Impl* LmiTemporalFilterS0ImplConstructCopy(LmiTemporalFilterS0Impl* impl, const LmiTemporalFilterS0Impl* otherImpl);
LmiTemporalFilterS0* LmiTemporalFilterS0Construct(LmiTemporalFilterS0* self, LmiBool onArg, LmiUint16 maxNonBackgroundPixelsAllowedForBackgroundYArg, LmiUint16 maxNonBackgroundPixelsAllowedForBackgroundCbArg, LmiUint16 maxNonBackgroundPixelsAllowedForBackgroundCrArg, LmiUint16 lumaBlockThresholdArg, LmiUint16 chromaBlockThresholdArg, LmiUint16 lumaThresholdBackgroundArg, LmiUint16 chromaThresholdBackgroundArg, LmiUint16 lumaThresholdNonBackgroundArg, LmiUint16 chromaThresholdNonBackgroundArg, LmiUint16 backgroundDetectionThresholdBackgroundArg, LmiUint16 backgroundDetectionThresholdNonBackgroundArg, LmiUint16 sadAllowedForBackgroundYArg, LmiUint16 strongBackgroundTemporalFilterThresholdArg, LmiUint16 sumIntraFrameDiffThresholdArg, LmiUint16 backgroundDetectionLumaBlockThresholdArg, LmiAllocator* a);
LMI_INLINE_DECLARATION const LmiBool* LmiTemporalFilterS0GetOnConst(const LmiTemporalFilterS0* self);
LMI_INLINE_DECLARATION LmiBool* LmiTemporalFilterS0GetOn(LmiTemporalFilterS0* self);
LMI_INLINE_DECLARATION const LmiUint16* LmiTemporalFilterS0GetMaxNonBackgroundPixelsAllowedForBackgroundYConst(const LmiTemporalFilterS0* self);
LMI_INLINE_DECLARATION LmiUint16* LmiTemporalFilterS0GetMaxNonBackgroundPixelsAllowedForBackgroundY(LmiTemporalFilterS0* self);
LMI_INLINE_DECLARATION const LmiUint16* LmiTemporalFilterS0GetMaxNonBackgroundPixelsAllowedForBackgroundCbConst(const LmiTemporalFilterS0* self);
LMI_INLINE_DECLARATION LmiUint16* LmiTemporalFilterS0GetMaxNonBackgroundPixelsAllowedForBackgroundCb(LmiTemporalFilterS0* self);
LMI_INLINE_DECLARATION const LmiUint16* LmiTemporalFilterS0GetMaxNonBackgroundPixelsAllowedForBackgroundCrConst(const LmiTemporalFilterS0* self);
LMI_INLINE_DECLARATION LmiUint16* LmiTemporalFilterS0GetMaxNonBackgroundPixelsAllowedForBackgroundCr(LmiTemporalFilterS0* self);
LMI_INLINE_DECLARATION const LmiUint16* LmiTemporalFilterS0GetLumaBlockThresholdConst(const LmiTemporalFilterS0* self);
LMI_INLINE_DECLARATION LmiUint16* LmiTemporalFilterS0GetLumaBlockThreshold(LmiTemporalFilterS0* self);
LMI_INLINE_DECLARATION const LmiUint16* LmiTemporalFilterS0GetChromaBlockThresholdConst(const LmiTemporalFilterS0* self);
LMI_INLINE_DECLARATION LmiUint16* LmiTemporalFilterS0GetChromaBlockThreshold(LmiTemporalFilterS0* self);
LMI_INLINE_DECLARATION const LmiUint16* LmiTemporalFilterS0GetLumaThresholdBackgroundConst(const LmiTemporalFilterS0* self);
LMI_INLINE_DECLARATION LmiUint16* LmiTemporalFilterS0GetLumaThresholdBackground(LmiTemporalFilterS0* self);
LMI_INLINE_DECLARATION const LmiUint16* LmiTemporalFilterS0GetChromaThresholdBackgroundConst(const LmiTemporalFilterS0* self);
LMI_INLINE_DECLARATION LmiUint16* LmiTemporalFilterS0GetChromaThresholdBackground(LmiTemporalFilterS0* self);
LMI_INLINE_DECLARATION const LmiUint16* LmiTemporalFilterS0GetLumaThresholdNonBackgroundConst(const LmiTemporalFilterS0* self);
LMI_INLINE_DECLARATION LmiUint16* LmiTemporalFilterS0GetLumaThresholdNonBackground(LmiTemporalFilterS0* self);
LMI_INLINE_DECLARATION const LmiUint16* LmiTemporalFilterS0GetChromaThresholdNonBackgroundConst(const LmiTemporalFilterS0* self);
LMI_INLINE_DECLARATION LmiUint16* LmiTemporalFilterS0GetChromaThresholdNonBackground(LmiTemporalFilterS0* self);
LMI_INLINE_DECLARATION const LmiUint16* LmiTemporalFilterS0GetBackgroundDetectionThresholdBackgroundConst(const LmiTemporalFilterS0* self);
LMI_INLINE_DECLARATION LmiUint16* LmiTemporalFilterS0GetBackgroundDetectionThresholdBackground(LmiTemporalFilterS0* self);
LMI_INLINE_DECLARATION const LmiUint16* LmiTemporalFilterS0GetBackgroundDetectionThresholdNonBackgroundConst(const LmiTemporalFilterS0* self);
LMI_INLINE_DECLARATION LmiUint16* LmiTemporalFilterS0GetBackgroundDetectionThresholdNonBackground(LmiTemporalFilterS0* self);
LMI_INLINE_DECLARATION const LmiUint16* LmiTemporalFilterS0GetSadAllowedForBackgroundYConst(const LmiTemporalFilterS0* self);
LMI_INLINE_DECLARATION LmiUint16* LmiTemporalFilterS0GetSadAllowedForBackgroundY(LmiTemporalFilterS0* self);
LMI_INLINE_DECLARATION const LmiUint16* LmiTemporalFilterS0GetStrongBackgroundTemporalFilterThresholdConst(const LmiTemporalFilterS0* self);
LMI_INLINE_DECLARATION LmiUint16* LmiTemporalFilterS0GetStrongBackgroundTemporalFilterThreshold(LmiTemporalFilterS0* self);
LMI_INLINE_DECLARATION const LmiUint16* LmiTemporalFilterS0GetSumIntraFrameDiffThresholdConst(const LmiTemporalFilterS0* self);
LMI_INLINE_DECLARATION LmiUint16* LmiTemporalFilterS0GetSumIntraFrameDiffThreshold(LmiTemporalFilterS0* self);
LMI_INLINE_DECLARATION const LmiUint16* LmiTemporalFilterS0GetBackgroundDetectionLumaBlockThresholdConst(const LmiTemporalFilterS0* self);
LMI_INLINE_DECLARATION LmiUint16* LmiTemporalFilterS0GetBackgroundDetectionLumaBlockThreshold(LmiTemporalFilterS0* self);
LMI_INLINE_DECLARATION const LmiVector(LmiString)* LmiTemporalFilterS0GetUnparsedConst(const LmiTemporalFilterS0* self);
LMI_INLINE_DECLARATION LmiVector(LmiString)* LmiTemporalFilterS0GetUnparsed(LmiTemporalFilterS0* self);
LmiBool* LmiTemporalFilterS0SetOn(LmiTemporalFilterS0* self, LmiBool child);
LmiUint16* LmiTemporalFilterS0SetMaxNonBackgroundPixelsAllowedForBackgroundY(LmiTemporalFilterS0* self, LmiUint16 child);
LmiUint16* LmiTemporalFilterS0SetMaxNonBackgroundPixelsAllowedForBackgroundCb(LmiTemporalFilterS0* self, LmiUint16 child);
LmiUint16* LmiTemporalFilterS0SetMaxNonBackgroundPixelsAllowedForBackgroundCr(LmiTemporalFilterS0* self, LmiUint16 child);
LmiUint16* LmiTemporalFilterS0SetLumaBlockThreshold(LmiTemporalFilterS0* self, LmiUint16 child);
LmiUint16* LmiTemporalFilterS0SetChromaBlockThreshold(LmiTemporalFilterS0* self, LmiUint16 child);
LmiUint16* LmiTemporalFilterS0SetLumaThresholdBackground(LmiTemporalFilterS0* self, LmiUint16 child);
LmiUint16* LmiTemporalFilterS0SetChromaThresholdBackground(LmiTemporalFilterS0* self, LmiUint16 child);
LmiUint16* LmiTemporalFilterS0SetLumaThresholdNonBackground(LmiTemporalFilterS0* self, LmiUint16 child);
LmiUint16* LmiTemporalFilterS0SetChromaThresholdNonBackground(LmiTemporalFilterS0* self, LmiUint16 child);
LmiUint16* LmiTemporalFilterS0SetBackgroundDetectionThresholdBackground(LmiTemporalFilterS0* self, LmiUint16 child);
LmiUint16* LmiTemporalFilterS0SetBackgroundDetectionThresholdNonBackground(LmiTemporalFilterS0* self, LmiUint16 child);
LmiUint16* LmiTemporalFilterS0SetSadAllowedForBackgroundY(LmiTemporalFilterS0* self, LmiUint16 child);
LmiUint16* LmiTemporalFilterS0SetStrongBackgroundTemporalFilterThreshold(LmiTemporalFilterS0* self, LmiUint16 child);
LmiUint16* LmiTemporalFilterS0SetSumIntraFrameDiffThreshold(LmiTemporalFilterS0* self, LmiUint16 child);
LmiUint16* LmiTemporalFilterS0SetBackgroundDetectionLumaBlockThreshold(LmiTemporalFilterS0* self, LmiUint16 child);
LmiVector(LmiString)* LmiTemporalFilterS0SetUnparsed(LmiTemporalFilterS0* self, const LmiVector(LmiString)* child);
LmiBool LmiTemporalFilterS0Encode_(const LmiTemporalFilterS0* self, const char* name, const char* nsTag, const char* nsUri, const char* globalNsUri, LmiBool isShortForm, LmiString* outStr);
LmiBool LmiTemporalFilterS0Encode(const LmiTemporalFilterS0* self, const char* name, const char* nsTag, const char* nsUri, LmiBool isShortForm, LmiString* outStr);
LmiTemporalFilterS0* LmiTemporalFilterS0ConstructDeepCopy(LmiTemporalFilterS0* self, const LmiTemporalFilterS0* other);
LmiAllocator* LmiTemporalFilterS0GetAllocator(LmiTemporalFilterS0* self);
/* Definitions for LmiTemporalFilter */
struct LmiTemporalFilterImpl_ {
	LmiTemporalFilterS0 s0_;
	LmiAllocator* a;
};


LmiTemporalFilterImpl* LmiTemporalFilterImplConstructCopy(LmiTemporalFilterImpl* impl, const LmiTemporalFilterImpl* otherImpl);
LmiTemporalFilter* LmiTemporalFilterConstruct(LmiTemporalFilter* self, LmiBool onArg, LmiUint16 maxNonBackgroundPixelsAllowedForBackgroundYArg, LmiUint16 maxNonBackgroundPixelsAllowedForBackgroundCbArg, LmiUint16 maxNonBackgroundPixelsAllowedForBackgroundCrArg, LmiUint16 lumaBlockThresholdArg, LmiUint16 chromaBlockThresholdArg, LmiUint16 lumaThresholdBackgroundArg, LmiUint16 chromaThresholdBackgroundArg, LmiUint16 lumaThresholdNonBackgroundArg, LmiUint16 chromaThresholdNonBackgroundArg, LmiUint16 backgroundDetectionThresholdBackgroundArg, LmiUint16 backgroundDetectionThresholdNonBackgroundArg, LmiUint16 sadAllowedForBackgroundYArg, LmiUint16 strongBackgroundTemporalFilterThresholdArg, LmiUint16 sumIntraFrameDiffThresholdArg, LmiUint16 backgroundDetectionLumaBlockThresholdArg, LmiAllocator* a);
LMI_INLINE_DECLARATION const LmiTemporalFilterS0* LmiTemporalFilterGetS0Const(const LmiTemporalFilter* self);
LMI_INLINE_DECLARATION LmiTemporalFilterS0* LmiTemporalFilterGetS0(LmiTemporalFilter* self);
LmiTemporalFilterS0* LmiTemporalFilterSetS0(LmiTemporalFilter* self, const LmiTemporalFilterS0* child);
LMI_INLINE_DECLARATION const LmiBool* LmiTemporalFilterGetOnConst(const LmiTemporalFilter* self); /* deep */
LMI_INLINE_DECLARATION LmiBool* LmiTemporalFilterGetOn(LmiTemporalFilter* self);
LmiBool* LmiTemporalFilterSetOn(LmiTemporalFilter* self, LmiBool indChild);
LMI_INLINE_DECLARATION const LmiUint16* LmiTemporalFilterGetMaxNonBackgroundPixelsAllowedForBackgroundYConst(const LmiTemporalFilter* self); /* deep */
LMI_INLINE_DECLARATION LmiUint16* LmiTemporalFilterGetMaxNonBackgroundPixelsAllowedForBackgroundY(LmiTemporalFilter* self);
LmiUint16* LmiTemporalFilterSetMaxNonBackgroundPixelsAllowedForBackgroundY(LmiTemporalFilter* self, LmiUint16 indChild);
LMI_INLINE_DECLARATION const LmiUint16* LmiTemporalFilterGetMaxNonBackgroundPixelsAllowedForBackgroundCbConst(const LmiTemporalFilter* self); /* deep */
LMI_INLINE_DECLARATION LmiUint16* LmiTemporalFilterGetMaxNonBackgroundPixelsAllowedForBackgroundCb(LmiTemporalFilter* self);
LmiUint16* LmiTemporalFilterSetMaxNonBackgroundPixelsAllowedForBackgroundCb(LmiTemporalFilter* self, LmiUint16 indChild);
LMI_INLINE_DECLARATION const LmiUint16* LmiTemporalFilterGetMaxNonBackgroundPixelsAllowedForBackgroundCrConst(const LmiTemporalFilter* self); /* deep */
LMI_INLINE_DECLARATION LmiUint16* LmiTemporalFilterGetMaxNonBackgroundPixelsAllowedForBackgroundCr(LmiTemporalFilter* self);
LmiUint16* LmiTemporalFilterSetMaxNonBackgroundPixelsAllowedForBackgroundCr(LmiTemporalFilter* self, LmiUint16 indChild);
LMI_INLINE_DECLARATION const LmiUint16* LmiTemporalFilterGetLumaBlockThresholdConst(const LmiTemporalFilter* self); /* deep */
LMI_INLINE_DECLARATION LmiUint16* LmiTemporalFilterGetLumaBlockThreshold(LmiTemporalFilter* self);
LmiUint16* LmiTemporalFilterSetLumaBlockThreshold(LmiTemporalFilter* self, LmiUint16 indChild);
LMI_INLINE_DECLARATION const LmiUint16* LmiTemporalFilterGetChromaBlockThresholdConst(const LmiTemporalFilter* self); /* deep */
LMI_INLINE_DECLARATION LmiUint16* LmiTemporalFilterGetChromaBlockThreshold(LmiTemporalFilter* self);
LmiUint16* LmiTemporalFilterSetChromaBlockThreshold(LmiTemporalFilter* self, LmiUint16 indChild);
LMI_INLINE_DECLARATION const LmiUint16* LmiTemporalFilterGetLumaThresholdBackgroundConst(const LmiTemporalFilter* self); /* deep */
LMI_INLINE_DECLARATION LmiUint16* LmiTemporalFilterGetLumaThresholdBackground(LmiTemporalFilter* self);
LmiUint16* LmiTemporalFilterSetLumaThresholdBackground(LmiTemporalFilter* self, LmiUint16 indChild);
LMI_INLINE_DECLARATION const LmiUint16* LmiTemporalFilterGetChromaThresholdBackgroundConst(const LmiTemporalFilter* self); /* deep */
LMI_INLINE_DECLARATION LmiUint16* LmiTemporalFilterGetChromaThresholdBackground(LmiTemporalFilter* self);
LmiUint16* LmiTemporalFilterSetChromaThresholdBackground(LmiTemporalFilter* self, LmiUint16 indChild);
LMI_INLINE_DECLARATION const LmiUint16* LmiTemporalFilterGetLumaThresholdNonBackgroundConst(const LmiTemporalFilter* self); /* deep */
LMI_INLINE_DECLARATION LmiUint16* LmiTemporalFilterGetLumaThresholdNonBackground(LmiTemporalFilter* self);
LmiUint16* LmiTemporalFilterSetLumaThresholdNonBackground(LmiTemporalFilter* self, LmiUint16 indChild);
LMI_INLINE_DECLARATION const LmiUint16* LmiTemporalFilterGetChromaThresholdNonBackgroundConst(const LmiTemporalFilter* self); /* deep */
LMI_INLINE_DECLARATION LmiUint16* LmiTemporalFilterGetChromaThresholdNonBackground(LmiTemporalFilter* self);
LmiUint16* LmiTemporalFilterSetChromaThresholdNonBackground(LmiTemporalFilter* self, LmiUint16 indChild);
LMI_INLINE_DECLARATION const LmiUint16* LmiTemporalFilterGetBackgroundDetectionThresholdBackgroundConst(const LmiTemporalFilter* self); /* deep */
LMI_INLINE_DECLARATION LmiUint16* LmiTemporalFilterGetBackgroundDetectionThresholdBackground(LmiTemporalFilter* self);
LmiUint16* LmiTemporalFilterSetBackgroundDetectionThresholdBackground(LmiTemporalFilter* self, LmiUint16 indChild);
LMI_INLINE_DECLARATION const LmiUint16* LmiTemporalFilterGetBackgroundDetectionThresholdNonBackgroundConst(const LmiTemporalFilter* self); /* deep */
LMI_INLINE_DECLARATION LmiUint16* LmiTemporalFilterGetBackgroundDetectionThresholdNonBackground(LmiTemporalFilter* self);
LmiUint16* LmiTemporalFilterSetBackgroundDetectionThresholdNonBackground(LmiTemporalFilter* self, LmiUint16 indChild);
LMI_INLINE_DECLARATION const LmiUint16* LmiTemporalFilterGetSadAllowedForBackgroundYConst(const LmiTemporalFilter* self); /* deep */
LMI_INLINE_DECLARATION LmiUint16* LmiTemporalFilterGetSadAllowedForBackgroundY(LmiTemporalFilter* self);
LmiUint16* LmiTemporalFilterSetSadAllowedForBackgroundY(LmiTemporalFilter* self, LmiUint16 indChild);
LMI_INLINE_DECLARATION const LmiUint16* LmiTemporalFilterGetStrongBackgroundTemporalFilterThresholdConst(const LmiTemporalFilter* self); /* deep */
LMI_INLINE_DECLARATION LmiUint16* LmiTemporalFilterGetStrongBackgroundTemporalFilterThreshold(LmiTemporalFilter* self);
LmiUint16* LmiTemporalFilterSetStrongBackgroundTemporalFilterThreshold(LmiTemporalFilter* self, LmiUint16 indChild);
LMI_INLINE_DECLARATION const LmiUint16* LmiTemporalFilterGetSumIntraFrameDiffThresholdConst(const LmiTemporalFilter* self); /* deep */
LMI_INLINE_DECLARATION LmiUint16* LmiTemporalFilterGetSumIntraFrameDiffThreshold(LmiTemporalFilter* self);
LmiUint16* LmiTemporalFilterSetSumIntraFrameDiffThreshold(LmiTemporalFilter* self, LmiUint16 indChild);
LMI_INLINE_DECLARATION const LmiUint16* LmiTemporalFilterGetBackgroundDetectionLumaBlockThresholdConst(const LmiTemporalFilter* self); /* deep */
LMI_INLINE_DECLARATION LmiUint16* LmiTemporalFilterGetBackgroundDetectionLumaBlockThreshold(LmiTemporalFilter* self);
LmiUint16* LmiTemporalFilterSetBackgroundDetectionLumaBlockThreshold(LmiTemporalFilter* self, LmiUint16 indChild);
LMI_INLINE_DECLARATION const LmiVector(LmiString)* LmiTemporalFilterGetUnparsedConst(const LmiTemporalFilter* self); /* deep */
LMI_INLINE_DECLARATION LmiVector(LmiString)* LmiTemporalFilterGetUnparsed(LmiTemporalFilter* self);
LmiVector(LmiString)* LmiTemporalFilterSetUnparsed(LmiTemporalFilter* self, const LmiVector(LmiString)* indChild);
LmiBool LmiTemporalFilterEncode_(const LmiTemporalFilter* self, const char* name, const char* nsTag, const char* nsUri, const char* globalNsUri, LmiBool isShortForm, LmiString* outStr);
LmiBool LmiTemporalFilterEncode(const LmiTemporalFilter* self, const char* name, const char* nsTag, const char* nsUri, LmiBool isShortForm, LmiString* outStr);
LmiTemporalFilter* LmiTemporalFilterConstructDeepCopy(LmiTemporalFilter* self, const LmiTemporalFilter* other);
LmiAllocator* LmiTemporalFilterGetAllocator(LmiTemporalFilter* self);
extern const LmiXsdType LmiXsdType_LmiTemporalFilterStatus;

extern const LmiXsdType LmiXsdType_LmiSpatialFilter;

extern const LmiXsdType LmiXsdType_LmiDistortionType;

extern const LmiXsdType LmiXsdType_LmiDynamicRange;

extern const LmiXsdType LmiXsdType_LmiTemporalFilter;

LMI_END_EXTERN_C
#if LMI_INLINE_NEED_HEADER_FILE_DEFINITIONS
#include "LmiVideoCommonConfigAutoInline.h"
#endif
#endif /* _LMIVIDEOCOMMONCONFIGAUTO.H_ */
