+static unsigned char **read_raw_frame(struct lbx_image_priv *img, int frame)
+{
+ unsigned long size = img->pub.width * img->pub.height;
+
+ assert(img->flags & FLAG_RAW);
+
+ if (img->fops->seek(img->f, img->offsets[frame], SEEK_SET)) {
+ return NULL;
+ }
+
+ if (img->fops->read(img->framedata[0], size, img->f) != size) {
+ if (img->fops->eof(img->f))
+ lbx_error_raise(LBX_EEOF);
+ return NULL;
+ }
+ memset(img->mask[0], 1, size);
+
+ if (img->fops->tell(img->f) > img->offsets[frame+1]) {
+ lbx_error_raise(LBX_EFORMAT);
+ return NULL;
+ }
+
+ return img->framedata;
+}
+
+unsigned char **lbx_img_getframe(struct lbx_image *pub, int frame)