00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00032 #ifndef quvi_h
00033 #define quvi_h
00034
00035 #ifndef DOXY_SKIP
00036 #include <stdlib.h>
00037 #ifndef _AIX51
00038 #include <stdint.h>
00039 #endif
00040 #endif
00041
00048 typedef enum {
00049 QUVI_VERSION = 0x00,
00050 QUVI_VERSION_LONG
00051 } QUVIversion;
00052
00054 typedef enum {
00055
00056 QUVI_OK = 0x00,
00057 QUVI_MEM,
00058 QUVI_BADHANDLE,
00059 QUVI_INVARG,
00060 QUVI_CURLINIT,
00061 QUVI_LAST,
00062 QUVI_ABORTEDBYCALLBACK,
00063 QUVI_LUAINIT,
00064 QUVI_NOLUAWEBSITE,
00065 QUVI_NOLUAUTIL,
00066 _INTERNAL_QUVI_LAST,
00067
00068 QUVI_PCRE = 0x40,
00069 QUVI_NOSUPPORT,
00070 QUVI_CURL,
00071 QUVI_ICONV,
00072 QUVI_LUA
00073 } QUVIcode;
00074
00076 typedef enum {
00077 QUVISTATUS_FETCH = 0x00,
00078 QUVISTATUS_VERIFY,
00079 QUVISTATUS_SHORTENED
00080 } QUVIstatus;
00081
00083 typedef enum {
00084
00085 QUVISTATUSTYPE_PAGE = 0x00,
00086 QUVISTATUSTYPE_CONFIG,
00087 QUVISTATUSTYPE_PLAYLIST,
00088
00089 QUVISTATUSTYPE_DONE
00090 } QUVIstatusType;
00091
00104 typedef enum {
00105 QUVIOPT_FORMAT = 0x00,
00106 QUVIOPT_NOVERIFY,
00107 QUVIOPT_STATUSFUNCTION,
00108 QUVIOPT_WRITEFUNCTION,
00109 QUVIOPT_NOSHORTENED,
00110 QUVIOPT_CATEGORY
00111 } QUVIoption;
00112
00113 #define QUVIINFO_VOID 0x100000
00114 #define QUVIINFO_LONG 0x200000
00115 #define QUVIINFO_STRING 0x300000
00116 #define QUVIINFO_DOUBLE 0x400000
00117 #define QUVIINFO_TYPEMASK 0xf00000
00127 typedef enum {
00128 QUVIPROTO_HTTP = 0x1,
00129 QUVIPROTO_MMS = 0x2,
00130 QUVIPROTO_RTSP = 0x4,
00131 QUVIPROTO_RTMP = 0x8,
00132 QUVIPROTO_ALL =
00133 (QUVIPROTO_HTTP|QUVIPROTO_MMS|QUVIPROTO_RTSP|QUVIPROTO_RTMP)
00135 } QUVIcategory;
00136
00155 typedef enum {
00156 QUVIINFO_NONE = 0x00,
00157 QUVIINFO_CURL = QUVIINFO_VOID + 1,
00158 QUVIINFO_CURLCODE = QUVIINFO_LONG + 2,
00159 QUVIINFO_HTTPCODE = QUVIINFO_LONG + 3,
00160
00161 _QUVIINFO_LAST = 3
00162 } QUVIinfo;
00163
00164 #define QUVIPROPERTY_STRING 0x100000
00165 #define QUVIPROPERTY_LONG 0x200000
00166 #define QUVIPROPERTY_DOUBLE 0x300000
00167 #define QUVIPROPERTY_TYPEMASK 0xf00000
00170 typedef enum {
00171 QUVIPROP_NONE = 0x00,
00172 QUVIPROP_HOSTID = QUVIPROPERTY_STRING + 1,
00173 QUVIPROP_PAGEURL = QUVIPROPERTY_STRING + 2,
00174 QUVIPROP_PAGETITLE = QUVIPROPERTY_STRING + 3,
00175 QUVIPROP_VIDEOID = QUVIPROPERTY_STRING + 4,
00176 QUVIPROP_VIDEOURL = QUVIPROPERTY_STRING + 5,
00177 QUVIPROP_VIDEOFILELENGTH = QUVIPROPERTY_DOUBLE + 6,
00178 QUVIPROP_VIDEOFILECONTENTTYPE = QUVIPROPERTY_STRING + 7,
00179 QUVIPROP_VIDEOFILESUFFIX = QUVIPROPERTY_STRING + 8,
00180 QUVIPROP_HTTPCODE = QUVIPROPERTY_LONG + 9,
00181 QUVIPROP_VIDEOFORMAT = QUVIPROPERTY_STRING + 10,
00182 QUVIPROP_STARTTIME = QUVIPROPERTY_STRING + 11,
00183
00184 _QUVIPROP_LAST = 11
00185 } QUVIproperty;
00186
00188 typedef void *quvi_t;
00190 typedef void *quvi_video_t;
00191
00239 typedef int (*quvi_callback_status) (long param, void *data);
00240
00241 #define QUVI_WRITEFUNC_ABORT 0x10000000
00251 typedef int (*quvi_callback_write) (char *buffer,
00252 size_t size,
00253 size_t nitems,
00254 void *instream);
00255
00257 typedef uint32_t quvi_word;
00259 typedef uint8_t quvi_byte;
00260
00262
00263
00270 #define quvi_lobyte(w) ((quvi_byte)((uint64_t)(w) & 0xff))
00271
00272 #define quvi_hibyte(w) ((quvi_byte)((uint64_t)(w) >> 8))
00273
00275 #define quvi_loword(l) ((quvi_word)((uint64_t)(l) & 0xffff))
00276
00277 #define quvi_hiword(l) ((quvi_word)((uint64_t)(l) >> 16))
00278
00280
00281
00282 #ifdef __cplusplus
00283 extern "C" {
00284 #endif
00285
00332 QUVIcode quvi_init(quvi_t *quvi);
00333
00334
00354 void quvi_close(quvi_t *quvi);
00355
00358
00359
00383 QUVIcode quvi_setopt(quvi_t quvi, QUVIoption opt, ...);
00384
00393 size_t quvi_write_callback_default(void *ptr, size_t size, size_t nmemb, void *stream);
00394
00396
00397
00425 QUVIcode quvi_getinfo(quvi_t quvi, QUVIinfo info, ...);
00426
00428
00455 QUVIcode quvi_parse(quvi_t quvi, char *url, quvi_video_t *video);
00456
00457
00484 QUVIcode quvi_getprop(quvi_video_t video, QUVIproperty prop, ...);
00485
00487
00488
00516 QUVIcode quvi_next_videolink(quvi_video_t video);
00517
00519
00520
00543 void quvi_parse_close(quvi_video_t *video);
00544
00547
00548
00579 QUVIcode quvi_supported(quvi_t quvi, char *url);
00580
00610 QUVIcode quvi_next_supported_website(quvi_t quvi, char **domain, char **formats);
00611
00624 QUVIcode quvi_next_host(char **domain, char **formats);
00625
00647 char *quvi_strerror(quvi_t quvi, QUVIcode code);
00648
00663 char *quvi_version(QUVIversion type);
00664
00670 void quvi_free(void *ptr);
00671
00674
00675 #ifdef __cplusplus
00676 }
00677 #endif
00678
00679 #endif
00680