import {
  DeviceProfile,
  DlnaProfileType,
} from "@jellyfin/sdk/lib/generated-client/models";

const MediaTypes = {
  Audio: "Audio",
  Video: "Video",
  Photo: "Photo",
  Book: "Book",
};

export const chromecastProfile: DeviceProfile = {
  Name: "Chromecast",
  Id: "chromecast-001",
  MaxStreamingBitrate: 4000000, // 4 Mbps
  MaxStaticBitrate: 4000000, // 4 Mbps
  MusicStreamingTranscodingBitrate: 384000, // 384 kbps
  DirectPlayProfiles: [
    {
      Container: "mp4,webm",
      Type: "Video",
      VideoCodec: "h264,vp8,vp9",
      AudioCodec: "aac,mp3,opus,vorbis",
    },
    {
      Container: "mp3",
      Type: "Audio",
    },
    {
      Container: "aac",
      Type: "Audio",
    },
    {
      Container: "flac",
      Type: "Audio",
    },
    {
      Container: "wav",
      Type: "Audio",
    },
  ],
  TranscodingProfiles: [
    {
      Container: "ts",
      Type: "Video",
      VideoCodec: "h264",
      AudioCodec: "aac,mp3",
      Protocol: "hls",
      Context: "Streaming",
      MaxAudioChannels: "2",
      MinSegments: 2,
      BreakOnNonKeyFrames: true,
    },
    {
      Container: "mp4",
      Type: "Video",
      VideoCodec: "h264",
      AudioCodec: "aac",
      Protocol: "http",
      Context: "Streaming",
      MaxAudioChannels: "2",
    },
    {
      Container: "mp3",
      Type: "Audio",
      AudioCodec: "mp3",
      Protocol: "http",
      Context: "Streaming",
      MaxAudioChannels: "2",
    },
    {
      Container: "aac",
      Type: "Audio",
      AudioCodec: "aac",
      Protocol: "http",
      Context: "Streaming",
      MaxAudioChannels: "2",
    },
  ],
  ContainerProfiles: [
    {
      Type: "Video",
      Container: "mp4",
    },
    {
      Type: "Video",
      Container: "webm",
    },
  ],
  CodecProfiles: [
    {
      Type: "Video",
      Codec: "h264",
      Conditions: [
        {
          Condition: "LessThanEqual",
          Property: "VideoBitDepth",
          Value: "8",
        },
        {
          Condition: "LessThanEqual",
          Property: "VideoLevel",
          Value: "41",
        },
      ],
    },
    {
      Type: "Video",
      Codec: "vp9",
      Conditions: [
        {
          Condition: "LessThanEqual",
          Property: "VideoBitDepth",
          Value: "10",
        },
      ],
    },
  ],
  SubtitleProfiles: [
    {
      Format: "vtt",
      Method: "Hls",
    },
    {
      Format: "vtt",
      Method: "External",
    },
  ],
};
