# Configuration information for video process test case.
#    This application will firstly load yuv frames to one type of surface(NV12/YV12/I420)
#  you require. After video processing, the processed content (NV12/YV12/I420 surface)
#  will be stored to frames(yv12 format in file).
#    Supported features include: denoise, deinterlacing, sharpening, color balance, skintone
# detection/enhancement, blending and implicit format conversion(NV12<->YV12<->I420). Each
# time only one kind of processing will be executed in test application. Although libva supports
# multiple filters execution in one time. you can modify this configuration file to set the
# filter and the corresponding parameters.

#1.Source YUV(RGB) file information
#SRC_FILE_NAME:    /root/clips/YUV/bus_cif.yv12
SRC_FILE_NAME: ./bsw_src_1280x1024.yuy2.yuv
SRC_FRAME_WIDTH:  1280
SRC_FRAME_HEIGHT: 1024
SRC_FRAME_FORMAT: YUYV

#Note .yv12 files are in YV12 format and .yuv used above for STDE is in I420 format
SRC_FILE_FORMAT: YUYV

#2.Destination YUV(RGB) file information
DST_FILE_NAME:    ./output.yuv
DST_FRAME_WIDTH:  1920
DST_FRAME_HEIGHT: 1080
DST_FRAME_FORMAT: YUYV

DST_FILE_FORMAT: YUYV

#3.How many frames to be processed
FRAME_SUM: 1

#4.VPP filter type and parameters, the following filters are supported:
  #(VAProcFilterNone,VAProcFilterNoiseReduction,VAProcFilterDeinterlacing,
  # VAProcFilterSharpening,VAProcFilterColorBalance,VAProcFilterSkinToneEnhancement
  # defalut VAProcFilterNone)
FILTER_TYPE: VAProcFilterNone

#5.VPP filter specific parameters. If they are not specified here,
#default value will be applied then.

#5.1 Denoise filter paramters
 #(0.0 ~ 1.0, default 0.5)
DENOISE_INTENSITY: 0.75

#5.2 Deinterlacding parameters
  #(VAProcDeinterlacingBob, VAProcDeinterlacingWeave,
  # VAProcDeinterlacingMotionAdaptive, VAProcDeinterlacingMotionCompensated,
  # default: VAProcDeinterlacingBob)
DEINTERLACING_ALGORITHM:  VAProcDeinterlacingBob

 #(VA_DEINTERLACING_BOTTOM_FIELD_FIRST |
 # VA_DEINTERLACING_BOTTOM_FIELD |
 # VA_DEINTERLACING_ONE_FIELD, default 0)
DEINTERLACING_FLAGS: 0

#5.3 Sharpening parameters
 # (0.0 ~ 1.0, default 0.5)
SHARPENING_INTENSITY: 0.75

#5.4 Blending
 # (0, 1, default 0)
BLENDING_ENABLED:  0
 # (VA_BLEND_GLOBAL_ALPHA |
 #  VA_BLEND_LUMA_KEY, defalut 0)
BLENDING_FLAGS: VA_BLEND_GLOBAL_ALPHA
 # (0.0 ~ 1.0, default 0.5)
BLENDING_GLOBAL_ALPHA: 0.5
 # (1 ~ 254, defalut 1)
BLENDING_MIN_LUMA: 1
 # (1 ~ 254, defalut 254)
BLENDING_MAX_LUMA: 254

#5.5 Color balance parameters
 #(-180 ~ 180, default 0)
COLOR_BALANCE_HUE: 0
 #(0.0 ~ 10.0, default 1.0)
COLOR_BALANCE_SATURATION: 1.0
 #(-100 ~ 100, default 0)
COLOR_BALANCE_BRIGHTNESS: 20
 #(0.0 ~ 10.0, default 1.0)
COLOR_BALANCE_CONTRAST:  1.2

#5.6 Skin Tone Detection and Enhancement parameters
 # (One of 0, 3, 6, 9, default = 0)
STDE_FACTOR: 9
