Пример #1
0
void eServiceWebTS::recv_event(int evt)
{
	eDebug("eServiceWebTS::recv_event: %d", evt);
	switch (evt) {
	case eStreamThreadWeb::evtEOS:
		m_decodedemux->flush();
		m_event((iPlayableService*)this, evEOF);
		break;
	case eStreamThreadWeb::evtReadError:
	case eStreamThreadWeb::evtWriteError:
		m_decoder->pause();
		m_event((iPlayableService*)this, evEOF);
		break;
	case eStreamThreadWeb::evtSOS:
		m_event((iPlayableService*)this, evSOF);
		break;
	case eStreamThreadWeb::evtStreamInfo:
		if (VPID != 0 && PID_SET == 0 && APID != 0)
		{
			PID_SET = 1;
			m_decodedemux->flush();
			if (H264)
				m_decoder->setVideoPID(VPID, eDVBVideo::MPEG4_H264);
			else
				m_decoder->setVideoPID(VPID, eDVBVideo::MPEG2);
			m_decoder->setAudioPID(APID, eDVBAudio::aMPEG);
			m_decoder->pause();
			m_event(this, evStart);
			m_decoder->play();
			
		}
		bool wasnull = !m_audioInfo;
		m_streamthread->getAudioInfo(m_audioInfo);
		//if (m_audioInfo)
		//	eDebug("[ServiceWebTS] %d audiostreams found", m_audioInfo->audioStreams.size());
		if (m_audioInfo && wasnull) {
			eDebug("[ServiceWebTS] %d audiostreams found", m_audioInfo->audioStreams.size());
			int sel = getCurrentTrack();
			if (sel < 0)
				selectTrack(0);
			else if (m_audioInfo->audioStreams[sel].type != eDVBAudio::aMPEG)
				selectTrack(sel);
		}
		break;
	}
}
void MainWindow::actionOpen()
{
	QString fileName = QFileDialog::getOpenFileName(this, tr("Open Video or Subtitle file"),
			QSettings().value("lastUsedDir", QDesktopServices::storageLocation(QDesktopServices::HomeLocation)).toString(),
			tr("Video and subtitle files (*.txt *.og?)"));

	if (!fileName.isEmpty())
	{
		const QString basename = fileName.left(fileName.length() - 3);
		const QString oggfile = basename + "ogg";
		const QString ogmfile = basename + "ogm";
		const QString ogvfile = basename + "ogv";
		const QString txtfile = basename + "txt";
		const QString txafile = basename + "txa";

		m_subtitles[0].clear();
		m_subtitles[1].clear();

		if (QFile::exists(oggfile))
		{
			openMovie(oggfile);
		}

		if (QFile::exists(ogmfile))
		{
			openMovie(ogmfile);
		}

		if (QFile::exists(ogvfile))
		{
			openMovie(ogvfile);
		}

		if (QFile::exists(txtfile))
		{
			openSubtitle(txtfile, 0);

			m_currentPath = fileName;
		}

		if (QFile::exists(txafile))
		{
			openSubtitle(txafile, 1);

			m_currentPath = fileName;
		}

		selectTrack(0);

		QSettings().setValue("lastUsedDir", QFileInfo(fileName).dir().path());
	}
}
Пример #3
0
void
EditViewBase::slotToggleSolo()
{
    // Select the track for this segment.
    getDocument()->getComposition().setSelectedTrack(
            getCurrentSegment()->getTrack());
    getDocument()->getComposition().notifyTrackSelectionChanged(
            getCurrentSegment()->getTrack());
    // Old notification mechanism.
    emit selectTrack(getCurrentSegment()->getTrack());

    // Toggle solo on the selected track.
    // The "false" is ignored.  It was used for the checked state.
    emit toggleSolo(false);
}
Пример #4
0
void Player::next(bool play_track) {
	if (titles_list->count() == 0)
		return;
	if (track_queue.count()) {
		int tid = track_queue.takeFirst();
		selectTrack(tid);
		track_queue_info.remove(tid);
		titles_list->currentItem()->setIcon(dequeud);
	} else {
		if (shuffle_tracks) {
			char *query = sqlite3_mprintf("SELECT `tid` FROM `tracks` LIMIT 1 OFFSET %i", (qrand() % num_tracks) + 1); //NOTE: the lowest `tid` is '1'
			sqlite3_stmt *shuffleQuery = 0;
			prepare(query, &shuffleQuery, "Failed to Prepare shuffle query: ");
			bool done = false;
			int tid = 0;
			if (step(shuffleQuery, done, true, "Failed to Step shuffle in next(): "))
				tid = sqlite3_column_int(shuffleQuery, 0);
			selectTrack(tid);
		} else {
			artist_list->setCurrentItem(cur_artist);
			if (++cur_title >= titles_list->count()) {
				cur_title = 0;
				if (cur_album == 0 || ++cur_album >= album_list->count()) {
					cur_album = 1;
					int next_artist = artist_list->row(cur_artist) + 1;
					cur_artist = artist_list->item(next_artist >= artist_list->count() ? 1 : next_artist);
					artist_list->setCurrentItem(cur_artist);
				}
				else
					album_list->setCurrentItem(album_list->item(cur_album));
			}
			titles_list->setCurrentItem(titles_list->item(cur_title));
		}
	}
	play(titles_list->currentItem()->data(Qt::UserRole).toInt(), play_track);
}
Пример #5
0
int main(int argc, const char *argv[]) {
	uint8 i;
	uint8 track[4];
	uint8 player[4];

	// Init system clock & disable WDT
	//
	CLKPR = 0x80;
	CLKPR = 0x00;
	MCUSR &= ~(1 << WDRF);
	wdt_disable();

	srand(12345);

	// Init LCD
	//
	lcdInit();

	for ( ; ; ) {
		if ( PIND & 0x80 ) {
			initSelector(32);
			for ( i = 0; i < 4; i++ ) {
				track[i] = selectItem();
			}
			initSelector(NUM_CHARACTERS);
			for ( i = 0; i < 4; i++ ) {
				player[i] = selectItem();
			}
			lcdSetCursor(0,0);
			for ( i = 0; i < 4; i++ ) {
				lcdPrintFlashString(selectCharacter(player[i]));
				lcdPrintFlashString(selectTrack(track[i]));
			}
			while ( PIND & 0x80 );
		} else {
			lcdClearScreen();
			do {
				rand();
			} while ( !(PIND & 0x80) );
		}
	}
}
Пример #6
0
void
EditViewBase::slotToggleSolo()
{
    QAction *toggleSoloAction = findAction("toggle_solo");
    if (!toggleSoloAction) return;

    bool newSoloState = toggleSoloAction->isChecked();

    //RG_DEBUG << "EditViewBase::slotToggleSolo() : solo action is " << (toggleSoloAction->isCheckable() ? "" : "NOT") << " checkable.";
    //RG_DEBUG << "EditViewBase::slotToggleSolo() : solo  = " << newSoloState;

    emit toggleSolo(newSoloState);

    if (newSoloState) {
        getDocument()->getComposition().setSelectedTrack(
                getCurrentSegment()->getTrack());
        getDocument()->getComposition().notifyTrackSelectionChanged(
                getCurrentSegment()->getTrack());

        // Old notification mechanism.
        emit selectTrack(getCurrentSegment()->getTrack());
    }
}
Пример #7
0
void Bodyseq::update() {
    buttons.read();
    keypads.read();
    updatePosition();
    pots.update();

    switch(mode) {
        case 0:                 // NO_BUTTONS
            playTrack();
            break;
        case 1:                 // BUTTON_1
            selectNote();
            break;
        case 2:                 // BUTTON_2
            selectStep();
            break;
        case 3:                 // BUTTON_1_2
            selectOctave();
            break;
        case 4:                 // BUTTON_3
            selectTrack();
            break;
        case 5:                 // BUTTON_1_3
            chainTrack();
            break;
        case 6:                 // BUTTON_2_3
            copyTrack();
            break;
        case 7:                 // BUTTON_1_2_3
            clearTrack();
            break;
        default:
            break;
    }
    leds.update();
}
Пример #8
0
// ----------------------------------------------------------------------------
//
void TextUI::queueTrack(void)
{
    selectTrack( true, false );
}
Пример #9
0
// ----------------------------------------------------------------------------
//
void TextUI::playTrackSeek(void)
{
    selectTrack( false, true );
}
Пример #10
0
// ----------------------------------------------------------------------------
//
void TextUI::playTrack(void)
{
    selectTrack( false, false );
}