bool VGMMultiSectionSeq::LoadMain()
{
	readMode = READMODE_ADD_TO_UI;

	if (!GetHeaderInfo())
		return false;

	if (!LoadTracks(readMode))
		return false;

	return true;
}
示例#2
0
void MpvHandler::AddAudioTrack(QString f)
{
    if(f == QString())
        return;
    const QByteArray tmp = f.toUtf8();
    const char *args[] = {"audio-add", tmp.constData(), NULL};
    Command(args);
    auto old = fileInfo.tracks;
    LoadTracks();
    auto current = fileInfo.tracks;
    for(auto track : old)
        current.removeOne(track);
    Mpv::Track &track = current.first();
    ShowText(QString("%0: %1 (%2)").arg(QString::number(track.id), track.title, track.external ? "external" : track.lang));
}
示例#3
0
void MpvHandler::AddSubtitleTrack(QString f)
{
    if(f == QString())
        return;
    const QByteArray tmp = f.toUtf8();
    const char *args[] = {"sub-add", tmp.constData(), NULL};
    Command(args);
    // this could be more efficient if we saved tracks in a bst
    auto old = fileInfo.tracks; // save the current track-list
    LoadTracks(); // load the new track list
    auto current = fileInfo.tracks;
    for(auto track : old) // remove the old tracks in current
        current.removeOne(track);
    Mpv::Track &track = current.first();
    ShowText(QString("%0: %1 (%2)").arg(QString::number(track.id), track.title, track.external ? "external" : track.lang));
}
示例#4
0
void MpvHandler::LoadFileInfo()
{
    // get media-title
    fileInfo.media_title = mpv_get_property_string(mpv, "media-title");
    // get length
    double len;
    mpv_get_property(mpv, "length", MPV_FORMAT_DOUBLE, &len);
    fileInfo.length                  = (int)len;

    LoadTracks();
    LoadChapters();
    LoadVideoParams();
    LoadAudioParams();
    LoadMetadata();

    emit fileInfoChanged(fileInfo);
}
示例#5
0
/* Start playback */
static int
SDL_SYS_CDPlay(SDL_CD * cdrom, int start, int length)
{
    int startFrame, stopFrame;
    FSRef *ref;

    if (fakeCD) {
        SDL_SetError(kErrorFakeDevice);
        return -1;
    }

    Lock();

    if (LoadTracks(cdrom) < 0)
        return -2;

    if (PauseFile() < 0)
        return -3;

    if (ReleaseFile() < 0)
        return -4;

    ref = GetFileForOffset(cdrom, start, length, &startFrame, &stopFrame);
    if (ref == NULL) {
        SDL_SetError("SDL_SYS_CDPlay: No file for start=%d, length=%d",
                     start, length);
        return -5;
    }

    if (LoadFile(ref, startFrame, stopFrame) < 0)
        return -6;

    SetCompletionProc(CompletionProc, cdrom);

    if (PlayFile() < 0)
        return -7;

    status = CD_PLAYING;

    Unlock();

    return 0;
}
示例#6
0
void MpvHandler::LoadFileInfo()
{
    // get media-title
    fileInfo.media_title = mpv_get_property_string(mpv, "media-title");
    // get length
    double len;
    mpv_get_property(mpv, "length", MPV_FORMAT_DOUBLE, &len);
    fileInfo.length                  = (int)len;

    fileInfo.video_params.codec       = mpv_get_property_string(mpv, "video-codec");
    fileInfo.audio_params.codec       = mpv_get_property_string(mpv, "audio-codec");
    fileInfo.audio_params.samplerate  = mpv_get_property_string(mpv, "audio-samplerate");
    fileInfo.audio_params.channels    = mpv_get_property_string(mpv, "audio-channels");

    LoadTracks();
    LoadChapters();
    LoadVideoParams();
    LoadMetadata();

    emit fileInfoChanged(fileInfo);
}