void DvbStream::timerEvent( QTimerEvent* ev ) { switch ( ev->timerId() ) { case 500: emit playDvb(); } }
void DvbStream::removeOut( DVBout *o ) { disconnect( o, SIGNAL(endRecord(DVBout*,RecTimer*,bool)), this, SLOT(recordEnded(DVBout*,RecTimer*,bool)) ); disconnect( o, SIGNAL(playDvb()), this, SLOT(receivePlayDvb()) ); disconnect( o, SIGNAL(shifting(bool)), this, SLOT(receiveShifting(bool)) ); delOut = o; while ( delOut ) usleep(100); }
StartTab::StartTab(MainWindow *mainWindow) { setBackgroundRole(QPalette::Base); setAutoFillBackground(true); QGridLayout *gridLayout = new QGridLayout(this); gridLayout->setAlignment(Qt::AlignCenter); gridLayout->setMargin(10); gridLayout->setSpacing(15); QAbstractButton *button = addShortcut(i18n("&1 Play File"), QIcon::fromTheme(QLatin1String("video-x-generic"), QIcon(":video-x-generic")), this); button->setShortcut(Qt::Key_1); button->setWhatsThis(i18n("Open dialog to play a file")); connect(button, SIGNAL(clicked()), mainWindow, SLOT(open())); gridLayout->addWidget(button, 0, 0); button = addShortcut(i18n("&2 Play Audio CD"), QIcon::fromTheme(QLatin1String("media-optical-audio"), QIcon(":media-optical-audio")), this); button->setShortcut(Qt::Key_2); button->setWhatsThis(i18n("Start playing an audio CD. It assumes that the CD is already there at the CD driver")); connect(button, SIGNAL(clicked()), mainWindow, SLOT(openAudioCd())); gridLayout->addWidget(button, 0, 1); button = addShortcut(i18n("&3 Play Video CD"), QIcon::fromTheme(QLatin1String("media-optical"), QIcon(":media-optical")), this); button->setShortcut(Qt::Key_3); button->setWhatsThis(i18n("Start playing a Video CD. It assumes that the CD is already there at the CD driver")); connect(button, SIGNAL(clicked()), mainWindow, SLOT(openVideoCd())); gridLayout->addWidget(button, 0, 2); button = addShortcut(i18n("&4 Play DVD"), QIcon::fromTheme(QLatin1String("media-optical"), QIcon(":media-optical")), this); button->setShortcut(Qt::Key_4); button->setWhatsThis(i18n("Start playing a DVD. It assumes that the DVD is already there at the DVD driver")); connect(button, SIGNAL(clicked()), mainWindow, SLOT(openDvd())); gridLayout->addWidget(button, 1, 0); #if HAVE_DVB == 1 button = addShortcut(i18n("&5 Digital TV"), QIcon::fromTheme(QLatin1String("video-television"), QIcon(":video-television")), this); button->setShortcut(Qt::Key_5); button->setWhatsThis("Open the Digital TV live view window. If the TV channels are already scanned, it will start playing the last channel"); connect(button, SIGNAL(clicked()), mainWindow, SLOT(playDvb())); gridLayout->addWidget(button, 1, 1); #endif /* HAVE_DVB == 1 */ }
bool DvbStream::startBroadcast( QPtrList<ChannelDesc> *list, Ts2Rtp *rtp ) { int i, j; bool stop=false, newout; DVBout *o=0; int no=0; ChannelDesc *chan=list->at(0); QPtrList<ChannelDesc> broadcastList; broadcastList.setAutoDelete( true ); if ( !isTuned() ) { for ( i=0; i<MAXTUNETRY; i++ ) { if ( tuneDvb( chan ) ) { i = -1; break; } else usleep(100000); } if ( i<0 ) stop = true; else return false; } for ( i=0; i<(int)list->count(); i++ ) { newout = false; o = 0; for ( j=0; j<(int)out.count(); j++ ) { if ( out.at(j)->channel.name==list->at(i)->name ) o = out.at(j); } if ( !o ) { o = new DVBout( *list->at(i), dvbDevice->adapter, dvbDevice->tuner, plug ); connect( o, SIGNAL(endRecord(DVBout*,RecTimer*,bool)), this, SLOT(recordEnded(DVBout*,RecTimer*,bool)) ); connect( o, SIGNAL(playDvb()), this, SLOT(receivePlayDvb()) ); connect( o, SIGNAL(shifting(bool)), this, SLOT(receiveShifting(bool)) ); out.append( o ); if ( !setPids( o ) ) { removePids( o ); removeOut( o ); o = 0; } else newout = true; } if ( o ) { if ( !o->goBroadcast( rtp ) ) { if ( newout ) { removePids( o ); removeOut( o ); } } else { broadcastList.append( new ChannelDesc( *list->at(i) ) ); no++; if ( list->at(i)->fta && cam ) cam->startService( list->at(i) ); } } }