示例#1
0
        /// <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?
            }
        }
示例#2
0
        /// <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);
                }
            }
        }