TrackInfo ITunesDevice::firstTrack( const QString& file ) { m_database = file; if ( !m_file ) { m_file = new QFile( file ); if ( !m_file->open( QIODevice::ReadOnly | QIODevice::Text ) ) { qDebug() << "Could not open iTunes Library" << m_database; return TrackInfo(); } m_totalSize = m_file->size(); m_xmlReader = new QXmlSimpleReader(); m_xmlInput = new QXmlInputSource(); m_handler = new ITunesParser(); m_xmlReader->setContentHandler( m_handler ); m_xmlInput->setData( m_file->read( 32768 ) ); if ( !m_xmlReader->parse( m_xmlInput, true ) ) { qDebug() << "Couldn't read file: " << m_database; return TrackInfo(); } } return nextTrack(); }
TrackInfo ITunesDevice::nextTrack() { while ( m_handler->trackCount() < 20 && !m_file->atEnd() ) { m_xmlInput->setData( m_file->read( 32768 ) ); m_xmlReader->parseContinue(); emit progress( (float)( (float)m_file->pos() / (float)m_file->size() ) * 100.0, m_handler->peekTrack() ); } TrackInfo t = m_handler->takeTrack(); if ( !t.isEmpty() ) { return t; } if ( m_file->atEnd() ) { // Finished with the database, let's close our stuff qDebug() << "Finished reading"; m_file->close(); delete m_file; m_file = 0; } return TrackInfo(); }
int main() { cdio Ripper; flac Encoder; int tracks = Ripper.GetTracks(); std::string filename[tracks+1]; /* Prepare cddb information */ int frames[tracks]; for (int i=0; i<tracks; i++) { frames[i] = Ripper.GetLba(i+1); } cddb TrackInfo(&(frames[0]), tracks, Ripper.GetLength()); /* Does nothing for the moment */ //if (mkdir("test", 0755) == 0 ) { mkdir("test", 0755); chdir("test"); for (int i=1; i<=tracks; i++) { char tmp[MAXLEN]; sprintf(&(tmp[0]), "%02d - %s", i, TrackInfo.GetTitle(i-1).c_str()); filename[i] = tmp; Ripper.RipTrack(i, tmp); Encoder.EncodeFile(tmp, tmp); } //} return 0; }
void onTrackStart(const QXmlAttributes&) { m_albumInfo.m_vTracks.push_back(TrackInfo()); char a [10]; sprintf(a, "%d", cSize(m_albumInfo.m_vTracks)); m_albumInfo.m_vTracks.back().m_strPos = a; }
status_t ARTPSession::setup(const sp<ASessionDescription> &desc) { CHECK_EQ(mInitCheck, (status_t)NO_INIT); mDesc = desc; mRTPConn = new ARTPConnection(ARTPConnection::kRegularlyRequestFIR); looper()->registerHandler(mRTPConn); for (size_t i = 1; i < mDesc->countTracks(); ++i) { AString connection; if (!mDesc->findAttribute(i, "c=", &connection)) { // No per-stream connection information, try global fallback. if (!mDesc->findAttribute(0, "c=", &connection)) { ALOGE("Unable to find connection attribute."); return mInitCheck; } } if (!(connection == "IN IP4 127.0.0.1")) { ALOGE("We only support localhost connections for now."); return mInitCheck; } unsigned port; if (!validateMediaFormat(i, &port) || (port & 1) != 0) { ALOGE("Invalid media format."); return mInitCheck; } sp<APacketSource> source = new APacketSource(mDesc, i); if (source->initCheck() != OK) { ALOGE("Unsupported format."); return mInitCheck; } int rtpSocket = MakeUDPSocket(port); int rtcpSocket = MakeUDPSocket(port + 1); mTracks.push(TrackInfo()); TrackInfo *info = &mTracks.editItemAt(mTracks.size() - 1); info->mRTPSocket = rtpSocket; info->mRTCPSocket = rtcpSocket; sp<AMessage> notify = new AMessage(kWhatAccessUnitComplete, id()); notify->setSize("track-index", mTracks.size() - 1); mRTPConn->addStream( rtpSocket, rtcpSocket, mDesc, i, notify, false /* injected */); info->mPacketSource = source; } mInitCheck = OK; return OK; }
// следующий трек void __fastcall TForm1::SpeedButton3Click(TObject *Sender) { MediaPlayer->Next(); // если перешли к последнему треку, то кнопку // Next сделать недоступной if ( MCI_TMSF_TRACK(MediaPlayer->Position) == MediaPlayer->Tracks ) SpeedButton3->Enabled = false; if (! SpeedButton1->Enabled ) SpeedButton1->Enabled = true; TrackInfo(); Label2->Caption = "0:00"; }
// предыдущий трек void __fastcall TForm1::SpeedButton1Click(TObject *Sender) { MediaPlayer->Previous(); // в начало текущего трека MediaPlayer->Previous(); // в начало предыдущего трек if ( MCI_TMSF_TRACK(MediaPlayer->Position) == 1 ) SpeedButton1->Enabled = false; if ( ! SpeedButton3->Enabled ) SpeedButton3->Enabled = true; TrackInfo(); Label2->Caption = "0:00"; }
void ControlWidget::initDisconnect( ErrorCode errorCode ) { PartymanMainWindow::setIconAndTitle( this, mPartymanIcon, QApplication::applicationName() + ": " + tr("(disconnected)") ); mpTrayIcon->setToolTip( QString() ); mpTrayIcon->setContextMenu( mpTrayIconStopMenu ); if( mConnected ) { mConnected = false; QString errorText; handlePause( true ); saveTracks( true ); mpPlayer[0]->disconnect(); mpPlayer[1]->disconnect(); //mpSkipButton->setDisabled( true ); mpSkipAction->setDisabled( true ); mpStartButton->setMenu( 0 ); mpStartButton->setChecked( false ); switch( errorCode ) { case ErrorNoConnection: errorText = tr("Could not connect to DerMixD. Is it running?"); break; case ErrorConnectionLost: errorText = tr("The connection to DerMixD was lost."); break; case ErrorWrongVersion: errorText = tr("The Version of DerMixD is not compatible."); break; case ErrorNone: default: break; } if( !errorText.isEmpty() && mDerMixDstarted ) { QMessageBox::critical( this, QApplication::applicationName(), errorText ); } if( Settings::value( Settings::PartymanDerMixDrun ) ) { mpDerMixDprocess->terminate(); Settings::setValue( Settings::PartymanDerMixDpid, 0 ); } emit signalConnected( false ); mpPlaylist->setTrackInfo( TrackInfo() ); log( "p0s", "stop" ); } }
bool TrackInfoListModel::insertRows( int row, int count, const QModelIndex &parent ) { if( (count < 1) || (row < 0) || (row > rowCount(parent)) ) { return false; } beginInsertRows( QModelIndex(), row, row + count - 1 ); for ( int i = 0; i < count; i++ ) { mList.insert( row, TrackInfo() ); } endInsertRows(); return true; }
// щелчок на кнопке Play/Stop void __fastcall TForm1::SpeedButton2Click(TObject *Sender) { if ( SpeedButton2->Tag == 0 ) { // щелчок на кнопке Play MediaPlayer->Play(); SpeedButton2->Glyph->Assign(bmStop); SpeedButton2->Hint = "Стоп"; SpeedButton2->Tag = 1; //SpeedButton3->Enabled = true; // доступна кнопка "следующий трек" MediaPlayer->Notify = true; Timer->Enabled = true; TrackInfo(); } else { // щелчок на кнопке Stop SpeedButton2->Glyph->Assign(bmPlay); SpeedButton2->Hint = "Воспроизведение"; SpeedButton2->Tag = 0; MediaPlayer->Notify = true; MediaPlayer->Stop(); Timer->Enabled = false; } }
// сигнал от таймера: вывести номер трека // и время воспроизведения void __fastcall TForm1::TimerTimer(TObject *Sender) { int trk; // трек int min, sec; // время AnsiString st; if ( MediaPlayer->Mode == mpPlaying ) // режим воспроизведения { // получить номер воспроизводимого трека и trk = MCI_TMSF_TRACK(MediaPlayer->Position); if ( trk != Track ) // произошла смена трека { TrackInfo(); Track = trk; if ( Track > 1 ) SpeedButton1->Enabled = true; // доступна кнопка "пред.трек" if ( Track == MediaPlayer->Tracks) SpeedButton3->Enabled = false; // кнопка "след.трек" недоступна } // вывод информации о воспроизводимом треке min = MCI_TMSF_MINUTE(MediaPlayer->Position); sec = MCI_TMSF_SECOND(MediaPlayer->Position); st.printf("%d:%.2d",min,sec); Label2->Caption = st; return; } // Если дисковод открыт или в нем нет // AudioCD, то Mode == mpOpen. // Ждем диск, т.е. до тех пор пока не будет Mode == mpStopped + кол-во треков > 1 if ( (MediaPlayer->Mode == mpStopped) && (MediaPlayer->Tracks > 1) ) { // диск вставлен Timer->Enabled = false; SpeedButton2->Enabled = true;; SpeedButton2->Tag = 0; SpeedButton3->Enabled = true; MediaPlayer->Notify = true; // получить информацию о времени звучания CD MediaPlayer->TimeFormat = tfMilliseconds; int ms = MediaPlayer->Length; AnsiString st = "Audio CD. Время звучания: "; st = st + IntToStr(MINUTE(ms)); st = st + ":" + IntToStr(SECOND(ms)); Label1->Caption = st; MediaPlayer->TimeFormat = tfTMSF; Label1->Visible = true; Track = 0; return; } // дисковод открыт или в дисководе не Audio CD if (( MediaPlayer->Mode == mpOpen )|| (MediaPlayer->Mode == mpStopped) && (MediaPlayer->Tracks == 1)) { Label1->Caption = "Вставьте Audio CD"; if ( Label1->Visible ) Label1->Visible = false; else Label1->Visible = true; } }
static void TrackInfoO(GUI *data) { TrackInfo(); GeneralFuncF1(2); }