示例#1
0
jint Java_de_illogical_modo_GmeDecoder_gmeIsStereoFormat(JNIEnv* env, jclass clazz, jint track) {
    if (emu == NULL)
    {
        return -1;
    }

    if (gme_type(emu) == gme_nsf_type)
        return 0;

    if (gme_type(emu) == gme_nsfe_type)
        return 0;

    if (gme_type(emu) == gme_kss_type)
        return 0;

    return 1;
}
int crPlayerSetTrack(void *context, int track)
{
    gmeContext *gme = (gmeContext*)context;
    gme_err_t status = NULL;
    int trueTrack;
    fileEntry *entry;

    /* initialize the engine */
    if (gme->isGameMusicArchive)
    {
        /* when it's time to start a track, it's always going to be
         * track 0 (first and only) of a single-song file */
        trueTrack = 0;

        /* if a file is already being played, free it first */
        if (gme->emu)
        {
            gme_delete(gme->emu);
            gme->emu = NULL;
        }

        entry = &gme->entries[track];
        status = gme_open_data(gme->dataBuffer + entry->offset, entry->size,
            &gme->emu, gme->sampleRate);
        if (status)
            return 0;
    }
    else
    {
        trueTrack = track;
        /* if the player isn't already open, do the initialization */
        if (!gme->emu)
        {
            status = gme_open_data(gme->dataBuffer, gme->dataBufferSize,
                &gme->emu, gme->sampleRate);
            if (status)
                return 0;
        }
    }

    /* set the track */
    status = gme_start_track(gme->emu, trueTrack);
    if (!status)
    {
        gme_type_t type = gme_type(gme->emu);
        gme->voiceCount = gme_voice_count(gme->emu);

        /* return either mono or stereo depending on the file type */
        if ((type == gme_gbs_type) ||
            (type == gme_spc_type) ||
            (type == gme_vgm_type))
            return 2; /* stereo */
        else
            return 1; /* mono */
    }
    else
    {
        gme_delete(gme->emu);
        gme->emu = NULL;
        return 0;
    }
}
示例#3
0
文件: GME.cpp 项目: biddyweb/QMPlay2
QString GME::name() const
{
	return gme_type_system(gme_type(m_gme));
}