CodecProfile.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. using MediaBrowser.Model.Extensions;
  2. using System.Collections.Generic;
  3. using System.Xml.Serialization;
  4. namespace MediaBrowser.Model.Dlna
  5. {
  6. public class CodecProfile
  7. {
  8. [XmlAttribute("type")]
  9. public CodecType Type { get; set; }
  10. public ProfileCondition[] Conditions { get; set; }
  11. public ProfileCondition[] ApplyConditions { get; set; }
  12. [XmlAttribute("codec")]
  13. public string Codec { get; set; }
  14. [XmlAttribute("container")]
  15. public string Container { get; set; }
  16. public CodecProfile()
  17. {
  18. Conditions = new ProfileCondition[] {};
  19. ApplyConditions = new ProfileCondition[] { };
  20. }
  21. public List<string> GetCodecs()
  22. {
  23. List<string> list = new List<string>();
  24. foreach (string i in (Codec ?? string.Empty).Split(','))
  25. {
  26. if (!string.IsNullOrEmpty(i)) list.Add(i);
  27. }
  28. return list;
  29. }
  30. public List<string> GetContainers()
  31. {
  32. List<string> list = new List<string>();
  33. foreach (string i in (Container ?? string.Empty).Split(','))
  34. {
  35. if (!string.IsNullOrEmpty(i)) list.Add(i);
  36. }
  37. return list;
  38. }
  39. private bool ContainsContainer(string container)
  40. {
  41. List<string> containers = GetContainers();
  42. return containers.Count == 0 || ListHelper.ContainsIgnoreCase(containers, container ?? string.Empty);
  43. }
  44. public bool ContainsCodec(string codec, string container)
  45. {
  46. if (!ContainsContainer(container))
  47. {
  48. return false;
  49. }
  50. List<string> codecs = GetCodecs();
  51. return codecs.Count == 0 || ListHelper.ContainsIgnoreCase(codecs, codec);
  52. }
  53. }
  54. }