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}