public void Evaluate(int SpreadMax) { if (FInRefresh[0] || FInFlags.IsChanged || firstRun) { firstRun = false; FOutStatus.SliceCount = 1; try { _BMDVideoOutputFlags flags = _BMDVideoOutputFlags.bmdVideoOutputFlagDefault; for (int i = 0; i < FInFlags.SliceCount; i++) { if (i == 0) flags = FInFlags[i]; else flags |= FInFlags[i]; } ModeRegister.Singleton.Refresh(flags); string firstKey = ModeRegister.Singleton.Modes.Keys.First(); EnumManager.UpdateEnum("DeckLinkOutputMode", firstKey, ModeRegister.Singleton.EnumStrings); FOutStatus[0] = "OK"; } catch(Exception e) { FOutStatus[0] = e.Message; } } if (FInMode.IsChanged) { FOutMode.SliceCount = SpreadMax; FOutWidth.SliceCount = SpreadMax; FOutHeight.SliceCount = SpreadMax; FOutFrameRate.SliceCount = SpreadMax; FOutStatus.SliceCount = SpreadMax; for (int slice = 0; slice < SpreadMax; slice++) { try { var modes = ModeRegister.Singleton.Modes; var selection = FInMode[slice]; if (!modes.ContainsKey(selection.Name)) throw (new Exception("No valid mode selected (" + selection.Name + ")")); var mode = modes[selection.Name]; FOutMode[slice] = new ModeRegister.ModeIndex(selection.Name); FOutWidth[slice] = mode.Width; FOutHeight[slice] = mode.Height; FOutFrameRate[slice] = mode.FrameRate; FOutStatus[slice] = "OK"; } catch (Exception e) { FOutStatus[slice] = e.Message; } } } }
public void Evaluate(int SpreadMax) { if (FInRefresh[0] || FInFlags.IsChanged || firstRun) { firstRun = false; FOutStatus.SliceCount = 1; try { _BMDVideoOutputFlags flags = _BMDVideoOutputFlags.bmdVideoOutputFlagDefault; for (int i = 0; i < FInFlags.SliceCount; i++) { if (i == 0) { flags = FInFlags[i]; } else { flags |= FInFlags[i]; } } ModeRegister.Singleton.Refresh(flags); string firstKey = ModeRegister.Singleton.Modes.Keys.First(); EnumManager.UpdateEnum("DeckLinkOutputMode", firstKey, ModeRegister.Singleton.EnumStrings); FOutStatus[0] = "OK"; } catch (Exception e) { FOutStatus[0] = e.Message; } } if (FInMode.IsChanged) { FOutMode.SliceCount = SpreadMax; FOutWidth.SliceCount = SpreadMax; FOutHeight.SliceCount = SpreadMax; FOutFrameRate.SliceCount = SpreadMax; FOutStatus.SliceCount = SpreadMax; for (int slice = 0; slice < SpreadMax; slice++) { try { var modes = ModeRegister.Singleton.Modes; var selection = FInMode[slice]; if (!modes.ContainsKey(selection.Name)) { throw (new Exception("No valid mode selected (" + selection.Name + ")")); } var mode = modes[selection.Name]; FOutMode[slice] = new ModeRegister.ModeIndex(selection.Name); FOutWidth[slice] = mode.Width; FOutHeight[slice] = mode.Height; FOutFrameRate[slice] = mode.FrameRate; FOutStatus[slice] = "OK"; } catch (Exception e) { FOutStatus[slice] = e.Message; } } } }