AppSyncProvider.cs 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. using MediaBrowser.Controller.Devices;
  2. using MediaBrowser.Controller.Sync;
  3. using MediaBrowser.Model.Devices;
  4. using MediaBrowser.Model.Dlna;
  5. using MediaBrowser.Model.Sync;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Linq;
  9. namespace MediaBrowser.Server.Implementations.Sync
  10. {
  11. public class AppSyncProvider : ISyncProvider, IHasUniqueTargetIds, IHasSyncQuality
  12. {
  13. private readonly IDeviceManager _deviceManager;
  14. public AppSyncProvider(IDeviceManager deviceManager)
  15. {
  16. _deviceManager = deviceManager;
  17. }
  18. public IEnumerable<SyncTarget> GetSyncTargets(string userId)
  19. {
  20. return _deviceManager.GetDevices(new DeviceQuery
  21. {
  22. SupportsSync = true,
  23. UserId = userId
  24. }).Items.Select(i => new SyncTarget
  25. {
  26. Id = i.Id,
  27. Name = i.Name
  28. });
  29. }
  30. public DeviceProfile GetDeviceProfile(SyncTarget target, string quality)
  31. {
  32. var caps = _deviceManager.GetCapabilities(target.Id);
  33. var profile = caps == null || caps.DeviceProfile == null ? new DeviceProfile() : caps.DeviceProfile;
  34. var maxBitrate = profile.MaxStaticBitrate;
  35. if (maxBitrate.HasValue)
  36. {
  37. if (string.Equals(quality, "medium", StringComparison.OrdinalIgnoreCase))
  38. {
  39. maxBitrate = Convert.ToInt32(maxBitrate.Value * .75);
  40. }
  41. else if (string.Equals(quality, "low", StringComparison.OrdinalIgnoreCase))
  42. {
  43. maxBitrate = Convert.ToInt32(maxBitrate.Value * .5);
  44. }
  45. profile.MaxStaticBitrate = maxBitrate;
  46. }
  47. return profile;
  48. }
  49. public string Name
  50. {
  51. get { return "App Sync"; }
  52. }
  53. public IEnumerable<SyncTarget> GetAllSyncTargets()
  54. {
  55. return _deviceManager.GetDevices(new DeviceQuery
  56. {
  57. SupportsSync = true
  58. }).Items.Select(i => new SyncTarget
  59. {
  60. Id = i.Id,
  61. Name = i.Name
  62. });
  63. }
  64. public IEnumerable<SyncQualityOption> GetQualityOptions(SyncTarget target)
  65. {
  66. return new List<SyncQualityOption>
  67. {
  68. new SyncQualityOption
  69. {
  70. Name = SyncQuality.Original.ToString(),
  71. Id = SyncQuality.Original.ToString()
  72. },
  73. new SyncQualityOption
  74. {
  75. Name = SyncQuality.High.ToString(),
  76. Id = SyncQuality.High.ToString(),
  77. IsDefault = true
  78. },
  79. new SyncQualityOption
  80. {
  81. Name = SyncQuality.Medium.ToString(),
  82. Id = SyncQuality.Medium.ToString()
  83. },
  84. new SyncQualityOption
  85. {
  86. Name = SyncQuality.Low.ToString(),
  87. Id = SyncQuality.Low.ToString()
  88. }
  89. };
  90. }
  91. }
  92. }