コード例 #1
0
bool DecoderHandler::next(void)
{
    if (done())
        return false;

    if (m_meta.Format() == "cast")
    {
        m_playlist_pos = random() % m_playlist.size();
    }
    else
    {
        m_playlist_pos++;
    }

    PlayListFileEntry *entry = m_playlist.get(m_playlist_pos);

    if (QFileInfo(entry->File()).isAbsolute())
        m_url = QUrl::fromLocalFile(entry->File());
    else
        m_url.setUrl(entry->File());

    LOG(VB_PLAYBACK, LOG_INFO, QString("Now playing '%1'").arg(m_url.toString()));

    deleteIOFactory();
    createIOFactory(m_url);

    if (! haveIOFactory())
        return false;

    getIOFactory()->addListener(this);
    getIOFactory()->start();
    m_state = ACTIVE;

    return true;
}
コード例 #2
0
ファイル: pls.cpp プロジェクト: Cougar/mythtv
int PlayListFile::parse(PlayListFile *pls, QTextStream *stream)
{
    int parsed = 0;
    QString d = stream->read();
    CfgReader cfg;
    cfg.parse(d.toAscii(), d.length());

    int num_entries = cfg.getIntVal("playlist", "numberofentries", -1);

    // Some pls files have "numberofentries", some has "NumberOfEntries".
    if (num_entries == -1) 
        num_entries = cfg.getIntVal("playlist", "NumberOfEntries", -1);

    for (int n = 1; n <= num_entries; n++)
    {
        PlayListFileEntry *e = new PlayListFileEntry();
        QString t_key = QString("Title%1").arg(n);
        QString f_key = QString("File%1").arg(n);
        QString l_key = QString("Length%1").arg(n);

        e->setFile(cfg.getStrVal("playlist", f_key));
        e->setTitle(cfg.getStrVal("playlist", t_key));
        e->setLength(cfg.getIntVal("playlist", l_key));

        pls->add(e);
        parsed++;
    }

    return parsed;
}
コード例 #3
0
ファイル: decoderhandler.cpp プロジェクト: DocOnDev/mythtv
bool DecoderHandler::createPlaylistForSingleFile(const QUrl &url)
{
    PlayListFileEntry *entry = new PlayListFileEntry;

    if (url.scheme() == "file" || QFileInfo(url.toString()).isAbsolute())
        entry->setFile(url.toLocalFile());
    else
        entry->setFile(url.toString());

    m_playlist.add(entry);

    return m_playlist.size() > 0;
}
コード例 #4
0
ファイル: decoderhandler.cpp プロジェクト: faginbagin/mythtv
bool DecoderHandler::next(void)
{
    if (done())
        return false;

    if (m_meta.Format() == "cast")
    {
        m_playlist_pos = random() % m_playlist.size();
    }
    else
    {
        m_playlist_pos++;
    }

    PlayListFileEntry *entry = m_playlist.get(m_playlist_pos);

    if (QFileInfo(entry->File()).isAbsolute())
        m_url = QUrl::fromLocalFile(entry->File());
    else
        m_url.setUrl(entry->File());

    LOG(VB_PLAYBACK, LOG_INFO, QString("Now playing '%1'").arg(m_url.toString()));

    // we use the avfdecoder for everything except CD tracks
    if (m_url.toString().endsWith(".cda"))
        doConnectDecoder(m_url, ".cda");
    else
    {
        // we don't know what format radio stations are so fake a format
        // and hope avfdecoder can decode it
        doConnectDecoder(m_url, ".mp3");
    }

    m_state = ACTIVE;

    return true;
}