#!/usr/bin/env python
## Copyright (c) 2019, Alliance for Open Media. All rights reserved
##
## This source code is subject to the terms of the BSD 2 Clause License and
## the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
## was not distributed with this source code in the LICENSE file, you can
## obtain it at www.aomedia.org/license/software. If the Alliance for Open
## Media Patent License 1.0 was not distributed with this source code in the
## PATENTS file, you can obtain it at www.aomedia.org/license/patent.
##
__author__ = "maggie.sun@intel.com, ryan.lei@intel.com"

"""
Python file for definition of AV2 CTC testing clips/sets
"""

CTC_TEST_SET = {
    "AI": ["A1", "A2", "A3", "A4", "A5", "B1", "G1", "G2"],
    "RA": ["A1", "A2", "A3", "A4", "A5", "B1", "G1", "G2"],
    "LD": ["A2", "A3", "A4", "A5", "B1"],
    "AS": ["A1"],
    "STILL": ["F1", "F2"],
}

Y4M_CLIPs = {
"A1"            : ["BoxingPractice_3840x2160_5994fps_10bit_420.y4m",
                   "Crosswalk_3840x2160_5994fps_10bit_420.y4m",
                   "FoodMarket2_3840x2160_5994fps_10bit_420.y4m",
                   "Neon1224_3840x2160_2997fps.y4m",
                   "NocturneDance_3840x2160p_10bit_60fps.y4m",
                   "PierSeaSide_3840x2160_2997fps_10bit_420.y4m",
                   "Tango_3840x2160_5994fps_10bit_420.y4m",
                   "TimeLapse_3840x2160_5994fps_10bit_420.y4m"],
"A2"            : ["Aerial3200_1920x1080_5994_10bit_420.y4m",
                   "Boat_1920x1080_5994_10bit_420.y4m",
                   "CrowdRun_1920x1080p50.y4m",
                   "DinnerSceneCropped_1920x1080_2997fps_10bit_420.y4m",
                   "FoodMarket_1920x1080_5994_10bit_420.y4m",
                   "MeridianTalk_sdr_1920x1080p_5994_10bit.y4m",
                   "Motorcycle_1920x1080_30fps_8bit.y4m",
                   "MountainBike_1920x1080_30fps_8bit.y4m",
                   "OldTownCross_1920x1080p50.y4m",
                   "PedestrianArea_1920x1080p25.y4m",
                   "RitualDance_1920x1080_5994_10bit_420.y4m",
                   "Riverbed_1920x1080p25.y4m",
                   "RushFieldCuts_1920x1080_2997.y4m",
                   "Skater227_1920x1080_30fps.y4m",
                   "ToddlerFountain_1920x1080_2997fps_10bit_420.y4m",
                   "TreesAndGrass_1920_1080_30fps_8bit.y4m",
                   "TunnelFlag_1920x1080_5994_10bit_420.y4m",
                   "Vertical_bees_1080x1920_2997.y4m",
                   "Vertical_Carnaby_1080x1920_5994.y4m",
                   "WalkingInStreet_1920x1080_30fps.y4m",
                   "WorldCup_1920x1080_30p.y4m",
                   "WorldCup_far_1920x1080_30p.y4m"],
"A3"            : ["ControlledBurn_1280x720p30_420.y4m",
                   "DrivingPOV_1280x720p_5994_10bit_420.y4m",
                   "Johnny_1280x720_60.y4m",
                   "KristenAndSara_1280x720_60.y4m",
                   "RollerCoaster_1280x720p_5994_10bit_420.y4m",
                   "Vidyo3_1280x720p_60fps.y4m",
                   "Vidyo4_1280x720p_60fps.y4m",
                   "WestWindEasy_1280x720p30_420.y4m"],
"A4"            : ["BlueSky_360p25.y4m",
                   "RedKayak_360_2997.y4m",
                   "SnowMountain_640x360_2997.y4m",
                   "SpeedBag_640x360_2997.y4m",
                   "Stockholm_640x360_5994.y4m",
                   "TouchdownPass_640x360_2997.y4m"],
"A5"            : ["FourPeople_480x270_60.y4m",
                   "ParkJoy_480x270_50.y4m",
                   "SparksElevator_480x270p_5994_10bit.y4m",
                   "Vertical_Bayshore_270x480_2997.y4m"],
"B1"            : ["AOV5_1920x1080_60_8bit_420.y4m",
                   "Baolei_2048x1080_60fps.y4m",
                   "CosmosTreeTrunk_sdr_2048x858_25_8bit.y4m",
                   "EuroTruckSimulator2_1920x1080p60.y4m",
                   "GlassHalf_1920x1080p_24p_8bit_420.y4m",
                   "Life_1080p30.y4m",
                   "MINECRAFT_1080p_60_8bit.y4m",
                   "MissionControlClip3_1920x1080_60_420.y4m",
                   "Sniper_1920x1080P_30fps_8bit.y4m",
                   "SolLevanteDragons_sdr_1920x1080_24_10bit.y4m",
                   "SolLevanteFace_sdr_1920x1080_24_10bit.y4m",
                   "Wikipedia_1920x1080p30.y4m"],
"F1"            : ["animals_00.y4m",
                   "animals_03.y4m",
                   "animals_09.y4m",
                   "buildings_02.y4m",
                   "buildings_03.y4m",
                   "church.y4m",
                   "fireworks_01.y4m",
                   "flowerfield.y4m",
                   "flowers_08.y4m",
                   "flowers_12.y4m",
                   "food_02.y4m",
                   "fountain.y4m",
                   "lady.y4m",
                   "landscape_05.y4m",
                   "landscape_15.y4m",
                   "landscape_16.y4m",
                   "landscape_18.y4m",
                   "landscape_25.y4m",
                   "landscape_26.y4m",
                   "landscape_28.y4m",
                   "lodge.y4m",
                   "party.y4m",
                   "river.y4m",
                   "santa.y4m",
                   "seafood.y4m",
                   "snow_00.y4m",
                   "trees.y4m",
                   "underwater_01.y4m"],
"F2"            : ["Adventure_with_the_Windmills.y4m",
                   "Agapanthus_Postbloom2.y4m",
                   "Baruch.y4m",
                   "Berlin-Fernsehturm.y4m",
                   "Big_Easy_chair.y4m",
                   "Butterfly.y4m",
                   "Cecret_Lake_Panorama.y4m",
                   "Claudette.y4m",
                   "Collage_Oppeln.y4m",
                   "Corona_Arch.y4m",
                   "Correfocs_Festa_Major_del_Clot.y4m",
                   "Crepuscular_rays_at_Sunset_near_Waterberg_Plateau.y4m",
                   "Esquibien_Jean_Perrot.y4m",
                   "Florac-Le_Vibron-Source_du_Pecher.y4m",
                   "Fontaine_Place_Stanislas.y4m",
                   "Genmaicha_Tea.y4m",
                   "Homestead_in_Montana.y4m",
                   "Madeira_151_Funchal_Mercado_dos_Lavradores.y4m",
                   "Madeira_159_Funchal_Mercado_dos_Lavradores.y4m",
                   "MagicKindom.y4m",
                   "Michigan_Stadium.y4m",
                   "OperaLamps.y4m",
                   "Orion_Nebula.y4m",
                   "Saint_Catherine-Caravaggio.y4m",
                   "Streptopelia_orientalis.y4m",
                   "Swallowtail.y4m",
                   "Washington_Monument.y4m",
                   "Wasserfassstelle_von_1898_im_Schanerloch.y4m",
                   "Zoo_de_la_Barben.y4m"],
"G1"            : ["MeridianRoad_3840x2160_5994_hdr10.y4m",
                   "NocturneDance_3840x2160_60fps_hdr10.y4m",
                   "NocturneRoom_3840x2160_60fps_hdr10.y4m",
                   "SparksWelding_4096x2160_5994_hdr10.y4m"],
"G2"            : ["CosmosCaterpillar_2048x858p24_hdr10.y4m",
                   "CosmosTreeTrunk_2048x858p24_hdr10.y4m",
                   "MeridianShore_1920x1080_5994_hdr10.y4m",
                   "MeridianTalk_1920x1080_5994_hdr10.y4m",
                   "SolLevanteDragons_1920x1080p24_hdr10.y4m",
                   "SolLevanteFace_1920x1080p24_hdr10.y4m",
                   "SparksTruck_2048x1080_5994_hdr10.y4m"],
}
