001package com.vonage.client.video; 002 003import com.fasterxml.jackson.annotation.JsonCreator; 004import com.fasterxml.jackson.annotation.JsonValue; 005import java.util.Arrays; 006import java.util.Map; 007import java.util.function.Function; 008import java.util.stream.Collectors; 009 010/** 011 * Defines valid video resolutions for an archive. 012 */ 013public enum Resolution { 014 /** 015 * 480p landscape (640x480) 016 */ 017 SD_LANDSCAPE("640x480"), 018 019 /** 020 * 480p portrait (480x640) 021 */ 022 SD_PORTRAIT("480x640"), 023 024 /** 025 * 720p landscape (1280x720) 026 */ 027 HD_LANDSCAPE("1280x720"), 028 029 /** 030 * 720p portrait (720x1280) 031 */ 032 HD_PORTRAIT("720x1280"), 033 034 /** 035 * 1080p landscape (1920x1080) 036 */ 037 FHD_LANDSCAPE("1920x1080"), 038 039 /** 040 * 1080p portrait (1080x1920) 041 */ 042 FHD_PORTRAIT("1080x1920"); 043 044 private static final Map<String, Resolution> RESOLUTION_INDEX = 045 Arrays.stream(Resolution.values()).collect(Collectors.toMap( 046 Resolution::toString, Function.identity() 047 )); 048 049 final String value; 050 051 Resolution(String value) { 052 this.value = value; 053 } 054 055 @JsonValue 056 @Override 057 public String toString() { 058 return value; 059 } 060 061 @JsonCreator 062 public static Resolution fromString(String resolution) { 063 return RESOLUTION_INDEX.getOrDefault(resolution, null); 064 } 065}