Defines | |
#define | QUVIINFO_VOID 0x100000 |
#define | QUVIINFO_LONG 0x200000 |
#define | QUVIINFO_STRING 0x300000 |
#define | QUVIINFO_DOUBLE 0x400000 |
#define | QUVIINFO_TYPEMASK 0xf00000 |
#define | QUVIPROPERTY_STRING 0x100000 |
#define | QUVIPROPERTY_LONG 0x200000 |
#define | QUVIPROPERTY_DOUBLE 0x300000 |
#define | QUVIPROPERTY_TYPEMASK 0xf00000 |
#define | QUVI_WRITEFUNC_ABORT 0x10000000 |
Typedefs | |
typedef void * | quvi_t |
libquvi session handle | |
typedef void * | quvi_video_t |
Video parsing session handle. | |
typedef int(* | quvi_callback_status )(long param, void *data) |
Status callback function. | |
typedef int(* | quvi_callback_write )(char *buffer, size_t size, size_t nitems, void *instream) |
Write callback function. | |
typedef uint32_t | quvi_word |
Word type. | |
typedef uint8_t | quvi_byte |
Byte type. | |
Enumerations | |
enum | QUVIversion { QUVI_VERSION = 0x00, QUVI_VERSION_LONG } |
enum | QUVIcode { QUVI_OK = 0x00, QUVI_MEM, QUVI_BADHANDLE, QUVI_INVARG, QUVI_CURLINIT, QUVI_LAST, QUVI_ABORTEDBYCALLBACK, QUVI_LUAINIT, QUVI_NOLUAWEBSITE, _INTERNAL_QUVI_LAST, QUVI_PCRE = 0x40, QUVI_NOSUPPORT, QUVI_CURL, QUVI_ICONV, QUVI_LUA } |
enum | QUVIstatus { QUVISTATUS_FETCH = 0x00, QUVISTATUS_VERIFY } |
enum | QUVIstatusType { QUVISTATUSTYPE_PAGE = 0x00, QUVISTATUSTYPE_CONFIG, QUVISTATUSTYPE_PLAYLIST, QUVISTATUSTYPE_DONE } |
enum | QUVIoption { QUVIOPT_FORMAT = 0x00, QUVIOPT_NOVERIFY, QUVIOPT_STATUSFUNCTION, QUVIOPT_WRITEFUNCTION } |
enum | QUVIinfo { QUVIINFO_NONE = 0x00, QUVIINFO_CURL = QUVIINFO_VOID + 1, QUVIINFO_CURLCODE = QUVIINFO_LONG + 2, QUVIINFO_HTTPCODE = QUVIINFO_LONG + 3, _QUVIINFO_LAST = 3 } |
enum | QUVIproperty { QUVIPROP_NONE = 0x00, QUVIPROP_HOSTID = QUVIPROPERTY_STRING + 1, QUVIPROP_PAGEURL = QUVIPROPERTY_STRING + 2, QUVIPROP_PAGETITLE = QUVIPROPERTY_STRING + 3, QUVIPROP_VIDEOID = QUVIPROPERTY_STRING + 4, QUVIPROP_VIDEOURL = QUVIPROPERTY_STRING + 5, QUVIPROP_VIDEOFILELENGTH = QUVIPROPERTY_DOUBLE + 6, QUVIPROP_VIDEOFILECONTENTTYPE = QUVIPROPERTY_STRING + 7, QUVIPROP_VIDEOFILESUFFIX = QUVIPROPERTY_STRING + 8, QUVIPROP_HTTPCODE = QUVIPROPERTY_LONG + 9, QUVIPROP_VIDEOFORMAT = QUVIPROPERTY_STRING + 10, _QUVIPROP_LAST = 10 } |
Describes the constants and the types used with the API.
#define QUVIINFO_VOID 0x100000 |
void type
#define QUVIINFO_LONG 0x200000 |
long type
#define QUVIINFO_STRING 0x300000 |
string type
#define QUVIINFO_DOUBLE 0x400000 |
double type
#define QUVIINFO_TYPEMASK 0xf00000 |
type mask
#define QUVIPROPERTY_STRING 0x100000 |
string type
#define QUVIPROPERTY_LONG 0x200000 |
long type
#define QUVIPROPERTY_DOUBLE 0x300000 |
double type
#define QUVIPROPERTY_TYPEMASK 0xf00000 |
type mask
#define QUVI_WRITEFUNC_ABORT 0x10000000 |
Abort writing
typedef void* quvi_video_t |
typedef int(* quvi_callback_status)(long param, void *data) |
Status callback function.
Callback function for status changes.
Example:
static int status_callback (long param, void *data) { quvi_word status, type; status = quvi_loword(param); type = quvi_hiword(param); switch (status) { case QUVISTATUS_FETCH: switch (type) { default: printf(":: Fetch %s ...", (char *)data); break; case QUVISTATUSTYPE_CONFIG : printf(":: Fetch config ..."); break; case QUVISTATUSTYPE_PLAYLIST: printf(":: Fetch playlist ..."); break; case QUVISTATUSTYPE_DONE : puts("done."); break; } break; case QUVISTATUS_VERIFY: switch (type) { default: printf(":: Verify video link ..."); break; case QUVISTATUSTYPE_DONE: puts("done."); break; } break; } fflush(stdout); } int main (int argc, char *argv[]) { quvi_t quvi; quvi_init(&quvi); quvi_setopt(quvi, QUVIOPT_STATUSFUNCTION, status_callback); ... }
typedef int(* quvi_callback_write)(char *buffer, size_t size, size_t nitems, void *instream) |
Write callback function.
This function gets called by libquvi (or libcurl) as soon as there is data received that needs to be saved.
typedef uint8_t quvi_byte |
Byte type.
enum QUVIversion |
Types used with quvi_version()
enum QUVIcode |
Return codes
enum QUVIstatus |
enum QUVIstatusType |
enum QUVIoption |
Option codes to be used with quvi_setopt()
If you use QUVIOPT_NOVERIFY, the library will return zero for video file length and an empty string for video suffix. Both of them are parsed during the video link verification process from the server returned HTTP header fields content-length and content-type.
enum QUVIinfo |
Info codes to be used with quvi_getinfo()
The library creates a cURL handle which is used to fetch and verify parsed video details. The cURL handle is initialized with the following libcurl options:
You can, of course, override those settings in your program. You can even use the cURL handle in your program until quvi_close() is called which will release the handle. See the src/quvi.c for an example of this. Note that libquvi uses the libcurl easy interface and not the multi interface.
enum QUVIproperty |
Video property codes to be used with quvi_getprop()