00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00030 #ifndef quvi_h
00031 #define quvi_h
00032
00033 #ifndef DOXY_SKIP
00034 #include <stdlib.h>
00035 #include <stdint.h>
00036 #endif
00037
00044 typedef enum {
00045 QUVI_VERSION = 0x00,
00046 QUVI_VERSION_LONG,
00047 } QUVIversion;
00048
00050 typedef enum {
00051
00052 QUVI_OK = 0x00,
00053 QUVI_MEM,
00054 QUVI_BADHANDLE,
00055 QUVI_INVARG,
00056 QUVI_CURLINIT,
00057 QUVI_LAST,
00058 QUVI_ABORTEDBYCALLBACK,
00059 QUVI_LUAINIT,
00060 QUVI_NOLUAWEBSITE,
00061 _INTERNAL_QUVI_LAST,
00062
00063 QUVI_PCRE = 0x40,
00064 QUVI_NOSUPPORT,
00065 QUVI_CURL,
00066 QUVI_ICONV,
00067 QUVI_LUA,
00068 } QUVIcode;
00069
00071 typedef enum {
00072 QUVISTATUS_FETCH = 0x00,
00073 QUVISTATUS_VERIFY,
00074 } QUVIstatus;
00075
00077 typedef enum {
00078
00079 QUVISTATUSTYPE_PAGE = 0x00,
00080 QUVISTATUSTYPE_CONFIG,
00081 QUVISTATUSTYPE_PLAYLIST,
00082
00083 QUVISTATUSTYPE_DONE,
00084 } QUVIstatusType;
00085
00093 typedef enum {
00094 QUVIOPT_FORMAT = 0x00,
00095 QUVIOPT_NOVERIFY,
00096 QUVIOPT_STATUSFUNCTION,
00097 QUVIOPT_WRITEFUNCTION,
00098 } QUVIoption;
00099
00100 #define QUVIINFO_VOID 0x100000
00101 #define QUVIINFO_LONG 0x200000
00102 #define QUVIINFO_STRING 0x300000
00103 #define QUVIINFO_DOUBLE 0x400000
00104 #define QUVIINFO_TYPEMASK 0xf00000
00124 typedef enum {
00125 QUVIINFO_NONE = 0x00,
00126 QUVIINFO_CURL = QUVIINFO_VOID + 1,
00127 QUVIINFO_CURLCODE = QUVIINFO_LONG + 2,
00128 QUVIINFO_HTTPCODE = QUVIINFO_LONG + 3,
00129
00130 _QUVIINFO_LAST = 3
00131 } QUVIinfo;
00132
00133 #define QUVIPROPERTY_STRING 0x100000
00134 #define QUVIPROPERTY_LONG 0x200000
00135 #define QUVIPROPERTY_DOUBLE 0x300000
00136 #define QUVIPROPERTY_TYPEMASK 0xf00000
00139 typedef enum {
00140 QUVIPROP_NONE = 0x00,
00141 QUVIPROP_HOSTID = QUVIPROPERTY_STRING + 1,
00142 QUVIPROP_PAGEURL = QUVIPROPERTY_STRING + 2,
00143 QUVIPROP_PAGETITLE = QUVIPROPERTY_STRING + 3,
00144 QUVIPROP_VIDEOID = QUVIPROPERTY_STRING + 4,
00145 QUVIPROP_VIDEOURL = QUVIPROPERTY_STRING + 5,
00146 QUVIPROP_VIDEOFILELENGTH = QUVIPROPERTY_DOUBLE + 6,
00147 QUVIPROP_VIDEOFILECONTENTTYPE = QUVIPROPERTY_STRING + 7,
00148 QUVIPROP_VIDEOFILESUFFIX = QUVIPROPERTY_STRING + 8,
00149 QUVIPROP_HTTPCODE = QUVIPROPERTY_LONG + 9,
00150 QUVIPROP_VIDEOFORMAT = QUVIPROPERTY_STRING + 10,
00151
00152 _QUVIPROP_LAST = 10
00153 } QUVIproperty;
00154
00156 typedef void *quvi_t;
00158 typedef void *quvi_video_t;
00159
00201 typedef int (*quvi_callback_status) (long param, void *data);
00202
00203 #define QUVI_WRITEFUNC_ABORT 0x10000000
00213 typedef int (*quvi_callback_write) (char *buffer,
00214 size_t size,
00215 size_t nitems,
00216 void *instream);
00217
00219 typedef uint32_t quvi_word;
00221 typedef uint8_t quvi_byte;
00222
00224
00225
00232 #define quvi_lobyte(w) ((quvi_byte)((uint64_t)(w) & 0xff))
00233
00234 #define quvi_hibyte(w) ((quvi_byte)((uint64_t)(w) >> 8))
00235
00237 #define quvi_loword(l) ((quvi_word)((uint64_t)(l) & 0xffff))
00238
00239 #define quvi_hiword(l) ((quvi_word)((uint64_t)(l) >> 16))
00240
00242
00243
00244 #ifdef __cplusplus
00245 extern "C" {
00246 #endif
00247
00291 QUVIcode quvi_init(quvi_t *quvi);
00292
00293
00313 void quvi_close(quvi_t *quvi);
00314
00317
00318
00342 QUVIcode quvi_setopt(quvi_t quvi, QUVIoption opt, ...);
00343
00352 size_t quvi_write_callback_default(void *ptr, size_t size, size_t nmemb, void *stream);
00353
00355
00356
00384 QUVIcode quvi_getinfo(quvi_t quvi, QUVIinfo info, ...);
00385
00387
00388
00415 QUVIcode quvi_parse(quvi_t quvi, char *url, quvi_video_t *video);
00416
00417
00444 QUVIcode quvi_getprop(quvi_video_t video, QUVIproperty prop, ...);
00445
00447
00448
00476 QUVIcode quvi_next_videolink(quvi_video_t video);
00477
00479
00480
00503 void quvi_parse_close(quvi_video_t *video);
00504
00507
00508
00540 QUVIcode quvi_next_supported_website(quvi_t quvi, char **domain, char **formats);
00541
00554 QUVIcode quvi_next_host(char **domain, char **formats);
00555
00577 char *quvi_strerror(quvi_t quvi, QUVIcode code);
00578
00593 char *quvi_version(QUVIversion type);
00594
00600 void quvi_free(void *ptr);
00601
00604
00605 #ifdef __cplusplus
00606 }
00607 #endif
00608
00609 #endif
00610
00611