예제 #1
0
gc_ptr<root> player::load_file(const char* infile)
// Load the actual movie.
{
    gc_ptr<gameswf::movie_definition>	md = create_movie(infile);
    if (md == NULL)
    {
        fprintf(stderr, "error: can't create a movie from '%s'\n", infile);
        return NULL;
    }

    gc_ptr<gameswf::root>	m = md->create_instance();
    if (m == NULL)
    {
        fprintf(stderr, "error: can't create movie instance\n");
        return NULL;
    }

    int	movie_version = m->get_movie_version();

#ifdef _DEBUG
    log_msg("Playing %s, swf version %d\n", infile, movie_version);
#else
    IF_VERBOSE_PARSE(log_msg("Playing %s, swf version %d\n", infile, movie_version));
#endif

    return m;
}
예제 #2
0
파일: etvnet.c 프로젝트: serge-v/ctv
static struct movie_list *
parse_favorites(json_object *root)
{
	int i;

	json_object *bookmarks, *bookmark;
	int bookmarks_count;

	int status = get_int(root, "status_code");
	if (status != 200) {
		sprintf(last_error, "invalid status %d", status);
		provider->error_number = 1;
		return NULL;
	}

	struct movie_list *list = calloc(1, sizeof(struct movie_list));
	bookmarks = get_data(root, "bookmarks");
	bookmarks_count = json_object_array_length(bookmarks);

	for (i = 0; i < bookmarks_count; i++) {
		bookmark = json_object_array_get_idx(bookmarks, i);
		if (bookmark == NULL) {
			sprintf(last_error, "Cannot get bookmark[%d]", i);
			provider->error_number = 1;
			return NULL;
		}

		struct movie_entry *e = create_movie(bookmark);
		append_movie(list, e);
	}

	return list;
}
예제 #3
0
파일: xmvi.c 프로젝트: E-LLP/QuIP
static void x_open_movie(QSP_ARG_DECL  const char *filename)
{
	/* prepare to play */
	/* open file, create data object, read in */

	Image_File *ifp;
	Data_Obj *dp;
	Movie *mvip;
	const char *pathname;

	pathname = movie_pathname(filename);
	ifp=open_image_file(QSP_ARG  pathname,"r");
	if( ifp == NO_IMAGE_FILE ) return;

	if( ram_area_p == NO_AREA ) dataobj_init(SINGLE_QSP_ARG);

	dp = make_dobj(QSP_ARG  filename, OBJ_TYPE_DIMS(ifp->if_dp),
			OBJ_PREC_PTR(ifp->if_dp));

	if( dp == NO_OBJ ) return;

	read_object_from_file(QSP_ARG  dp,ifp);
	/* should close file automatically!? */


	/* make the movie object */

	mvip = create_movie(QSP_ARG  filename);
	if( mvip == NO_MOVIE ){
		/* BUG free dobj here */
		return;
	}
	mvip->mvi_flags = 0;

	mvip->mvi_data = dp;
}
예제 #4
0
파일: etvnet.c 프로젝트: serge-v/ctv
static struct movie_entry *
get_movie(int parent_id, int idx)
{
	char url[500];
	char name[100];
	json_object *root, *children, *child;

	provider->error_number = 0;
	int page = (idx / 20) + 1;
	int pos_on_page = idx - (page - 1) * 20;

	snprintf(url, 499, "%s/video/media/%d/children.json?page=%d&per_page=20&order_by=on_air",
		 api_root, parent_id, page);

	snprintf(name, 99, "child-%d-%d", parent_id, idx);
	logi("fetch %s to %s", url, name);

	root = get_cached(url, name);
	if (provider->error_number != 0) {
		return NULL;
	}

	children = get_data(root, "children");
	int children_count = json_object_array_length(children);

	if (pos_on_page >= children_count) {
		sprintf(last_error, "cannot get child by idx %d", idx);
		provider->error_number = 1;
		return NULL;
	}

	child = json_object_array_get_idx(children, pos_on_page);
	struct movie_entry *e = create_movie(child);

	return e;
}