private void InitPropGrid() { MotionArgs Args = new MotionArgs(); this.pGridCamera.Items.Clear(); this.mItemName = new CustomProperty(Translator.Instance.T("摄像头名称"), this.Camera.Name, false, Translator.Instance.T("摄像头设置"), Translator.Instance.T("为本摄像头分配一个名称"), true); this.pGridCamera.Items.Add(this.mItemName); string sv = ""; if (this.Camera.PlugInVideoSource != null) { sv = this.Camera.PlugInVideoSource.LabelText; } this.mItemStream = new CustomProperty(Translator.Instance.T("视频来源"), sv, false, Translator.Instance.T("摄像头设置"), Translator.Instance.T("设置视频来源"), true); this.mItemStream.ValueMember = "Key"; this.mItemStream.DisplayMember = "Value"; this.mItemStream.Datasource = this.Camera.VideoSourceCollection; //this.mItemStream.SelectedValue = this.Camera.Stream; this.pGridCamera.Items.Add(this.mItemStream); this.mItemCaptureFlag = new CustomProperty(Translator.Instance.T("录像方式"), Args.GetValue(this.Camera.Capture), false, Translator.Instance.T("录像设置"), Translator.Instance.T("设置录像方式"), true); this.mItemCaptureFlag.ValueMember = "Key"; this.mItemCaptureFlag.DisplayMember = "Value"; this.mItemCaptureFlag.Datasource = Args.CAPTUREFLAGS; //this.mItemCaptureFlag.SelectedValue = this.Camera.Capture; this.pGridCamera.Items.Add(this.mItemCaptureFlag); this.mItemCaptureElapse = new CustomProperty(Translator.Instance.T("存储方式"), Args.GetValue(this.Camera.CaptureElapse), false, Translator.Instance.T("录像设置"), Translator.Instance.T("设置录像存储的方式, 你可以选择将录像按照指定的时间段分割存储, 或者连续存储."), true); this.mItemCaptureElapse.ValueMember = "Key"; this.mItemCaptureElapse.DisplayMember = "Value"; this.mItemCaptureElapse.Datasource = Args.CAPTURE_ELAPSE; //this.mItemCaptureElapse.SelectedValue = this.Camera.CaptureElapse; this.pGridCamera.Items.Add(this.mItemCaptureElapse); CodecCollection cc = new CodecCollection(); if (cc.KVs.Count > 0) { string codec = cc.GetValue(this.Camera.Codec, Translator.Instance.T("请指定录像编码格式.")); this.mItemCodec = new CustomProperty(Translator.Instance.T("录像编码格式"), codec, false, Translator.Instance.T("录像设置"), Translator.Instance.T("设置录像采用的编码格式"), true); this.mItemCodec.ValueMember = "Key"; this.mItemCodec.DisplayMember = "Value"; this.mItemCodec.Datasource = cc.KVs; this.mItemCodec.IsDropdownResizable = true; //this.mItemCodec.SelectedValue = this.Camera.Codec; } else { this.mItemCodec = new CustomProperty(Translator.Instance.T("录像编码格式"), Translator.Instance.T("未找到合适的录像编码格式."), false, Translator.Instance.T("录像设置"), Translator.Instance.T("未找到合适的录像编码格式, 您需要安装视频编码驱动."), true); this.mItemCodec.IsReadOnly = true; } this.pGridCamera.Items.Add(this.mItemCodec); this.Camera.PlugIns.PropertyGridItemsInitialization(this.pGridCamera.Items); this.SetVideoSourceItemVisible(true); this.pGridCamera.Refresh(); }
/// <summary> /// Load encoder element /// </summary> /// <param name="encoderConfig"></param> /// <returns></returns> internal static IEncoder LoadEncoder(EncoderElement encoderConfig) { Debug.Assert(encoderConfig != null); // Create encoder IEncoder encoder = null; if (!string.IsNullOrEmpty(encoderConfig.Type)) { encoder = ObjectBuilder.Build <IEncoder>(encoderConfig.Type); } else { // Create default encoder and load all local codec defs encoder = new Encoder(); LoadCodecs(encoder, typeof(Encoder).Assembly, MatchHelper.WildcardToRegex(@"Owasp.Esapi.Codecs.*")); } CodecCollection codecs = encoderConfig.Codecs; // Load codec assemblies foreach (AddinAssemblyElement codecAssembly in codecs.Assemblies) { try { Assembly assembly = Assembly.Load(codecAssembly.Name); Regex typeMatch = MatchHelper.WildcardToRegex(codecAssembly.Types); LoadCodecs(encoder, assembly, typeMatch); } catch (Exception exp) { Esapi.Logger.Warning(LogLevels.WARN, "Failed to load codec assembly", exp); } } // Specific codecs foreach (CodecElement codecElement in codecs) { string failMessage = string.Format("Failed to load codec \"{0}\"", codecElement.Name); try { ICodec codec = AddinBuilder <ICodec> .MakeInstance(codecElement); encoder.AddCodec(codecElement.Name, codec); } catch (Exception exp) { Esapi.Logger.Warning(LogLevels.WARN, failMessage, exp); } } return(encoder); }