Esempio n. 1
0
 /// <summary>
 /// 批量设置属性
 /// </summary>
 /// <param name="properties">属性集合</param>
 /// <param name="isPersistence">是否持久化保存</param>
 public void SetProperties(IDictionary <PropertyKey, string> properties, bool isPersistence)
 {
     if (null != properties && properties.Count > 0)
     {
         foreach (var propertyKV in properties)
         {
             SetProperty(propertyKV.Key, propertyKV.Value, false);
         }
         if (isPersistence)
         {
             var errno = PlcmProxy.UpdateConfig();
             if (errno != ErrorNumber.OK)
             {
                 var errMsg = string.Format("更新配置失败,err={0}", errno);
                 log.Error(errMsg);
                 throw new Exception(errMsg);
             }
         }
     }
 }
Esempio n. 2
0
        /// <summary>
        /// SDK初始化
        /// </summary>
        /// <param name="config">配置信息</param>
        private void SDKInit(IDictionary <PropertyKey, string> config)
        {
            var errno = ErrorNumber.OK;

            //注册回调函数
            errno = PlcmProxy.InstallCallback(addEventCallback, dispatchEventsCallback, addLogCallback, addDeviceCallback,
                                              displayMediaStatisticsCallback, displayCallStatisticsCallback, displayCodecCapabilities, addAppCallback);
            if (ErrorNumber.OK != errno)
            {
                var errMsg = "Register callback functions failed. Error number = " + errno;
                log.Error(errMsg);
                throw new Exception(errMsg);
            }
            //预初始化
            errno = PlcmProxy.PreInitialize();
            if (ErrorNumber.OK != errno)
            {
                var msg = "Pre-initialization failed. Error number = " + errno.ToString();
                log.Error(msg);
                throw new Exception(msg);
            }
            var dispName = config[PropertyKey.PLCM_MFW_KVLIST_KEY_DisplayName];

            if (!string.IsNullOrWhiteSpace(dispName))
            {
                config[PropertyKey.PLCM_MFW_KVLIST_KEY_DisplayName] = string.Empty;
            }
            qlConfig.SetProperties(config, false);
            //初始化
            errno = PlcmProxy.Initialize();
            if (ErrorNumber.OK != errno)
            {
                var errMsg = "Initialize failed. Error number = " + errno;
                log.Error(errMsg);
                throw new Exception(errMsg);
            }
            var version = PlcmProxy.GetVersion();

            log.Info("**********************************************************************");
            log.Info("        PLCM QLSDK  App Initialized Successful ( version: " + version + " )");
            log.Info("**********************************************************************");

            errno = PlcmProxy.UpdateConfig();
            if (errno != ErrorNumber.OK)
            {
                var errMsg = string.Format("配置失败, Errno={0}", errno);
                log.Error(errMsg);
                throw new Exception(errMsg);
            }
            errno = PlcmProxy.RegisterClient();
            if (errno != ErrorNumber.OK)
            {
                var errMsg = string.Format("Register failed, Errno={0}", errno);
                log.Error(errMsg);
                throw new Exception(errMsg);
            }
            if (!string.IsNullOrWhiteSpace(dispName))
            {
                qlConfig.SetProperty(PropertyKey.PLCM_MFW_KVLIST_KEY_DisplayName, dispName, true);
            }
            //获取音频输入设备信息
            var errNo = PlcmProxy.GetDevice(DeviceType.AUDIOINPUT);

            if (ErrorNumber.OK != errNo)
            {
                var errMsg = "Get audio input device failed. Error number = " + errNo;
                log.Error(errMsg);
                throw new Exception(errMsg);
            }
            //获取视频输入设备信息
            errNo = PlcmProxy.GetDevice(DeviceType.VIDEOINPUT);
            if (ErrorNumber.OK != errNo)
            {
                var errMsg = "Get video input device failed. Error number = " + errNo;
                log.Error(errMsg);
                throw new Exception(errMsg);
            }
            //获取音频输出设备信息
            errNo = PlcmProxy.GetDevice(DeviceType.AUDIOOUTPUT);
            if (ErrorNumber.OK != errNo)
            {
                var errMsg = "Get audio output device failed. Error number = " + errNo;
                log.Error(errMsg);
                throw new Exception(errMsg);
            }
            //获取显示器信息
            errNo = PlcmProxy.GetDevice(DeviceType.MONITOR);
            if (ErrorNumber.OK != errNo)
            {
                var errMsg = "Get monitor device failed. Error number = " + errNo;
                log.Error(errMsg);
                throw new Exception(errMsg);
            }
            //设置呼叫数自动
            errNo = PlcmProxy.SetRemoteVideoStreamNumber(-1, 0, 0);
            if (ErrorNumber.OK != errNo)
            {
                var errMsg = "SetRemoteVideoStreamNumber failed. Error number = " + errNo;
                log.Error(errMsg);
                throw new Exception(errMsg);
            }
        }
Esempio n. 3
0
        /// <summary>
        /// 设置属性
        /// </summary>
        /// <param name="key">属性名</param>
        /// <param name="value">属性值</param>
        /// <param name="isPersistence">是否持久化保存</param>
        public void SetProperty(PropertyKey key, string value, bool isPersistence)
        {
            log.Info(string.Format(string.Format("SetProperty:{0}={1}", key, value)));
            properties[key] = value;
            if (key <= PropertyKey.PLCM_MFW_KVLIST_KEY_MAXSYS)
            {
                var errno = PlcmProxy.SetProperty(key, value);
                if (errno != ErrorNumber.OK)
                {
                    var errMsg = string.Format("{0}设定失败,err={1}", key, errno);
                    log.Error(errMsg);
                    throw new Exception(errMsg);
                }
                if (isPersistence)
                {
                    errno = PlcmProxy.UpdateConfig();
                    if (errno != ErrorNumber.OK)
                    {
                        var errMsg = string.Format("{0}更新配置失败,err={1}", key, errno);
                        log.Error(errMsg);
                        throw new Exception(errMsg);
                    }
                }
            }
            else
            {
                switch (key)
                {
                case PropertyKey.LocalAddr: break;

                case PropertyKey.CalleeAddr: break;

                case PropertyKey.AUDIO_INPUT_DEVICE:
                {
                    string audioOutput = null;
                    if (properties.ContainsKey(PropertyKey.AUDIO_OUTPUT_DEVICE))
                    {
                        audioOutput = properties[PropertyKey.AUDIO_OUTPUT_DEVICE];
                    }
                    PlcmProxy.SetAudioDevice(value, audioOutput);
                }
                break;

                case PropertyKey.AUDIO_OUTPUT_DEVICE:
                {
                    string audioInput = null;
                    if (properties.ContainsKey(PropertyKey.AUDIO_INPUT_DEVICE))
                    {
                        audioInput = properties[PropertyKey.AUDIO_INPUT_DEVICE];
                    }
                    PlcmProxy.SetAudioDevice(audioInput, value);
                    PlcmProxy.SetAudioDeviceForRingtone(value);
                }
                break;

                case PropertyKey.AUDIO_OUTPUT_DEVICE_FOR_RINGTONE:
                {
                }
                break;

                case PropertyKey.VIDEO_INPUT_DEVICE:
                {
                    PlcmProxy.SetVideoDevice(value);
                }
                break;

                case PropertyKey.MONITOR_DEVICE: break;

                /*Sound Effects*/
                case PropertyKey.SOUND_INCOMING: break;

                case PropertyKey.SOUND_CLOSED: break;

                case PropertyKey.SOUND_RINGING: break;

                case PropertyKey.SOUND_HOLD: break;

                //ICE token
                case PropertyKey.ICE_AUTH_TOKEN: break;

                case PropertyKey.StaticImage: {
                    #region StaticImage
                    if (!string.IsNullOrWhiteSpace(value))
                    {
                        var filePath = Path.Combine(Application.StartupPath, value);
                        if (File.Exists(filePath))
                        {
                            var img = new Bitmap(filePath);
                            if (null != img)
                            {
                                int w      = img.Width;
                                int h      = img.Height;
                                var buffer = new byte[w * h * 4];
                                var idx    = 0;
                                for (var row = 0; row < h; row++)
                                {
                                    for (var col = 0; col < w; col++)
                                    {
                                        var color = img.GetPixel(col, row);
                                        //转换为RGBA模式
                                        buffer[idx] = color.R;
                                        idx++;
                                        buffer[idx] = color.G;
                                        idx++;
                                        buffer[idx] = color.B;
                                        idx++;
                                        buffer[idx] = color.A;
                                        idx++;
                                    }
                                }
                                int length = buffer.Length;

                                var intPtrBuffer = IntPtrHelper.IntPtrFromBytes(buffer);
                                var errno        = PlcmProxy.SetStaticImage(intPtrBuffer, length, w, h);
                                if (ErrorNumber.OK != errno)
                                {
                                    var errMsg = "setStaticImage failed,errno=" + errno;
                                    log.Error(errMsg);
                                    //throw new Exception(errMsg);
                                }
                            }
                        }
                    }
                    #endregion
                } break;

                case PropertyKey.LayoutType: break;

                case PropertyKey.CryptoSuiteType: break;

                case PropertyKey.SRTPKey: break;

                case PropertyKey.AuthToken: break;
                }
            }
        }