event_t * fa_gme_playfile(media_pipe_t *mp, fa_handle_t *fh, char *errbuf, size_t errlen, int hold, const char *url) { buf_t *b; event_t *e; if((b = fa_load_and_close(fh)) == NULL) { snprintf(errbuf, errlen, "Unable to read data from file"); return NULL; } e = fa_gme_playfile_internal(mp, b->b_ptr, b->b_size, errbuf, errlen, hold, 0, url); buf_release(b); return e; }
event_t * fa_gme_playfile(media_pipe_t *mp, fa_handle_t *fh, char *errbuf, size_t errlen, int hold, const char *url) { uint8_t *mem; size_t size; event_t *e; if((mem = fa_load_and_close(fh, &size)) == NULL) { snprintf(errbuf, errlen, "Unable to read data from file"); return NULL; } e = fa_gme_playfile_internal(mp, mem, size, errbuf, errlen, hold, 0, url); free(mem); return e; }
static image_t * thumb_from_attachment(const char *url, int64_t offset, int size, char *errbuf, size_t errlen, const char *cacheid, time_t mtime) { fa_handle_t *fh = fa_open(url, errbuf, errlen); if(fh == NULL) return NULL; fh = fa_slice_open(fh, offset, size); buf_t *buf = fa_load_and_close(fh); if(buf == NULL) { snprintf(errbuf, errlen, "Load error"); return NULL; } image_t *img = fa_imageloader_buf(buf, errbuf, errlen); if(img != NULL) { blobcache_put(cacheid, "videothumb", buf, INT32_MAX, NULL, mtime, 0); } buf_release(buf); return img; }