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()); } } }
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); }
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)); }
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; } } }