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 QUVI_NOLUAUTIL,
00062 _INTERNAL_QUVI_LAST,
00063
00064 QUVI_PCRE = 0x40,
00065 QUVI_NOSUPPORT,
00066 QUVI_CURL,
00067 QUVI_ICONV,
00068 QUVI_LUA,
00069 } QUVIcode;
00070
00072 typedef enum {
00073 QUVISTATUS_FETCH = 0x00,
00074 QUVISTATUS_VERIFY,
00075 } QUVIstatus;
00076
00078 typedef enum {
00079
00080 QUVISTATUSTYPE_PAGE = 0x00,
00081 QUVISTATUSTYPE_CONFIG,
00082 QUVISTATUSTYPE_PLAYLIST,
00083
00084 QUVISTATUSTYPE_DONE,
00085 } QUVIstatusType;
00086
00094 typedef enum {
00095 QUVIOPT_FORMAT = 0x00,
00096 QUVIOPT_NOVERIFY,
00097 QUVIOPT_STATUSFUNCTION,
00098 QUVIOPT_WRITEFUNCTION,
00099 } QUVIoption;
00100
00101 #define QUVIINFO_VOID 0x100000
00102 #define QUVIINFO_LONG 0x200000
00103 #define QUVIINFO_STRING 0x300000
00104 #define QUVIINFO_DOUBLE 0x400000
00105 #define QUVIINFO_TYPEMASK 0xf00000
00125 typedef enum {
00126 QUVIINFO_NONE = 0x00,
00127 QUVIINFO_CURL = QUVIINFO_VOID + 1,
00128 QUVIINFO_CURLCODE = QUVIINFO_LONG + 2,
00129 QUVIINFO_HTTPCODE = QUVIINFO_LONG + 3,
00130
00131 _QUVIINFO_LAST = 3
00132 } QUVIinfo;
00133
00134 #define QUVIPROPERTY_STRING 0x100000
00135 #define QUVIPROPERTY_LONG 0x200000
00136 #define QUVIPROPERTY_DOUBLE 0x300000
00137 #define QUVIPROPERTY_TYPEMASK 0xf00000
00140 typedef enum {
00141 QUVIPROP_NONE = 0x00,
00142 QUVIPROP_HOSTID = QUVIPROPERTY_STRING + 1,
00143 QUVIPROP_PAGEURL = QUVIPROPERTY_STRING + 2,
00144 QUVIPROP_PAGETITLE = QUVIPROPERTY_STRING + 3,
00145 QUVIPROP_VIDEOID = QUVIPROPERTY_STRING + 4,
00146 QUVIPROP_VIDEOURL = QUVIPROPERTY_STRING + 5,
00147 QUVIPROP_VIDEOFILELENGTH = QUVIPROPERTY_DOUBLE + 6,
00148 QUVIPROP_VIDEOFILECONTENTTYPE = QUVIPROPERTY_STRING + 7,
00149 QUVIPROP_VIDEOFILESUFFIX = QUVIPROPERTY_STRING + 8,
00150 QUVIPROP_HTTPCODE = QUVIPROPERTY_LONG + 9,
00151 QUVIPROP_VIDEOFORMAT = QUVIPROPERTY_STRING + 10,
00152
00153 _QUVIPROP_LAST = 10
00154 } QUVIproperty;
00155
00157 typedef void *quvi_t;
00159 typedef void *quvi_video_t;
00160
00202 typedef int (*quvi_callback_status) (long param, void *data);
00203
00204 #define QUVI_WRITEFUNC_ABORT 0x10000000
00214 typedef int (*quvi_callback_write) (char *buffer,
00215 size_t size,
00216 size_t nitems,
00217 void *instream);
00218
00220 typedef uint32_t quvi_word;
00222 typedef uint8_t quvi_byte;
00223
00225
00226
00233 #define quvi_lobyte(w) ((quvi_byte)((uint64_t)(w) & 0xff))
00234
00235 #define quvi_hibyte(w) ((quvi_byte)((uint64_t)(w) >> 8))
00236
00238 #define quvi_loword(l) ((quvi_word)((uint64_t)(l) & 0xffff))
00239
00240 #define quvi_hiword(l) ((quvi_word)((uint64_t)(l) >> 16))
00241
00243
00244
00245 #ifdef __cplusplus
00246 extern "C" {
00247 #endif
00248
00295 QUVIcode quvi_init(quvi_t *quvi);
00296
00297
00317 void quvi_close(quvi_t *quvi);
00318
00321
00322
00346 QUVIcode quvi_setopt(quvi_t quvi, QUVIoption opt, ...);
00347
00356 size_t quvi_write_callback_default(void *ptr, size_t size, size_t nmemb, void *stream);
00357
00359
00360
00388 QUVIcode quvi_getinfo(quvi_t quvi, QUVIinfo info, ...);
00389
00391
00392
00419 QUVIcode quvi_parse(quvi_t quvi, char *url, quvi_video_t *video);
00420
00421
00448 QUVIcode quvi_getprop(quvi_video_t video, QUVIproperty prop, ...);
00449
00451
00452
00480 QUVIcode quvi_next_videolink(quvi_video_t video);
00481
00483
00484
00507 void quvi_parse_close(quvi_video_t *video);
00508
00511
00512
00544 QUVIcode quvi_next_supported_website(quvi_t quvi, char **domain, char **formats);
00545
00558 QUVIcode quvi_next_host(char **domain, char **formats);
00559
00581 char *quvi_strerror(quvi_t quvi, QUVIcode code);
00582
00597 char *quvi_version(QUVIversion type);
00598
00604 void quvi_free(void *ptr);
00605
00608
00609 #ifdef __cplusplus
00610 }
00611 #endif
00612
00613 #endif
00614
00615