1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
|
#ifndef __PPS_H__
#define __PPS_H__
#ifndef HASH_VALUE_LENGTH
#define HASH_VALUE_LENGTH 20
#endif
#define PPS_EXTRA_MSG_LEN 64
#define PPS_MAX_MAP_SIZE 65536
typedef unsigned long long uint64_t;
typedef long long int64_t;
typedef enum pps_event_id
{
EPPS_SERVER_TIMEOUT, // 0, 连接服务器超时,停止播放
EPPS_NO_SERVER, // 1, 找不到服务器,停止播放
EPPS_SERVER_NO_RESPONSE, // 2, 服务器未响应,停止播放
EPPS_SERVER_INVALID, // 3, 解析服务器域名失败.
EPPS_VERSION_LOW, // 4, 客户端版本号太低,退出网络
EPPS_CLIENT_NAME, // 5, 客户端名称或引用页不正确,退出播放
EPPS_URL_INVALID, // 6, 播放的文件不存在或网址错误
EPPS_NO_SERVICE, // 7, 服务不存在,停止播放
EPPS_OUT_OF_SERVICE, // 8, 不在服务区.
EPPS_MEDIA_INFO_ERROR, // 9, 媒体信息加载时错误..
EPPS_INDEX_INFO_ERROR, // 10, 媒体索引信息错误
EPPS_NO_INDEX, // 11, 没有获取到媒体索引信息,不能拖动播放位置
EPPS_NO_MEIDIA, // 12, 找不到媒体
EPPS_MULTI_INSTANCE, // 13, 请确定是否有另一个实例正在播放此文件
EPPS_PREPARE_MEDIA_INFO, // 14, 正在准备媒体信息
EPPS_GETTING_MEDIA_INFO, // 15, 正在获取媒体信息
EPPS_GETTING_INDEX_INFO, // 16, 正在获取媒体索引信息
EPPS_PLAYING, // 17, 正在播放
EPPS_BUFFERING, // 18, 正在缓冲数据
EPPS_CONNECTING, // 19, 正在连入网络
EPPS_MEDIA_READY, // 20, 准备媒体就绪
EPPS_PARSING_SERVER, // 21, 正在解析服务器域名..
EPPS_GET_MEDIA_INFO, // 22, 已成功获取到媒体信息.
EPPS_BUFFERED, // 23, 数据缓冲完毕.
EPPS_PREPARE_MEDIA, // 24, 准备媒体
EPPS_STORAGE_ERROR, // 25. 访问存储器失败
EPPS_QUIT, // 26. 程序退出
EPPS_DATA_TIMEOUT, // 27, 等待数据超时
EPPS_UPDATING, // 28, 正在升级
EPPS_UPDATE_FAILED, // 29, 升级失败
EPPS_UPDATE_OK, // 30, 升级成功
}pps_event_id;
typedef struct pps_event
{
pps_event_id id;
unsigned int wparam;
unsigned int lparam;
char extra[PPS_EXTRA_MSG_LEN];
}pps_event;
#ifdef __cplusplus
extern "C" {
#endif
typedef int (*pps_callback)(int index, pps_event event);
#ifdef __cplusplus
}
#endif
typedef struct ppsvod_iteminfo
{
int index;
char hash_id[HASH_VALUE_LENGTH]; // task hash id
char *file_name; // save name
unsigned int file_size; // total file size
int progress; // download percent
int down_speed; // download speed (byte/s)
int up_speed; // upload speed (byte/s)
int peer_count; // peer count has connected
int status; // has the task been started?
}ppsvod_iteminfo;
#ifdef __cplusplus
extern "C" {
#endif
/*
* Description: ppsvod initialization, must be called before all.
* param: Datatype Param name In/Out Comment
* const char * oem_name in
* const char * terminal_type in
* const char * device_id in
* pps_callback pcallback in callback function pointer
* return: int return 0 if success; -1 if failed.
*/
int ppsvod_create(const char *oem_name,
const char * terminal_type,
const char *device_id,
pps_callback pcallback);
/*
* Description: uninitialize ppsvod, call this fuction when you want to exit ppsvod.
* param: Datatype Param name In/Out Comment
* void
* return: int return 0 if success; -1 if failed
*/
int ppsvod_destroy(void);
/*
* Description: Add an item into ppsvod internal list.
* param: Datatype Param name In/Out Comment
* char * url In url to add
* int vip_flag In flag for vip items
* return: int return a file descriptor if success; -1 if failed.
*/
int ppsvod_add_item(char *url, int vip_flag);
/*
* Description: Remove an item from ppsvod internal list.
* param: Datatype Param name In/Out Comment
* int fd In file descriptor
* return: int return 0 if success; -1 if failed.
*/
int ppsvod_remove_item(int fd);
/*
* Description: start to play a file.
* param: Datatype Param name In/Out Comment
* int fd In file descriptor
* const char* validcode In
* return: int return 0 if success; -1 if failed.
*/
int ppsvod_play_item(int fd, const char * validcode);
/*
* Description: stop the playing url.
* param: Datatype Param name In/Out Comment
* int fd In file descriptor
* return: int return 0 if success; -1 if failed; -3 means validcode error.
*/
int ppsvod_stop_item(int fd);
/*
* Description: read data.
* param: Datatype Param name In/Out Comment
* int fd In file descriptor
* char * buffer Out buffer to store data
* unsigned int length In data length
* unsigned int position In from where to read.
* struct timeval* wait_time In time length that read() can block
* return: int return length of data if success; -1 if failed(errno
* is set to EAGAIN if data is temporarily unavailable; etherwise,
* some error happens or EOF reaches).
*/
int ppsvod_read(int fd, char *buffer, unsigned int length, unsigned int position, struct timeval *wait_time);
/*
* Description: Drop read operation
* param: Datatype Param name In/Out Comment
* int fd In file descriptor
*/
void ppsvod_drop_read(int fd);
/*
* Description: seeking within a playing url.
* param: Datatype Param name In/Out Comment
* int fd In file descriptor
* unsigned int position In seeking destination
* return: int return 0 if success; -1 if failed.
*/
int ppsvod_seek(int fd, unsigned int position);
/*
* Description: get total file length
* param: Datatype Param name In/Out Comment
* int fd In file descriptor
* return: int return file length if success; -1 if failed.
*/
int ppsvod_get_file_length(int fd);
/*
* Description: validate url.
* param: Datatype Param name In/Out Comment
* const char* url In url to check
* return: int return 0 if success; -1 if failed.
*/
int ppsvod_check_url(const char* url);
/*
* Description: Get information for a playing file.
* param: Datatype Param name In/Out Comment
* int fd In file descriptor
* return: ppsvod_iteminfo* return a pointer to ppsvod_iteminfo if success;
* NULL if failed.
*/
ppsvod_iteminfo *ppsvod_get_item_info(int fd);
/*
* Description: Free memory of a ppsvod_iteminfo* pointer
* param: Datatype Param name In/Out Comment
* ppsvod_iteminfo* piteminfo In pointer returned by ppsvod_get_item_info
* return: void
*/
void ppsvod_free_item_info(ppsvod_iteminfo *piteminfo);
/*
* APIs for playlist operation
*/
/*
* Define download, unzip and parse vodlist file status.
* vodlist status use highest 4 bits to express stage, use
* lowest 8 bits to express every stage process
*/
#define VODLIST_IDLE 0x0
#define VODLIST_DOWNLOADING 0x10000000
#define VODLIST_UNCOMPRESSING 0x20000000
#define VODLIST_PARSING 0x40000000
#define VODLIST_UPDATE_SUCCESS 0x80000000
#define VODLIST_UPDATE_FAIL 0xff000000
typedef struct __ppscategory
{
int id; /* category or subcategory id */
char *name; /* category or subcategory num */
int type; /* subcategory type. 0: movie, 1: teleplay */
int subcatnum; /* subcategory number under this category */
struct __ppscategory *psubcat; /* subcategory array */
struct __ppscategory *next;
}ppscategory;
typedef struct __ppsitem
{
int id; /* Item id */
int index; /* Item index */
int size; /* Item size (MB) */
int duration; /* Item duration (Minute)*/
char *format; /* file format (rm/rmvb/wmv) */
int bitrate; /* bitrate */
char *ppsurl; /* pps vod url */
int vipflag; /* vip flags */
struct __ppsitem *next;
}ppsitem;
typedef struct __ppschannel
{
char *name; /* channel name */
char *director;
char *actor;
char *area;
int size; /* all items' total size under this channel (MB) */
char *pubtime; /* publish time */
int duration; /* all items' total duration time under this channel (Min) */
char *lang; /* channel language */
char *desc; /* channel description */
char *BImgUrl; /* Big Image Url */
char *SImgUrl; /* Small Image Url */
int itemnum; /* num of items */
struct __ppsitem *pitems; /* point to items list */
struct __ppschannel *next;
}ppschannel;
/*
* description: vod list initialization, must be called before all.
* param: datatype param name in/out comment
* void
* return: int return 0 if success; -1 if failed.
*/
int pps_vodlist_init(void);
/*
* description: vod list uninitialize, call this fuction when you want to exit pps vodlist.
* param: datatype param name in/out comment
* void
* return: int return 0 if success; -1 if failed.
*/
int pps_vodlist_uninit(void);
/*
* description: get all categories and sub categories list.
* param: datatype param name in/out comment
* void
* return: ppscategory* pointer of all categories, null if failed.
*/
ppscategory *pps_vodlist_getcat(int *catnum);
/*
* description: get channels under pointed catogory and sub category.
* param: datatype param name in/out comment
* int catid in class id
* int subcatid in sub class id
* int page_size in channels one page have
* int page_num in page num which want to query
* return: ppschannel pointer of channels, null if failed.
*/
ppschannel *pps_vodlist_getchannel(int catid, int subcatid, int page_size, int page_num);
/*
* Description: configure directory for store cache, config, data and logs.
* param: Datatype Param name In/Out Comment
* const char* root_path In root path used to store
* return: int return 0 if success, -1 if failed.
* comment:
*/
int ppsvod_save_config_dir(const char * root_path);
/*
* Description: load configure directory for store cache, config, data and logs.
* param: Datatype Param name In/Out Comment
* void
* return: char* return root path if success, NULL if failed.
* comment:
*/
char *ppsvod_get_config_dir(void);
/*
* Description: load default configure directory for store cache, config, data and logs.
* param: Datatype Param name In/Out Comment
* void
* return: int return 0 if success, -1 if failed.
* comment:
*/
int ppsvod_default_config_dir(void);
/*
* Description: Deposit money for PPS VIP account
* param: Datatype Param name In/Out Comment
* const char* password In 17 numbers sold by pps
* return: int return 0 if success, -1 if failed.
* comment:
*/
int ppsvod_charge(const char* password);
/*
* Description: Get account type of current user
* param: Datatype Param name In/Out Comment
* void
* return: int return -1 if failed;
* return 0: Non-VIP user
* return 1: Payment VIP
* comment:
*/
int ppsvod_get_account_type(void);
/*
* Description: Get expire time of vip qualification
* param: Datatype Param name In/Out Comment
* char* time Out memory allocated by caller
* return: int -1: failed
* 0: OK
*/
int ppsvod_get_vip_expire_time(char *time);
/*
* Description: Get time from network
* param: Datatype Param name In/Out Comment
* struct timeval tv Out time since 1970
* return: int return 0 if success, -1 if failed.
* comment:
*/
int ppsvod_get_time(struct timeval *tv);
#ifdef __cplusplus
}
#endif
#endif // __PPS_H__
|