public Task <ReturnMessage> SendUiMessage(int messageId, string pData, int dataLength, string targetPhoneId) { Task <ReturnMessage> checkTask = _meetingManager.CheckMeetingServerStatus(); if (checkTask != null) { return(checkTask); } var tcs = new TaskCallback <ReturnMessage>("SendUIMessage"); if (_meetingManager.TaskCallbacks.ContainsKey(tcs.Name)) { _meetingManager.TaskCallbacks.Remove(tcs.Name); } _meetingManager.TaskCallbacks.Add(tcs.Name, tcs); int result = MeetingAgent.SendUIMessage(messageId, pData, dataLength, targetPhoneId); if (result != 0) { return(Task.FromResult(MessageManager.FailedToSendUiMessage)); } return(tcs.Task); }
public Task <ReturnMessage> JoinMeeting(int meetingId, uint[] hwnds, int count, uint[] docHwnds, int docCount) { Task <ReturnMessage> checkTask = _meetingManager.CheckMeetingServerStatus(); if (checkTask != null) { return(checkTask); } var tcs = new TaskCallback <ReturnMessage>("JoinMeeting"); if (_meetingManager.TaskCallbacks.ContainsKey(tcs.Name)) { _meetingManager.TaskCallbacks.Remove(tcs.Name); } _meetingManager.TaskCallbacks.Add(tcs.Name, tcs); int result = MeetingAgent.JoinMeeting(meetingId, hwnds, count, docHwnds, docCount); if (result != 0) { _meetingManager.CurrentMeetingId = 0; return(Task.FromResult(MessageManager.FailedToJoinMeeting)); } return(tcs.Task); }
public Task <List <MeetingRecord> > GetMeetingRecords() { List <MeetingRecord> meetingRecords = new List <MeetingRecord>(); if (!_meetingManager.IsServierStarted) { return(Task.FromResult(meetingRecords)); } var tcs = new TaskCallback <List <MeetingRecord> >("GetMeetingRecords"); if (_meetingManager.TaskCallbacks.ContainsKey(tcs.Name)) { _meetingManager.TaskCallbacks.Remove(tcs.Name); } _meetingManager.TaskCallbacks.Add(tcs.Name, tcs); int result = MeetingAgent.GetMeetingList(); if (result != 0) { return(Task.FromResult(meetingRecords)); } return(tcs.Task); }
public Task <ReturnMessage> Start(string imei) { if (TaskCallbacks.ContainsKey("Start")) { return(Task.FromResult(MessageManager.ServerStartingMessage)); } if (IsServierStarted) { return(Task.FromResult(MessageManager.ServerAlreadyStarted)); } // var serverIP = GlobalData.Instance.ConfigManager.ServerInfo.ServerIp; lock (SyncRoot) { var tcs = new TaskCallback <ReturnMessage>("Start"); TaskCallbacks.Add(tcs.Name, tcs); // Log.Logger.Debug(serverIP); Log.Logger.Debug($"任务名称{tcs.Name}"); if (_pFuncCallBack == null) { _pFuncCallBack = CallbackHandler; } int result = MeetingAgent.Start2(_pFuncCallBack, imei, "114.112.74.10"); if (result != 0) { return(Task.FromResult(MessageManager.FailedToStartServer)); } return(tcs.Task); } }
public Task <ReturnMessage> StopRecord() { Task <ReturnMessage> checkTask = _meetingManager.CheckMeetingServerStatus(); if (checkTask != null) { return(checkTask); } var tcs = new TaskCallback <ReturnMessage>("StopRecord"); if (_meetingManager.TaskCallbacks.ContainsKey(tcs.Name)) { _meetingManager.TaskCallbacks.Remove(tcs.Name); } _meetingManager.TaskCallbacks.Add(tcs.Name, tcs); var result = MeetingAgent.StopRecord(); if (result != 0) { return(Task.FromResult(MessageManager.FailedToStopRecord)); } return(tcs.Task); }
public Task <ReturnMessage> SetDoubleScreenRender(string phoneId, int mediaType, int isRenderOnDoubleScreen, IntPtr displayWindowIntPtr) { Task <ReturnMessage> checkTask = _meetingManager.CheckMeetingServerStatus(); if (checkTask != null) { return(checkTask); } var tcs = new TaskCallback <ReturnMessage>("SetDoubleScreenRender"); if (_meetingManager.TaskCallbacks.ContainsKey(tcs.Name)) { _meetingManager.TaskCallbacks.Remove(tcs.Name); } _meetingManager.TaskCallbacks.Add(tcs.Name, tcs); Log.Logger.Debug($"双屏回调参数{phoneId}-{mediaType}-{isRenderOnDoubleScreen}-{displayWindowIntPtr}"); int result = MeetingAgent.SetDoubleScreenRender(phoneId, mediaType, isRenderOnDoubleScreen, displayWindowIntPtr); if (result != 0) { return(Task.FromResult(MessageManager.SetDoubleScreen)); } return(tcs.Task); }
public Task <ReturnMessage> SetDefaultCamera(int cameraType, string cameraName) { Task <ReturnMessage> checkTask = _meetingManager.CheckMeetingServerStatus(); if (checkTask != null) { return(checkTask); } var tcs = new TaskCallback <ReturnMessage>("SetDefaultCamera"); if (_meetingManager.TaskCallbacks.ContainsKey(tcs.Name)) { _meetingManager.TaskCallbacks.Remove(tcs.Name); } _meetingManager.TaskCallbacks.Add(tcs.Name, tcs); var result = MeetingAgent.SetDefaultCamera(cameraType, cameraName); if (result != 0) { return(Task.FromResult(MessageManager.SetDefaultCameraErrorMessage)); } return(tcs.Task); }
public Task <ReturnMessage> CreateMeeting(Attendee[] attendees) { Task <ReturnMessage> checkTask = _meetingManager.CheckMeetingServerStatus(); if (checkTask != null) { return(checkTask); } var tcs = new TaskCallback <ReturnMessage>("CreateMeeting"); if (_meetingManager.TaskCallbacks.ContainsKey(tcs.Name)) { _meetingManager.TaskCallbacks.Remove(tcs.Name); } _meetingManager.TaskCallbacks.Add(tcs.Name, tcs); List <ContactInfo> contactInfos = new List <ContactInfo>(); foreach (var attendee in attendees) { ContactInfo newContactInfo = new ContactInfo() { m_szDisplayName = attendee.Name, m_szPhoneId = attendee.Id }; contactInfos.Add(newContactInfo); } int result = MeetingAgent.CreateMeeting(contactInfos.ToArray(), contactInfos.Count); if (result != 0) { Task <ReturnMessage> resulTask; switch (result) { case 13: resulTask = Task.FromResult(MessageManager.CameraNotSet); break; case 14: resulTask = Task.FromResult(MessageManager.MicrophoneNotSet); break; case 15: case -1009: resulTask = Task.FromResult(MessageManager.SpeakerNotSet); break; default: resulTask = Task.FromResult(MessageManager.FailedToCreateMeeting); break; } return(resulTask); } return(tcs.Task); }
public Task <ReturnMessage> QueryMeetingExist(int meetingId) { Task <ReturnMessage> checkTask = _meetingManager.CheckMeetingServerStatus(); if (checkTask != null) { return(checkTask); } var tcs = new TaskCallback <ReturnMessage>("QueryMeetingExist"); if (_meetingManager.TaskCallbacks.ContainsKey(tcs.Name)) { _meetingManager.TaskCallbacks.Remove(tcs.Name); } _meetingManager.TaskCallbacks.Add(tcs.Name, tcs); var result = MeetingAgent.QueryMeetingExist(meetingId); if (result != 0) { return(Task.FromResult(MessageManager.FailedToQueryMeeting)); } return(tcs.Task); }
public void SetCameraResolution(int cameraType, int width, int height) { if (_meetingManager.IsServierStarted) { int result = MeetingAgent.SetVideoCapResolution(cameraType, width, height); Log.Logger.Debug($"SetCameraResolution({cameraType},{width},{height}) result:{result}"); } }
public void SetAudioSampleRate(int sampleRate) { if (_meetingManager.IsServierStarted) { int result = MeetingAgent.SetAudioCapSampleRate(sampleRate); Log.Logger.Debug($"SetAudioSampleRate({sampleRate}) result:{result}"); } }
public void SetAudioBitrate(int bitrate) { if (_meetingManager.IsServierStarted) { int result = MeetingAgent.SetAudioCapBitRate(bitrate); Log.Logger.Debug($"SetAudioBitrate({bitrate}) result:{result}"); } }
public void SetVideoBitrate(int cameraType, int bitrate) { if (_meetingManager.IsServierStarted) { int result = MeetingAgent.SetVideoCapBitRate(cameraType, bitrate); Log.Logger.Debug($"SetVideoBitrate({cameraType},{bitrate}) result:{result}"); } }
public void SetDefaultDevice(int deviceType, string deviceName) { if (_meetingManager.IsServierStarted) { int result = MeetingAgent.SetDefaultDevice(deviceType, deviceName); Log.Logger.Debug($"SetDefaultDevice({deviceType},{deviceName}) result:{result}"); } }
public List <Attendee> GetAttendees() { List <Attendee> attendees = new List <Attendee>(); var participantsPtr = IntPtr.Zero; if (!_meetingManager.IsServierStarted) { return(attendees); } try { int maxParticipantCount = 100, getParticipantCount = 0; var participantByte = Marshal.SizeOf(typeof(ParticipantInfo)); var maxParticipantBytes = participantByte * maxParticipantCount; participantsPtr = Marshal.AllocHGlobal(maxParticipantBytes); var result = MeetingAgent.GetParticipantsEx(participantsPtr, ref getParticipantCount, maxParticipantCount); if (result != 0) { } var participants = new List <ParticipantInfo>(); for (var i = 0; i < getParticipantCount; i++) { var pointer = new IntPtr(participantsPtr.ToInt64() + participantByte * i); var participant = (ParticipantInfo)Marshal.PtrToStructure(pointer, typeof(ParticipantInfo)); participants.Add(participant); } participants.ForEach(p => { attendees.Add(new Attendee() { Id = p.m_contactInfo.m_szPhoneId, Name = p.m_contactInfo.m_szDisplayName, IsSpeaking = p.m_bIsSpeaking == 1 }); }); return(attendees); } catch (Exception ex) { Log.Logger.Error($"GetAttendees() excpetion:{ex}"); return(attendees); } finally { if (participantsPtr != IntPtr.Zero) { Marshal.FreeHGlobal(participantsPtr); } } }
public Task <ReturnMessage> SetRecordDirectory(string recordDir) { int result = MeetingAgent.SetRecordDirectory(recordDir); if (result != 0) { return(Task.FromResult(MessageManager.FailedToSetRecordDirectory)); } return(Task.FromResult(ReturnMessage.GenerateMessage(""))); }
public Task <ReturnMessage> StartLiveStream(LiveParameter liveParameter, VideoStreamInfo[] videoStreamInfos, int count) { var checkTask = _meetingManager.CheckMeetingServerStatus(); if (checkTask != null) { return(checkTask); } var tcs = new TaskCallback <ReturnMessage>("StartLiveStream"); if (_meetingManager.TaskCallbacks.ContainsKey(tcs.Name)) { _meetingManager.TaskCallbacks.Remove(tcs.Name); } _meetingManager.TaskCallbacks.Add(tcs.Name, tcs); var liveParam = new LiveParam() { m_nAudioBitrate = 64, m_nBitsPerSample = 16, m_nChannels = 1, m_nHeight = liveParameter.Height, m_nIsLive = 1, m_nIsRecord = 0, m_nSampleRate = 8000, m_nVideoBitrate = liveParameter.VideoBitrate, m_nWidth = liveParameter.Width, m_sRecordFilePath = liveParameter.RecordFilePath, // m_url1 = "http://gslb.butel.com/live/live.butel.com/3a9d", m_url1 = liveParameter.Url1, m_url2 = liveParameter.Url2 }; var liveVideoStreamInfos = new List <LiveVideoStreamInfo>(); foreach (var videoStreamInfo in videoStreamInfos) { liveVideoStreamInfos.Add(new LiveVideoStreamInfo() { Handle = videoStreamInfo.Handle, Height = videoStreamInfo.Height, Width = videoStreamInfo.Width, XLocation = videoStreamInfo.X, YLocation = videoStreamInfo.Y }); } var result = MeetingAgent.StartLiveStream(liveParam, liveVideoStreamInfos.ToArray(), liveVideoStreamInfos.Count); return(result != 0 ? Task.FromResult(MessageManager.FailedToStartLiveStream) : tcs.Task); }
public Device[] GetDevices(int deviceType) { if (!_meetingManager.IsServierStarted) { return(Device.EmptyDevices); } var deviceListPointer = IntPtr.Zero; try { int maxDeviceCount = 10, getDeviceCount = 0; var deviceInfoByte = Marshal.SizeOf(typeof(DeviceInfo)); var maxDeviceBytes = deviceInfoByte * maxDeviceCount; deviceListPointer = Marshal.AllocHGlobal(maxDeviceBytes); var result = MeetingAgent.GetDeviceList(deviceType, deviceListPointer, maxDeviceCount, ref getDeviceCount); if (result != 0) { return(Device.EmptyDevices); } Device[] devices = new Device[getDeviceCount]; for (var i = 0; i < getDeviceCount; i++) { var pointer = (IntPtr)(deviceListPointer.ToInt64() + i * deviceInfoByte); DeviceInfo deviceInfo = (DeviceInfo)Marshal.PtrToStructure(pointer, typeof(DeviceInfo)); devices[i] = new Device() { IsDefault = deviceInfo.m_isDefault == 1, Name = deviceInfo.m_szDevName }; } return(devices); } catch (Exception ex) { Log.Logger.Error($"GetDevices({deviceType}) exception:{ex}"); return(Device.EmptyDevices); } finally { if (deviceListPointer != IntPtr.Zero) { Marshal.FreeHGlobal(deviceListPointer); } } }
public bool IsSharedDocOpened() { Task <ReturnMessage> checkTask = _meetingManager.CheckMeetingServerStatus(); if (checkTask != null) { return(false); } int result = MeetingAgent.IsShareDocOpened(); return(result != 0); }
public Task <ReturnMessage> CloseQosView() { Task <ReturnMessage> checkTask = CheckMeetingServerStatus(); if (checkTask != null) { return(checkTask); } int result = MeetingAgent.CloseQosView(); if (result != 0) { return(Task.FromResult(MessageManager.CloseQosFailure)); } return(Task.FromResult(ReturnMessage.GenerateMessage(""))); }
public Task <ReturnMessage> StartRecord(string fileName, VideoStreamInfo[] videoStreamInfos, int count) { Task <ReturnMessage> checkTask = _meetingManager.CheckMeetingServerStatus(); if (checkTask != null) { return(checkTask); } var tcs = new TaskCallback <ReturnMessage>("StartRecord"); if (_meetingManager.TaskCallbacks.ContainsKey(tcs.Name)) { _meetingManager.TaskCallbacks.Remove(tcs.Name); } _meetingManager.TaskCallbacks.Add(tcs.Name, tcs); List <LiveVideoStreamInfo> liveVideoStreamInfos = new List <LiveVideoStreamInfo>(); foreach (var videoStreamInfo in videoStreamInfos) { liveVideoStreamInfos.Add(new LiveVideoStreamInfo() { Handle = videoStreamInfo.Handle, Height = videoStreamInfo.Height, Width = videoStreamInfo.Width, XLocation = videoStreamInfo.X, YLocation = videoStreamInfo.Y }); } var result = MeetingAgent.StartRecord(fileName, liveVideoStreamInfos.ToArray(), liveVideoStreamInfos.Count); if (result != 0) { return(Task.FromResult(MessageManager.FailedToStartRecord)); } return(tcs.Task); }
public Task <ReturnMessage> StartShareDoc() { Task <ReturnMessage> checkTask = _meetingManager.CheckMeetingServerStatus(); if (checkTask != null) { return(checkTask); } var tcs = new TaskCallback <ReturnMessage>("StartShareDoc"); if (_meetingManager.TaskCallbacks.ContainsKey(tcs.Name)) { _meetingManager.TaskCallbacks.Remove(tcs.Name); } _meetingManager.TaskCallbacks.Add(tcs.Name, tcs); var result = MeetingAgent.StartShareDoc(); if (result != 0) { ReturnMessage returnMessage; switch (result) { case -1006: returnMessage = MessageManager.DocVideoNotSet; break; case -1007: returnMessage = MessageManager.DocAudioNotSet; break; default: returnMessage = MessageManager.FailedToStartShareDoc; break; } return(Task.FromResult(returnMessage)); } return(tcs.Task); }
public Task <ReturnMessage> SetRecordParameter(RecordParameter recordParameter) { Task <ReturnMessage> checkTask = _meetingManager.CheckMeetingServerStatus(); if (checkTask != null) { return(checkTask); } var tcs = new TaskCallback <ReturnMessage>("SetRecordParameter"); if (_meetingManager.TaskCallbacks.ContainsKey(tcs.Name)) { _meetingManager.TaskCallbacks.Remove(tcs.Name); } _meetingManager.TaskCallbacks.Add(tcs.Name, tcs); RecordParam recordParam = new RecordParam() { AudioBitrate = recordParameter.AudioBitrate, BitsPerSample = recordParameter.BitsPerSample, Channels = recordParameter.Channels, Height = recordParameter.Height, SampleRate = recordParameter.SampleRate, VideoBitrate = recordParameter.VideoBitrate, Width = recordParameter.Width }; var result = MeetingAgent.SetRecordParam(recordParam); if (result != 0) { return(Task.FromResult(MessageManager.FailedToSetRecordParameter)); } return(tcs.Task); }
public Task <ReturnMessage> InviteParticipants(Attendee[] attendees) { Task <ReturnMessage> checkTask = _meetingManager.CheckMeetingServerStatus(); if (checkTask != null) { return(checkTask); } var tcs = new TaskCallback <ReturnMessage>("InviteParticipants"); if (_meetingManager.TaskCallbacks.ContainsKey(tcs.Name)) { _meetingManager.TaskCallbacks.Remove(tcs.Name); } _meetingManager.TaskCallbacks.Add(tcs.Name, tcs); List <ContactInfo> contactInfos = new List <ContactInfo>(); foreach (var attendee in attendees) { contactInfos.Add(new ContactInfo() { m_szDisplayName = attendee.Name, m_szPhoneId = attendee.Id }); } var result = MeetingAgent.InviteParticipants(_meetingManager.CurrentMeetingId, contactInfos.ToArray(), contactInfos.Count); if (result != 0) { return(Task.FromResult(MessageManager.FailedToInviteParticipants)); } return(tcs.Task); }
public Camera GetCameraParameters(string cameraName) { var cameraDeviceInfoPtr = IntPtr.Zero; Camera camera = new Camera() { CameraParameters = new List <CameraParameter>() }; try { var cameraInfoByte = Marshal.SizeOf(typeof(VideoDeviceInfo)); cameraDeviceInfoPtr = Marshal.AllocHGlobal(cameraInfoByte); var result = MeetingAgent.GetCameraInfo(cameraName, cameraDeviceInfoPtr); var pointer = new IntPtr(cameraDeviceInfoPtr.ToInt64()); var cameraInfo = (VideoDeviceInfo)Marshal.PtrToStructure(pointer, typeof(VideoDeviceInfo)); camera.Name = cameraInfo.Name; for (int i = 0; i < cameraInfo.FormatCount; i++) { VideoFormat videoFormat = cameraInfo.Formats[i]; CameraParameter cameraParameter = new CameraParameter() { ColorSpace = videoFormat.ColorSpace.ToString(), Fps = new List <int>(), VideSizes = new List <Size>() }; for (int j = 0; j < videoFormat.sizeCount; j++) { VideoSize videoSize = videoFormat.VideoSizes[j]; cameraParameter.VideSizes.Add(new Size() { Width = videoSize.Width, Height = videoSize.Height }); } for (int k = 0; k < videoFormat.fpsCount; k++) { cameraParameter.Fps.Add(videoFormat.Fps[k]); } camera.CameraParameters.Add(cameraParameter); } } catch (Exception ex) { Log.Error($"GetCameraParameters({cameraName}) exception:{ex}"); } finally { if (cameraDeviceInfoPtr != IntPtr.Zero) { Marshal.FreeHGlobal(cameraDeviceInfoPtr); } } return(camera); }
public void Stop() { int result = MeetingAgent.Stop(); IsServierStarted = result != 0; }