The ov_callbacks structure contains file manipulation function prototypes necessary for opening, closing, seeking, and location.
The ov_callbacks structure does not need to be user-defined if you are working with a standard file. The typical ov_open() call will fill ov_callbacks for you. However, ov_callbacks should be defined if you are using other data sources. In this situation, use ov_open_callbacks() instead of ov_open().
typedef struct {
size_t (*read_func) (void *ptr, size_t size, size_t nmemb, void *datasource);
int (*seek_func) (void *datasource, int64_t offset, int whence);
int (*close_func) (void *datasource);
long (*tell_func) (void *datasource);
} ov_callbacks;