InputConverterHelper.cs 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. using fis.media.Library.Media.Members;
  2. using fis.media.Library.Media.Publisher;
  3. using fis.media.Library.Media.Rooms;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. namespace fis.media.Library.Input.FisVideoMemberInput
  10. {
  11. public class InputConverterHelper
  12. {
  13. public static string[] GetChatRoomInitArgs(LiveConsultation liveConsultation)
  14. {
  15. var chatRoomInitArgs = new List<string>();
  16. chatRoomInitArgs.Add(liveConsultation.AppId.ToString());
  17. chatRoomInitArgs.Add(liveConsultation.UserCode!.ToString());
  18. chatRoomInitArgs.Add(liveConsultation.UserSign!.ToString());
  19. chatRoomInitArgs.Add(liveConsultation.RoomNo.ToString());
  20. return chatRoomInitArgs.ToArray();
  21. }
  22. public static List<AbstractMember> ConvetSDKMembers(List<ConsultationMemeber> consultationMemebers)
  23. {
  24. var members = new List<AbstractMember>();
  25. foreach (var cm in consultationMemebers)
  26. {
  27. members.Add(ConvertBuisnessMember(cm));
  28. }
  29. return members;
  30. }
  31. public static AbstractMember ConvertBuisnessMember(ConsultationMemeber ConsultationMemeber)
  32. {
  33. if (ConsultationMemeber.MemberRoleType==MemberRoleType.Local)
  34. {
  35. var localMember= new LocalVideoMember(ConsultationMemeber.Id);
  36. localMember.IsOnline = ConsultationMemeber.IsOnline;
  37. localMember.IsMute = ConsultationMemeber.Mute;
  38. localMember.IsCameraOn = ConsultationMemeber.VideoOpend;
  39. localMember.IsSelf = true;
  40. localMember.IsMergeChannel = ConsultationMemeber.MergedChannel;
  41. return localMember;
  42. }
  43. if (ConsultationMemeber.MemberRoleType == MemberRoleType.Remote)
  44. {
  45. var remoteMember = new RemoteVideoMember(ConsultationMemeber.Id);
  46. remoteMember.IsOnline = ConsultationMemeber.IsOnline;
  47. remoteMember.IsMute = ConsultationMemeber.Mute;
  48. remoteMember.IsCameraOn = ConsultationMemeber.VideoOpend;
  49. remoteMember.IsSelf = false;
  50. remoteMember.IsMergeChannel = ConsultationMemeber.MergedChannel;
  51. return remoteMember;
  52. }
  53. if (ConsultationMemeber.MemberRoleType == MemberRoleType.Device)
  54. {
  55. var deviceMember = new RemoteVideoMember(ConsultationMemeber.Id);
  56. deviceMember.IsOnline = ConsultationMemeber.IsOnline;
  57. deviceMember.IsMute = ConsultationMemeber.Mute;
  58. deviceMember.IsCameraOn = ConsultationMemeber.VideoOpend;
  59. deviceMember.IsSelf = false;
  60. deviceMember.IsMergeChannel = ConsultationMemeber.MergedChannel;
  61. deviceMember.LayerConfig = GenerateLayerConfig(ConsultationMemeber.MergedChannel, ConsultationMemeber.VideoDeviceInfos, ConsultationMemeber.MergedVideoOutputWidth,
  62. ConsultationMemeber.MergedVideoOutputHeight);
  63. return deviceMember;
  64. }
  65. return null;
  66. }
  67. private static LayerConfig GenerateLayerConfig(bool mergedChannel, List<VideoDeviceOutputInfo> videoDeviceInfos, int mergedVideoOutputWidth, int mergedVideoOutputHeight)
  68. {
  69. if (mergedChannel)
  70. {
  71. return null;
  72. }
  73. var layer = new LayerConfig();
  74. var deskTop = videoDeviceInfos.FirstOrDefault(x => x.VideoDeviceSourceType == VideoDeviceSourceTypeEnum.DeskTop);
  75. var camera= videoDeviceInfos.FirstOrDefault(x => x.VideoDeviceSourceType == VideoDeviceSourceTypeEnum.Camera);
  76. layer.RegionInfo = new RegionInfo()
  77. {
  78. Width = mergedVideoOutputWidth,
  79. Height = mergedVideoOutputHeight,
  80. MainRegion = deskTop == null ? null : new RegionModel()
  81. {
  82. Width = deskTop.OutputWidth,
  83. Height=deskTop.OutputHeight,
  84. Position=PositionEnum.Center
  85. },
  86. SideRegionOne=camera==null?null:new RegionModel {
  87. Width = camera.OutputWidth,
  88. Height = camera.OutputHeight,
  89. Position = PositionEnum.TopRight
  90. }
  91. };
  92. return layer;
  93. }
  94. }
  95. }