/// <summary> /// Initialisiert den Descrambler /// </summary> private void Initialize() { if (_Algo != null) { return; } try { _Algo = new DvbCsa(); // initial DVBCSA. } catch (Exception ex) { LogProvider.Exception(cLogSection, Message.DescrCsaFailed, ex); _Algo = null; // im Fehlerfall. Fehlt ffdecsa.dll? } }
/// <summary> /// Setzt den Descrambler-Modus /// </summary> /// <param name="algo">Zu verwendender Algorithmus</param> /// <param name="mode">Betriebsmodus des Algorithmus, wird für DVB-CSA ignoriert</param> public void SetDescramblerMode(DescramblerAlgo algo, DescramblerMode mode) { if (_Disposed) { throw new ObjectDisposedException(GetType().Name); } Type t = null; lock (this) { if (_Algo != null) { t = _Algo.GetType(); } try { switch (algo) { case DescramblerAlgo.DvbCsa: if (t != typeof(DvbCsa)) { if (_Algo != null) { _Algo.Dispose(); } _Algo = new DvbCsa(); } break; case DescramblerAlgo.Des: if (t != typeof(Des)) { if (_Algo != null) { _Algo.Dispose(); } _Algo = new Des(); } break; case DescramblerAlgo.Aes128: if (t != typeof(Aes128)) { if (_Algo != null) { _Algo.Dispose(); } _Algo = new Aes128(); } break; } _Algo.SetDescramblerMode(mode); } catch (Exception ex) { LogProvider.Exception(cLogSection, Message.DescrAlgoSwitchFailed, ex); } } }