示例#1
0
文件: mvelib.cpp 项目: paud/d2x-xl
int mve_play_next_chunk (MVESTREAM *movie)
{
    unsigned char major, minor;
    unsigned char *data;
    int len;

// loop over segments
    major = mvefile_get_next_segmentMajor (movie->movie);
    while (major != 0xff) {
        // check whether to handle the tSegment
        if (major < 32  &&  movie->handlers[major] != NULL) {
            minor = mvefile_get_next_segmentMinor (movie->movie);
            len = mvefile_get_next_segment_size (movie->movie);
            data = mvefile_get_next_segment (movie->movie);
            if (!movie->handlers[major] (major, minor, data, len, movie->context))
                return 0;
        }
        // advance to next tSegment
        mvefile_advance_segment (movie->movie);
        major = mvefile_get_next_segmentMajor (movie->movie);
    }
    if (!mvefile_fetch_next_chunk (movie->movie))
        return 0;
// return status
    return 1;
}
示例#2
0
/*
 * play next chunk
 */
int mve_play_next_chunk(MVESTREAM *movie)
{
    /* loop over segments */
	auto major = mvefile_get_next_segment_major(movie->movie.get());
    while (major != 0xff)
    {
        /* check whether to handle the segment */
		if (major < movie->handlers.size() && movie->handlers[major])
        {
			auto minor = mvefile_get_next_segment_minor(movie->movie.get());
			auto len = mvefile_get_next_segment_size(movie->movie.get());
			auto data = mvefile_get_next_segment(movie->movie.get());

            if (! movie->handlers[major](major, minor, data, len, movie->context))
                return 0;
        }

        /* advance to next segment */
		mvefile_advance_segment(movie->movie.get());
		major = mvefile_get_next_segment_major(movie->movie.get());
    }

	if (! mvefile_fetch_next_chunk(movie->movie.get()))
        return 0;

    /* return status */
    return 1;
}