diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2018-05-30 18:12:57 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2018-05-30 18:12:57 +0000 |
| commit | f038e1af639dc9896bbc2a3dfcbb62f53a7853f2 (patch) | |
| tree | 3e58f6128ae2c7135b72251768de26b9171fdf32 /src/plugins/Input/cdaudio/decoder_cdaudio.cpp | |
| parent | 6e2d0b2231c3a3537ea6bb2c27874e6f15b2dcda (diff) | |
| download | qmmp-f038e1af639dc9896bbc2a3dfcbb62f53a7853f2.tar.gz qmmp-f038e1af639dc9896bbc2a3dfcbb62f53a7853f2.tar.bz2 qmmp-f038e1af639dc9896bbc2a3dfcbb62f53a7853f2.zip | |
enabled cdaudio plugin
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@7977 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Input/cdaudio/decoder_cdaudio.cpp')
| -rw-r--r-- | src/plugins/Input/cdaudio/decoder_cdaudio.cpp | 58 |
1 files changed, 34 insertions, 24 deletions
diff --git a/src/plugins/Input/cdaudio/decoder_cdaudio.cpp b/src/plugins/Input/cdaudio/decoder_cdaudio.cpp index f1e3d543a..c25de0597 100644 --- a/src/plugins/Input/cdaudio/decoder_cdaudio.cpp +++ b/src/plugins/Input/cdaudio/decoder_cdaudio.cpp @@ -103,7 +103,7 @@ DecoderCDAudio::~DecoderCDAudio() delete [] m_buffer; } -QList <CDATrack> DecoderCDAudio::generateTrackList(const QString &device) +QList<CDATrack> DecoderCDAudio::generateTrackList(const QString &device, TrackInfo::Parts parts) { //read settings QSettings settings(Qmmp::configFile(), QSettings::IniFormat); @@ -183,9 +183,19 @@ QList <CDATrack> DecoderCDAudio::generateTrackList(const QString &device) CDATrack t; t.first_sector = cdio_get_track_lsn(pcdrom_drive->p_cdio, i); t.last_sector = cdio_get_track_last_lsn(pcdrom_drive->p_cdio, i); - t.info.setLength((t.last_sector - t.first_sector +1) / 75); - t.info.setMetaData(Qmmp::TRACK, i); + t.info.setDuration((t.last_sector - t.first_sector +1) * 1000 / 75); + t.info.setValue(Qmmp::TRACK, i); t.info.setPath(QString("cdda://%1#%2").arg(device_path).arg(i)); + + if(parts & TrackInfo::Properties) + { + t.info.setValue(Qmmp::BITRATE, 1411); + t.info.setValue(Qmmp::SAMPLERATE, 44100); + t.info.setValue(Qmmp::CHANNELS, 2); + t.info.setValue(Qmmp::BITS_PER_SAMPLE, 16); + t.info.setValue(Qmmp::FORMAT_NAME, "CDDA"); + } + if ((t.first_sector == CDIO_INVALID_LSN) || (t.last_sector== CDIO_INVALID_LSN)) { qWarning("DecoderCDAudio: invalid stard(end) lsn for the track %d.", i); @@ -199,23 +209,23 @@ QList <CDATrack> DecoderCDAudio::generateTrackList(const QString &device) cdtext_t *cdtext = use_cd_text ? cdio_get_cdtext(pcdrom_drive->p_cdio, i) : 0; if (cdtext && cdtext->field[CDTEXT_TITLE]) { - t.info.setMetaData(Qmmp::TITLE, QString::fromLocal8Bit(cdtext->field[CDTEXT_TITLE])); - t.info.setMetaData(Qmmp::ARTIST, QString::fromLocal8Bit(cdtext->field[CDTEXT_PERFORMER])); - t.info.setMetaData(Qmmp::GENRE, QString::fromLocal8Bit(cdtext->field[CDTEXT_GENRE])); + t.info.setValue(Qmmp::TITLE, QString::fromLocal8Bit(cdtext->field[CDTEXT_TITLE])); + t.info.setValue(Qmmp::ARTIST, QString::fromLocal8Bit(cdtext->field[CDTEXT_PERFORMER])); + t.info.setValue(Qmmp::GENRE, QString::fromLocal8Bit(cdtext->field[CDTEXT_GENRE])); use_cddb = false; } #else cdtext_t *cdtext = use_cd_text ? cdio_get_cdtext(pcdrom_drive->p_cdio) : 0; if (cdtext) { - t.info.setMetaData(Qmmp::TITLE, QString::fromUtf8(cdtext_get_const(cdtext,CDTEXT_FIELD_TITLE,i))); - t.info.setMetaData(Qmmp::ARTIST, QString::fromUtf8(cdtext_get_const(cdtext,CDTEXT_FIELD_PERFORMER,i))); - t.info.setMetaData(Qmmp::GENRE, QString::fromUtf8(cdtext_get_const(cdtext,CDTEXT_FIELD_GENRE,i))); + t.info.setValue(Qmmp::TITLE, QString::fromUtf8(cdtext_get_const(cdtext,CDTEXT_FIELD_TITLE,i))); + t.info.setValue(Qmmp::ARTIST, QString::fromUtf8(cdtext_get_const(cdtext,CDTEXT_FIELD_PERFORMER,i))); + t.info.setValue(Qmmp::GENRE, QString::fromUtf8(cdtext_get_const(cdtext,CDTEXT_FIELD_GENRE,i))); use_cddb = false; } #endif else - t.info.setMetaData(Qmmp::TITLE, QString("CDA Track %1").arg(i, 2, 10, QChar('0'))); + t.info.setValue(Qmmp::TITLE, QString("CDA Track %1").arg(i, 2, 10, QChar('0'))); tracks << t; } qDebug("DecoderCDAudio: found %d audio tracks", tracks.size()); @@ -293,14 +303,14 @@ QList <CDATrack> DecoderCDAudio::generateTrackList(const QString &device) { cddb_track_t *cddb_track = cddb_disc_get_track (cddb_disc, i - 1); int t = i - first_track_number; - tracks[t].info.setMetaData(Qmmp::ARTIST, - QString::fromUtf8(cddb_track_get_artist(cddb_track))); - tracks[t].info.setMetaData(Qmmp::TITLE, - QString::fromUtf8(cddb_track_get_title(cddb_track))); - tracks[t].info.setMetaData(Qmmp::GENRE, - QString::fromUtf8(cddb_disc_get_genre(cddb_disc))); - tracks[t].info.setMetaData(Qmmp::ALBUM, - QString::fromUtf8(cddb_disc_get_title(cddb_disc))); + tracks[t].info.setValue(Qmmp::ARTIST, + QString::fromUtf8(cddb_track_get_artist(cddb_track))); + tracks[t].info.setValue(Qmmp::TITLE, + QString::fromUtf8(cddb_track_get_title(cddb_track))); + tracks[t].info.setValue(Qmmp::GENRE, + QString::fromUtf8(cddb_disc_get_genre(cddb_disc))); + tracks[t].info.setValue(Qmmp::ALBUM, + QString::fromUtf8(cddb_disc_get_title(cddb_disc))); } saveToCache(tracks, id); } @@ -357,10 +367,10 @@ bool DecoderCDAudio::readFromCache(QList <CDATrack> *tracks, uint disc_id) return false; for(int i = 0; i < count; ++i) { - (*tracks)[i].info.setMetaData(Qmmp::ARTIST, settings.value(QString("artist%1").arg(i)).toString()); - (*tracks)[i].info.setMetaData(Qmmp::TITLE, settings.value(QString("title%1").arg(i)).toString()); - (*tracks)[i].info.setMetaData(Qmmp::GENRE, settings.value(QString("genre%1").arg(i)).toString()); - (*tracks)[i].info.setMetaData(Qmmp::ALBUM, settings.value(QString("album%1").arg(i)).toString()); + (*tracks)[i].info.setValue(Qmmp::ARTIST, settings.value(QString("artist%1").arg(i)).toString()); + (*tracks)[i].info.setValue(Qmmp::TITLE, settings.value(QString("title%1").arg(i)).toString()); + (*tracks)[i].info.setValue(Qmmp::GENRE, settings.value(QString("genre%1").arg(i)).toString()); + (*tracks)[i].info.setValue(Qmmp::ALBUM, settings.value(QString("album%1").arg(i)).toString()); } return true; } @@ -395,7 +405,7 @@ bool DecoderCDAudio::initialize() //find track by number int track_at = -1; for (int i = 0; i < tracks.size(); ++i) - if (tracks[i].info.metaData(Qmmp::TRACK).toInt() == track_number) + if (tracks[i].info.value(Qmmp::TRACK).toInt() == track_number) { track_at = i; break; @@ -447,7 +457,7 @@ bool DecoderCDAudio::initialize() } configure(44100, 2, Qmmp::PCM_S16LE); m_bitrate = 1411; - m_totalTime = tracks[track_at].info.length() * 1000; + m_totalTime = tracks[track_at].info.duration(); m_first_sector = tracks[track_at].first_sector; m_current_sector = tracks[track_at].first_sector; m_last_sector = tracks[track_at].last_sector; |
