Ejemplo n.º 1
0
        public void GrabData(object ParamTo)
        {
            DataGrabArgs ParamToUse = (DataGrabArgs)ParamTo;
            int          ChannelID  = ParamToUse.ChannelID;
            int          Seconds    = ParamToUse.Seconds;
            List <int>   Pids       = ParamToUse.Pids;
            string       Filename   = "Custom_" + ChannelID.ToString() + ".ts";

            Complete = false;
            TvServer server = new TvServer();
            IUser    user   = new User(Filename, false);

            WantedPIDS = Pids;
            TvResult result = default(TvResult);

            //Used to start and ensure we can tune the channel
            result = server.StartTimeShifting(ref user, ChannelID, out _card);

            if ((result == TvResult.Succeeded))
            {
                Thread.Sleep(2000);
                _card.StopTimeShifting();

                result = server.StartTimeShiftingWithCustom(ref user, ChannelID, out _card, Filename, Pids);

                if ((result == TvResult.Succeeded))
                {
                    string NewFile = _card.TimeshiftFolder + "\\" + Filename;
                    TimeStamp = DateTime.Now.AddSeconds(Seconds);
                    ProcessPackets(NewFile);
                    Decoders.Remove(ChannelID);
                }
                else
                {
                    Decoders.Remove(ChannelID);
                    if (OnComplete != null)
                    {
                        OnComplete(true, result.ToString());
                    }
                }
            }
            else
            {
                Decoders.Remove(ChannelID);
                if (OnComplete != null)
                {
                    OnComplete(true, result.ToString());
                }
            }
        }
Ejemplo n.º 2
0
        private void ScanForUsableChannels()
        {
            _abortScanning = false;
            _isScanning    = true;
            NotifyForm dlg = new NotifyForm("Testing all checked tv channels...", "Please be patient...");

            dlg.Show(this);
            dlg.WaitForDisplay();

            // Create tunning objects Server, User and Card
            TvServer    _server = new TvServer();
            IUser       _user   = new User();
            VirtualCard _card;

            foreach (ListViewItem item in mpListView1.Items)
            {
                if (item.Checked == false)
                {
                    continue;                         // do not test "un-checked" channels
                }
                Channel _channel = (Channel)item.Tag; // get channel
                dlg.SetMessage(
                    string.Format("Please be patient...\n\nTesting channel {0} ( {1} of {2} )",
                                  _channel.DisplayName, item.Index + 1, mpListView1.Items.Count));
                Application.DoEvents();
                TvResult result = _server.StartTimeShifting(ref _user, _channel.IdChannel, out _card);
                if (result == TvResult.Succeeded)
                {
                    _card.StopTimeShifting();
                }
                else
                {
                    item.Checked            = false;
                    _channel.VisibleInGuide = false;
                    _channel.Persist();
                }
                if (_abortScanning)
                {
                    break;
                }
            }
            mpButtonTestAvailable.Text = "Test";
            dlg.Close();
            _isScanning    = false;
            _abortScanning = false;
        }
        public void ShowVideo(IWin32Window owner)
        {
            Text = "Preview " + _channel.DisplayName;

            TvServer server = new TvServer();
            IUser    user   = UserFactory.CreateBasicUser("setuptv");
            TvResult result = server.StartTimeShifting(ref user, _channel.IdChannel, out _card);

            if (result != TvResult.Succeeded)
            {
                MessageBox.Show("Preview failed:" + result);
                Close();
                throw new Exception(result.ToString());
            }

            Log.Info("preview {0} user:{1} {2} {3} {4}", _channel.DisplayName, user.CardId, user.SubChannel, user.Name,
                     _card.TimeShiftFileName);
            _player = new Player();
            _player.Play(_card.TimeShiftFileName, this);

            this.Show(owner);
        }
Ejemplo n.º 4
0
        public new DialogResult ShowDialog(IWin32Window owner)
        {
            Text = "Preview " + _channel.DisplayName;

            TvServer server = new TvServer();
            IUser    user   = new User("setuptv", false);
            TvResult result = server.StartTimeShifting(ref user, _channel.IdChannel, out _card);

            if (result != TvResult.Succeeded)
            {
                MessageBox.Show("Preview failed:" + result);
                Close();
                return(DialogResult.None);
            }

            Log.Info("preview {0} user:{1} {2} {3} {4}", _channel.DisplayName, user.CardId, user.SubChannel, user.Name,
                     _card.TimeShiftFileName);
            _player = new Player();
            _player.Play(_card.TimeShiftFileName, this);

            return(base.ShowDialog(owner));
        }
Ejemplo n.º 5
0
        private void mpButtonTimeShift_Click(object sender, EventArgs e)
        {
            if (ServiceHelper.IsStopped)
            {
                return;
            }
            if (mpComboBoxChannels.SelectedItem == null)
            {
                return;
            }
            int id = ((ComboBoxExItem)mpComboBoxChannels.SelectedItem).Id;

            TvServer    server = new TvServer();
            VirtualCard card   = GetCardTimeShiftingChannel(id);

            if (card != null)
            {
                card.StopTimeShifting();
                mpButtonRec.Enabled = false;
            }
            else
            {
                string timeShiftingFilename = string.Empty;
                int    cardId = -1;
                foreach (ListViewItem listViewItem in mpListView1.SelectedItems)
                {
                    if (listViewItem.SubItems[2].Text != "disabled")
                    {
                        cardId = Convert.ToInt32(listViewItem.SubItems[0].Tag);
                        break; // Keep the first card enabled selected only
                    }
                }
                IUser user = UserFactory.CreateSchedulerUser();
                user.Name   = "setuptv-" + id + "-" + cardId;
                user.CardId = cardId;

                TvResult result = server.StartTimeShifting(ref user, id, out card, cardId != -1);
                if (result != TvResult.Succeeded)
                {
                    switch (result)
                    {
                    case TvResult.NoPmtFound:
                        MessageBox.Show(this, "No PMT found");
                        break;

                    case TvResult.NoSignalDetected:
                        MessageBox.Show(this, "No signal");
                        break;

                    case TvResult.CardIsDisabled:
                        MessageBox.Show(this, "Card is not enabled");
                        break;

                    case TvResult.AllCardsBusy:
                        MessageBox.Show(this, "All cards are busy");
                        break;

                    case TvResult.ChannelIsScrambled:
                        MessageBox.Show(this, "Channel is scrambled");
                        break;

                    case TvResult.NoVideoAudioDetected:
                        MessageBox.Show(this, "No Video/Audio detected");
                        break;

                    case TvResult.UnableToStartGraph:
                        MessageBox.Show(this, "Unable to create/start graph");
                        break;

                    case TvResult.ChannelNotMappedToAnyCard:
                        MessageBox.Show(this, "Channel is not mapped to any card");
                        break;

                    case TvResult.NoTuningDetails:
                        MessageBox.Show(this, "No tuning information available for this channel");
                        break;

                    case TvResult.UnknownChannel:
                        MessageBox.Show(this, "Unknown channel");
                        break;

                    case TvResult.UnknownError:
                        MessageBox.Show(this, "Unknown error occured");
                        break;

                    case TvResult.ConnectionToSlaveFailed:
                        MessageBox.Show(this, "Cannot connect to slave server");
                        break;

                    case TvResult.NotTheOwner:
                        MessageBox.Show(this, "Failed since card is in use and we are not the owner");
                        break;

                    case TvResult.GraphBuildingFailed:
                        MessageBox.Show(this, "Unable to create graph");
                        break;

                    case TvResult.SWEncoderMissing:
                        MessageBox.Show(this, "No suppported software encoder installed");
                        break;

                    case TvResult.NoFreeDiskSpace:
                        MessageBox.Show(this, "No free disk space");
                        break;

                    case TvResult.TuneCancelled:
                        MessageBox.Show(this, "Tune cancelled");
                        break;
                    }
                }
                else
                {
                    mpButtonRec.Enabled = true;
                }
            }
        }