DlnaMaps.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. using System;
  2. namespace MediaBrowser.Model.Dlna
  3. {
  4. public class DlnaMaps
  5. {
  6. public static readonly string DefaultStreaming =
  7. FlagsToString(DlnaFlags.StreamingTransferMode |
  8. DlnaFlags.BackgroundTransferMode |
  9. DlnaFlags.ConnectionStall |
  10. DlnaFlags.ByteBasedSeek |
  11. DlnaFlags.DlnaV15);
  12. public static readonly string DefaultInteractive =
  13. FlagsToString(DlnaFlags.InteractiveTransferMode |
  14. DlnaFlags.BackgroundTransferMode |
  15. DlnaFlags.ConnectionStall |
  16. DlnaFlags.ByteBasedSeek |
  17. DlnaFlags.DlnaV15);
  18. public static string FlagsToString(DlnaFlags flags)
  19. {
  20. return string.Format("{0:X8}{1:D24}", (ulong)flags, 0);
  21. }
  22. public static string GetOrgOpValue(bool hasKnownRuntime, bool isDirectStream, TranscodeSeekInfo profileTranscodeSeekInfo)
  23. {
  24. if (hasKnownRuntime)
  25. {
  26. var orgOp = string.Empty;
  27. // Time-based seeking currently only possible when transcoding
  28. orgOp += isDirectStream ? "0" : "1";
  29. // Byte-based seeking only possible when not transcoding
  30. orgOp += isDirectStream || profileTranscodeSeekInfo == TranscodeSeekInfo.Bytes ? "1" : "0";
  31. return orgOp;
  32. }
  33. // No seeking is available if we don't know the content runtime
  34. return "00";
  35. }
  36. public static string GetImageOrgOpValue()
  37. {
  38. var orgOp = string.Empty;
  39. // Time-based seeking currently only possible when transcoding
  40. orgOp += "0";
  41. // Byte-based seeking only possible when not transcoding
  42. orgOp += "1";
  43. return orgOp;
  44. }
  45. }
  46. [Flags]
  47. public enum DlnaFlags : ulong
  48. {
  49. BackgroundTransferMode = (1 << 22),
  50. ByteBasedSeek = (1 << 29),
  51. ConnectionStall = (1 << 21),
  52. DlnaV15 = (1 << 20),
  53. InteractiveTransferMode = (1 << 23),
  54. PlayContainer = (1 << 28),
  55. RtspPause = (1 << 25),
  56. S0Increase = (1 << 27),
  57. SenderPaced = (1L << 31),
  58. SnIncrease = (1 << 26),
  59. StreamingTransferMode = (1 << 24),
  60. TimeBasedSeek = (1 << 30)
  61. }
  62. }