/// <summary>
        /// Erzeugt eine neue Zugriffsinstanz.
        /// </summary>
        /// <param name="main">Die zugehörige Anwendung.</param>
        /// <param name="replayPath">Pfad zu einer VCR.NET Aufzeichnungsdatei.</param>
        public VCRAdaptor(IViewerSite main, string replayPath)
            : base(main)
        {
            // Connect to alternate interfaces
            ChannelInfo = (IChannelInfo)main;
            StreamInfo  = (IStreamInfo)main;

            // Remember
            m_Profile = RemoteInfo.VCRProfile;

            // Use default
            if (string.IsNullOrEmpty(m_Profile))
            {
                m_Profile = "*";
            }

            // Construct Url
            Uri uri = RemoteInfo.ServerUri;

            // Connect to stream
            Connect(StreamInfo.BroadcastIP, StreamInfo.BroadcastPort, uri.Host);

            // Check startup mode
            if (string.IsNullOrEmpty(replayPath))
            {
                // Special if LIVE is active
                var current = VCRNETRestProxy.GetFirstActivityForProfile(EndPoint, Profile);
                if (current != null)
                {
                    if (!current.IsActive)
                    {
                        current = null;
                    }
                    else if ("LIVE".Equals(current.name))
                    {
                        current = null;
                    }
                }

                // Start correct access module
                if (current == null)
                {
                    StartLIVE(true);
                }
                else
                {
                    StartWatch(null, true);
                }
            }
            else
            {
                // Start remote file replay
                StartReplay(replayPath, null, null, true);
            }
        }
        public ProgramSettings( IViewerSite viewer )
        {
            // Remember
            m_Viewer = viewer;

            // Load picture parameters
            if (null != m_Viewer) m_Initial = m_Viewer.PictureParameters;

            // Set up self
            InitializeComponent();
        }
        /// <summary>
        /// Erzeugt eine neue Zugriffsinstanz.
        /// </summary>
        /// <param name="main">Die zugehörige Anwendung.</param>
        /// <param name="path">Voller Pfad zu einer Datei.</param>
        public FileAdaptor( IViewerSite main, string path )
            : base( main )
        {
            // Connect to file player
            SetAccessor( new FileAccessor( path ) );

            // Finished
            OnConnected();

            // Configure keys
            RegisterReplayKeys( main, this );
        }
        /// <summary>
        /// Erzeugt eine neue Zugriffsinstanz.
        /// </summary>
        /// <param name="main">Die zugehörige Anwendung.</param>
        /// <param name="endpoint">Eine TCP/IP Adresse, an der ein
        /// Transport Stream entgegen genommen werden kann.</param>
        public SlaveAdaptor( IViewerSite main, string endpoint )
            : base( main )
        {
            // Split
            string[] parts = endpoint.Split( ':' );

            // Connect to stream
            Connect( parts[0], ushort.Parse( parts[1] ), null );

            // No control needed
            DisconnectWaiter();
        }
        /// <summary>
        /// Erzeugt eine neue Zugriffsinstanz.
        /// </summary>
        /// <param name="main">Die zugehörige Anwendung.</param>
        /// <param name="endpoint">Eine TCP/IP Adresse, an der ein
        /// Transport Stream entgegen genommen werden kann.</param>
        public SlaveAdaptor(IViewerSite main, string endpoint)
            : base(main)
        {
            // Split
            string[] parts = endpoint.Split(':');

            // Connect to stream
            Connect(parts[0], ushort.Parse(parts[1]), null);

            // No control needed
            DisconnectWaiter();
        }
        /// <summary>
        /// Zeigt die Konfiguration der Senderverwaltung, nachdem der Vollbildmodus
        /// deaktiviert wurde.
        /// </summary>
        private void ShowFavoriteSettings()
        {
            // Show cursor
            using (ShowCursor())
            {
                // Attach to viewer
                IViewerSite viewer = (IViewerSite)theViewer;

                // Show configuration dialog
                viewer.FavoriteManager.ShowConfiguration(this);
            }
        }
        /// <summary>
        /// Erzeugt eine neue Zugriffsinstanz.
        /// </summary>
        /// <param name="main">Die zugehörige Anwendung.</param>
        /// <param name="path">Voller Pfad zu einer Datei.</param>
        public FileAdaptor(IViewerSite main, string path)
            : base(main)
        {
            // Connect to file player
            SetAccessor(new FileAccessor(path));

            // Finished
            OnConnected();

            // Configure keys
            RegisterReplayKeys(main, this);
        }
        public ProgramSettings(IViewerSite viewer)
        {
            // Remember
            m_Viewer = viewer;

            // Load picture parameters
            if (null != m_Viewer)
            {
                m_Initial = m_Viewer.PictureParameters;
            }

            // Set up self
            InitializeComponent();
        }
        /// <summary>
        /// Erzeugt eine neue Zugriffsinstanz.
        /// </summary>
        /// <param name="main">Die zugehörige Anwendung.</param>
        /// <param name="streamIndex">Teilaufzeichnung, die betrachtet werden soll.</param>
        /// <param name="timeshift">Gesetzt, wenn der Timeshift Modus aktiviert werden soll.</param>
        public VCRAdaptor(IViewerSite main, int streamIndex, bool timeshift)
            : base(main)
        {
            // Connect to alternate interfaces
            ChannelInfo = (IChannelInfo)main;
            StreamInfo  = (IStreamInfo)main;

            // Remember
            m_Profile = RemoteInfo.VCRProfile;

            // Use default
            if (string.IsNullOrEmpty(m_Profile))
            {
                m_Profile = "*";
            }

            // Construct Url
            var uri = RemoteInfo.ServerUri;

            // Connect to stream
            Connect(StreamInfo.BroadcastIP, StreamInfo.BroadcastPort, uri.Host);

            // Find all current activities
            var activities = VCRNETRestProxy.GetActivitiesForProfile(EndPoint, Profile);

            if (activities.Count < 1)
            {
                StartLIVE(true);
            }
            else
            {
                // Find the activity
                var current = activities.FirstOrDefault(activity => activity.streamIndex == streamIndex);
                if (current == null)
                {
                    StartWatch(null, true);
                }
                else if (timeshift && string.IsNullOrEmpty(StreamInfo.BroadcastIP) && (current.files.Length > 0))
                {
                    StartReplay(current.files[0], current.name, current, true);
                }
                else
                {
                    StartWatch(string.Format("dvbnet:{0}", streamIndex), true);
                }
            }
        }
Beispiel #10
0
        /// <summary>
        /// Erzeugte eine neue Zugriffsinstanz.
        /// </summary>
        /// <param name="profile">Zu verwendende DVB.NET Hardware Abstraktion.</param>
        /// <param name="main">Zugehörige Anwendung.</param>
        public DeviceAdpator(Profile profile, IViewerSite main)
            : base(main)
        {
            // Remember
            Profile = profile;

            // Attach to the device
            Device = HardwareManager.OpenHardware(Profile);

            // Create
            m_TTXConnector = new TTXStreamConsumer(this);

            // Load alternate interfaces
            GeneralInfo = (IGeneralInfo)main;
            ChannelInfo = (IChannelInfo)main;
            StreamInfo  = (IStreamInfo)main;
            LocalInfo   = (ILocalInfo)main;

            // Initialize core - DirectShow Graph feed directly from a Transport Stream
            SetAccessor(new AudioVideoAccessor());
        }
 /// <summary>
 /// Konfiguriert die Tastatur für das Abspielen einer Datei.
 /// </summary>
 /// <param name="viewer">Die zugehörige Anzeigeeinheit.</param>
 /// <param name="replay">Die Komponente, die für das Auslesen der Datei zuständig ist.</param>
 public static void RegisterReplayKeys(IViewerSite viewer, IFileReplay replay)
 {
     // Register all keys to move in file
     viewer.SetKeyHandler(Keys.Subtract, () => replay.MovePosition(-0.001));
     viewer.SetKeyHandler(Keys.PageDown, () => replay.MovePosition(-0.01));
     viewer.SetKeyHandler(Keys.PageUp, () => replay.MovePosition(+0.01));
     viewer.SetKeyHandler((Keys)189, () => replay.MovePosition(-0.001));
     viewer.SetKeyHandler((Keys)187, () => replay.MovePosition(+0.001));
     viewer.SetKeyHandler(Keys.Add, () => replay.MovePosition(+0.001));
     viewer.SetKeyHandler(Keys.F3, () => replay.MovePosition(0));
     viewer.SetKeyHandler(Keys.D0, () => replay.Position = 0.0);
     viewer.SetKeyHandler(Keys.D1, () => replay.Position = 0.1);
     viewer.SetKeyHandler(Keys.D2, () => replay.Position = 0.2);
     viewer.SetKeyHandler(Keys.D3, () => replay.Position = 0.3);
     viewer.SetKeyHandler(Keys.D4, () => replay.Position = 0.4);
     viewer.SetKeyHandler(Keys.D5, () => replay.Position = 0.5);
     viewer.SetKeyHandler(Keys.D6, () => replay.Position = 0.6);
     viewer.SetKeyHandler(Keys.D7, () => replay.Position = 0.7);
     viewer.SetKeyHandler(Keys.D8, () => replay.Position = 0.8);
     viewer.SetKeyHandler(Keys.D9, () => replay.Position = 0.9);
 }
        /// <summary>
        /// Erzeugt as Hauptfenster.
        /// </summary>
        /// <param name="profile">Die zu verwendene lokale DVB.NET Hardware.</param>
        /// <param name="mode">Operationsmodus der Anwendung.</param>
        /// <param name="args">Parameter zum Operationsmodus der Anwendung.</param>
        public ViewerMain(Profile profile, StartupModes mode, params string[] args)
        {
            // Remember
            m_Arguments = args;
            Profile     = profile;
            m_Mode      = mode;

            // Create components
            InitializeComponent();

            // Attach to viewer
            IViewerSite viewer = (IViewerSite)theViewer;

            // Register additional keys - to be kept we must do this before SetSite fixes the map
            viewer.SetKeyHandler(Keys.J, ProcessFullScreen);
            viewer.SetKeyHandler(Keys.End, Close);

            // Connect viewer control to configuration
            theViewer.SetSite(this);

            // Prepare to show
            SetBounds();
        }
        /// <summary>
        /// Lädt die Liste der Konfigurationsoptionen neu.
        /// </summary>
        public void ResetOptions()
        {
            // Attach to viewer
            IViewerSite viewer = (IViewerSite)theViewer;

            // Wipe out
            viewer.ResetOptions();

            // Fill configuration
            viewer.AddOption(new OptionDisplay(Properties.Resources.OptionGlobalSettings, () => ShowGlobalOptions(viewer)));
            viewer.AddOption(new OptionDisplay(Properties.Resources.OptionFavorites, ShowFavoriteSettings));

            // Be safe
            try
            {
                // Fill conditional configuration
                viewer.FillOptions();
            }
            catch (Exception ex)
            {
                // Report
                viewer.ShowMessage(ex.Message, Properties.Resources.ErrorTitle, false);
            }
        }
Beispiel #14
0
        /// <summary>
        /// Erzeugt eine neue Zugriffsinstanz.
        /// </summary>
        /// <param name="main">Die zugehörige Anwendung.</param>
        /// <param name="streamIndex">Teilaufzeichnung, die betrachtet werden soll.</param>
        /// <param name="timeshift">Gesetzt, wenn der Timeshift Modus aktiviert werden soll.</param>
        public VCRAdaptor( IViewerSite main, int streamIndex, bool timeshift )
            : base( main )
        {
            // Connect to alternate interfaces
            ChannelInfo = (IChannelInfo) main;
            StreamInfo = (IStreamInfo) main;

            // Remember
            m_Profile = RemoteInfo.VCRProfile;

            // Use default
            if (string.IsNullOrEmpty( m_Profile ))
                m_Profile = "*";

            // Construct Url
            var uri = RemoteInfo.ServerUri;

            // Connect to stream
            Connect( StreamInfo.BroadcastIP, StreamInfo.BroadcastPort, uri.Host );

            // Find all current activities
            var activities = VCRNETRestProxy.GetActivitiesForProfile( EndPoint, Profile );
            if (activities.Count < 1)
                StartLIVE( true );
            else
            {
                // Find the activity
                var current = activities.FirstOrDefault( activity => activity.streamIndex == streamIndex );
                if (current == null)
                    StartWatch( null, true );
                else if (timeshift && string.IsNullOrEmpty( StreamInfo.BroadcastIP ) && (current.files.Length > 0))
                    StartReplay( current.files[0], current.name, current, true );
                else
                    StartWatch( string.Format( "dvbnet:{0}", streamIndex ), true );
            }
        }
Beispiel #15
0
 /// <summary>
 /// Erzeugt eine neue Zugriffsinstanz.
 /// </summary>
 /// <param name="main">Die zugehörige Anwendung.</param>
 public TSAdaptor(IViewerSite main)
     : base(main)
 {
 }
Beispiel #16
0
 /// <summary>
 /// Erzeugt eine neue Zugriffsinstanz.
 /// </summary>
 /// <param name="main">Die zugehörige Anwendung.</param>
 protected UDPAdaptor( IViewerSite main )
     : base( main )
 {
     // Alternate interfaces
     RemoteInfo = main as IRemoteInfo;
 }
Beispiel #17
0
 /// <summary>
 /// Erzeugt eine neue Zugriffsinstanz.
 /// </summary>
 /// <param name="main">Die zugehörige Anwendung.</param>
 public TSAdaptor( IViewerSite main )
     : base( main )
 {
 }
Beispiel #18
0
 /// <summary>
 /// Initialisiert eine Verwaltungsinstanz.
 /// </summary>
 /// <param name="main">Zugehörige Anwendung.</param>
 protected Adaptor(IViewerSite main)
 {
     // Remember
     Parent = main;
 }
Beispiel #19
0
        /// <summary>
        /// Erzeugt eine neue Zugriffsinstanz.
        /// </summary>
        /// <param name="main">Die zugehörige Anwendung.</param>
        /// <param name="replayPath">Pfad zu einer VCR.NET Aufzeichnungsdatei.</param>
        public VCRAdaptor( IViewerSite main, string replayPath )
            : base( main )
        {
            // Connect to alternate interfaces
            ChannelInfo = (IChannelInfo) main;
            StreamInfo = (IStreamInfo) main;

            // Remember
            m_Profile = RemoteInfo.VCRProfile;

            // Use default
            if (string.IsNullOrEmpty( m_Profile ))
                m_Profile = "*";

            // Construct Url
            Uri uri = RemoteInfo.ServerUri;

            // Connect to stream
            Connect( StreamInfo.BroadcastIP, StreamInfo.BroadcastPort, uri.Host );

            // Check startup mode
            if (string.IsNullOrEmpty( replayPath ))
            {
                // Special if LIVE is active
                var current = VCRNETRestProxy.GetFirstActivityForProfile( EndPoint, Profile );
                if (current != null)
                    if (!current.IsActive)
                        current = null;
                    else if ("LIVE".Equals( current.name ))
                        current = null;

                // Start correct access module
                if (current == null)
                    StartLIVE( true );
                else
                    StartWatch( null, true );
            }
            else
            {
                // Start remote file replay
                StartReplay( replayPath, null, null, true );
            }
        }
        /// <summary>
        /// Erzeugte eine neue Zugriffsinstanz.
        /// </summary>
        /// <param name="profile">Zu verwendende DVB.NET Hardware Abstraktion.</param>
        /// <param name="main">Zugehörige Anwendung.</param>
        public DeviceAdpator( Profile profile, IViewerSite main )
            : base( main )
        {
            // Remember
            Profile = profile;

            // Attach to the device
            Device = HardwareManager.OpenHardware( Profile );

            // Create
            m_TTXConnector = new TTXStreamConsumer( this );

            // Load alternate interfaces
            GeneralInfo = (IGeneralInfo) main;
            ChannelInfo = (IChannelInfo) main;
            StreamInfo = (IStreamInfo) main;
            LocalInfo = (ILocalInfo) main;

            // Initialize core - DirectShow Graph feed directly from a Transport Stream
            SetAccessor( new AudioVideoAccessor() );
        }
        /// <summary>
        /// Zeigt die Einstellungen der Anwendung an.
        /// </summary>
        /// <param name="viewer">Die zugehörige Darstellungsinstanz.</param>
        private bool ShowGlobalOptions(IViewerSite viewer)
        {
            // Show configuration dialog
            using (ShowCursor())
                using (ProgramSettings dialog = new ProgramSettings(viewer))
                    if (DialogResult.OK == dialog.ShowDialog(this))
                    {
                        // Update
                        Properties.Settings.Default.Save();

                        // Change priority
                        Process.GetCurrentProcess().PriorityClass = Properties.Settings.Default.Priority;

                        // Done on first call
                        if (null == viewer)
                        {
                            return(true);
                        }

                        // Load mode
                        ProgramSettings.ChangeTypes changeType = dialog.ChangeType;

                        // Update
                        if (ProgramSettings.ChangeTypes.Picture == changeType)
                        {
                            if (!viewer.CanRestartGraph)
                            {
                                changeType = ProgramSettings.ChangeTypes.Application;
                            }
                        }

                        // Check mode
                        switch (changeType)
                        {
                        case ProgramSettings.ChangeTypes.Application:
                        {
                            // Report to user
                            MessageBox.Show(this, Properties.Resources.RequireRestart, Properties.Resources.OptionGlobalSettings);

                            // We can do no more
                            break;
                        }

                        case ProgramSettings.ChangeTypes.Picture:
                        {
                            // Switch off OSD
                            IOSDSite osd = (IOSDSite)theViewer;
                            osd.Hide();

                            // Restart picture
                            viewer.Restart();

                            // Done
                            break;
                        }
                        }

                        // Accepted
                        return(true);
                    }

            // Not accepted
            return(false);
        }
Beispiel #22
0
 /// <summary>
 /// Erzeugt eine neue Zugriffsinstanz.
 /// </summary>
 /// <param name="main">Die zugehörige Anwendung.</param>
 public VCRAdaptor( IViewerSite main )
     : this( main, default( string ) )
 {
 }
Beispiel #23
0
        /// <summary>
        /// Zeigt die Einstellungen der Anwendung an.
        /// </summary>
        /// <param name="viewer">Die zugehörige Darstellungsinstanz.</param>
        private bool ShowGlobalOptions( IViewerSite viewer )
        {
            // Show configuration dialog
            using (ShowCursor())
            using (ProgramSettings dialog = new ProgramSettings( viewer ))
                if (DialogResult.OK == dialog.ShowDialog( this ))
                {
                    // Update
                    Properties.Settings.Default.Save();

                    // Change priority
                    Process.GetCurrentProcess().PriorityClass = Properties.Settings.Default.Priority;

                    // Done on first call
                    if (null == viewer) return true;

                    // Load mode
                    ProgramSettings.ChangeTypes changeType = dialog.ChangeType;

                    // Update
                    if (ProgramSettings.ChangeTypes.Picture == changeType)
                        if (!viewer.CanRestartGraph)
                            changeType = ProgramSettings.ChangeTypes.Application;

                    // Check mode
                    switch (changeType)
                    {
                        case ProgramSettings.ChangeTypes.Application:
                            {
                                // Report to user
                                MessageBox.Show( this, Properties.Resources.RequireRestart, Properties.Resources.OptionGlobalSettings );

                                // We can do no more
                                break;
                            }
                        case ProgramSettings.ChangeTypes.Picture:
                            {
                                // Switch off OSD
                                IOSDSite osd = (IOSDSite) theViewer;
                                osd.Hide();

                                // Restart picture
                                viewer.Restart();

                                // Done
                                break;
                            }
                    }

                    // Accepted
                    return true;
                }

            // Not accepted
            return false;
        }
 /// <summary>
 /// Erzeugt eine neue Zugriffsinstanz.
 /// </summary>
 /// <param name="main">Die zugehörige Anwendung.</param>
 protected UDPAdaptor(IViewerSite main)
     : base(main)
 {
     // Alternate interfaces
     RemoteInfo = main as IRemoteInfo;
 }
 /// <summary>
 /// Erzeugt eine neue Zugriffsinstanz.
 /// </summary>
 /// <param name="main">Die zugehörige Anwendung.</param>
 public VCRAdaptor(IViewerSite main)
     : this(main, default(string))
 {
 }
Beispiel #26
0
 /// <summary>
 /// Initialisiert eine Verwaltungsinstanz.
 /// </summary>
 /// <param name="main">Zugehörige Anwendung.</param>
 protected Adaptor( IViewerSite main )
 {
     // Remember
     Parent = main;
 }
Beispiel #27
0
 /// <summary>
 /// Konfiguriert die Tastatur für das Abspielen einer Datei.
 /// </summary>
 /// <param name="viewer">Die zugehörige Anzeigeeinheit.</param>
 /// <param name="replay">Die Komponente, die für das Auslesen der Datei zuständig ist.</param>
 public static void RegisterReplayKeys( IViewerSite viewer, IFileReplay replay )
 {
     // Register all keys to move in file
     viewer.SetKeyHandler( Keys.Subtract, () => replay.MovePosition( -0.001 ) );
     viewer.SetKeyHandler( Keys.PageDown, () => replay.MovePosition( -0.01 ) );
     viewer.SetKeyHandler( Keys.PageUp, () => replay.MovePosition( +0.01 ) );
     viewer.SetKeyHandler( (Keys) 189, () => replay.MovePosition( -0.001 ) );
     viewer.SetKeyHandler( (Keys) 187, () => replay.MovePosition( +0.001 ) );
     viewer.SetKeyHandler( Keys.Add, () => replay.MovePosition( +0.001 ) );
     viewer.SetKeyHandler( Keys.F3, () => replay.MovePosition( 0 ) );
     viewer.SetKeyHandler( Keys.D0, () => replay.Position = 0.0 );
     viewer.SetKeyHandler( Keys.D1, () => replay.Position = 0.1 );
     viewer.SetKeyHandler( Keys.D2, () => replay.Position = 0.2 );
     viewer.SetKeyHandler( Keys.D3, () => replay.Position = 0.3 );
     viewer.SetKeyHandler( Keys.D4, () => replay.Position = 0.4 );
     viewer.SetKeyHandler( Keys.D5, () => replay.Position = 0.5 );
     viewer.SetKeyHandler( Keys.D6, () => replay.Position = 0.6 );
     viewer.SetKeyHandler( Keys.D7, () => replay.Position = 0.7 );
     viewer.SetKeyHandler( Keys.D8, () => replay.Position = 0.8 );
     viewer.SetKeyHandler( Keys.D9, () => replay.Position = 0.9 );
 }