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; }
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; }
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; }
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; }