CodecProfile.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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. [XmlAttribute("codec")]
  12. public string Codec { get; set; }
  13. [XmlAttribute("container")]
  14. public string Container { get; set; }
  15. public CodecProfile()
  16. {
  17. Conditions = new ProfileCondition[] {};
  18. }
  19. public List<string> GetCodecs()
  20. {
  21. List<string> list = new List<string>();
  22. foreach (string i in (Codec ?? string.Empty).Split(','))
  23. {
  24. if (!string.IsNullOrEmpty(i)) list.Add(i);
  25. }
  26. return list;
  27. }
  28. public List<string> GetContainers()
  29. {
  30. List<string> list = new List<string>();
  31. foreach (string i in (Container ?? string.Empty).Split(','))
  32. {
  33. if (!string.IsNullOrEmpty(i)) list.Add(i);
  34. }
  35. return list;
  36. }
  37. private bool ContainsContainer(string container)
  38. {
  39. List<string> containers = GetContainers();
  40. return containers.Count == 0 || ListHelper.ContainsIgnoreCase(containers, container ?? string.Empty);
  41. }
  42. public bool ContainsCodec(string codec, string container)
  43. {
  44. if (!ContainsContainer(container))
  45. {
  46. return false;
  47. }
  48. List<string> codecs = GetCodecs();
  49. return codecs.Count == 0 || ListHelper.ContainsIgnoreCase(codecs, codec);
  50. }
  51. }
  52. }