namespace MediaBrowser.Model.Session
{
    public class TranscodingInfo
    {
        public string AudioCodec { get; set; }
        public string VideoCodec { get; set; }
        public string Container { get; set; }
        public bool IsVideoDirect { get; set; }
        public bool IsAudioDirect { get; set; }
        public int? Bitrate { get; set; }

        public float? Framerate { get; set; }
        public double? CompletionPercentage { get; set; }

        public int? Width { get; set; }
        public int? Height { get; set; }
        public int? AudioChannels { get; set; }

        public TranscodeReason[] TranscodeReasons { get; set; }

        public TranscodingInfo()
        {
            TranscodeReasons = new TranscodeReason[] { };
        }
    }

    public enum TranscodeReason
    {
        ContainerNotSupported = 0,
        VideoCodecNotSupported = 1,
        AudioCodecNotSupported = 2,
        ContainerBitrateExceedsLimit = 3,
        AudioBitrateNotSupported = 4,
        AudioChannelsNotSupported = 5,
        VideoResolutionNotSupported = 6,
        UnknownVideoStreamInfo = 7,
        UnknownAudioStreamInfo = 8,
        AudioProfileNotSupported = 9,
        AudioSampleRateNotSupported = 10,
        AnamorphicVideoNotSupported = 11,
        InterlacedVideoNotSupported = 12,
        SecondaryAudioNotSupported = 13,
        RefFramesNotSupported = 14,
        VideoBitDepthNotSupported = 15,
        VideoBitrateNotSupported = 16,
        VideoFramerateNotSupported = 17,
        VideoLevelNotSupported = 18,
        VideoProfileNotSupported = 19,
        AudioBitDepthNotSupported = 20,
        SubtitleCodecNotSupported = 21,
        DirectPlayError = 22
    }
}
