资源简介
Vc++流媒体播放器附源码程序 可供大家参考。。。。。。。。。。。。。。。。。。。。。。。。。。
代码片段和文件信息
#include “config.h“
#include
#include
#include
#include
#include
#include “playtree.h“
#include “playtreeparser.h“
#include “libmpdemux/stream.h“
#include “libmpdemux/demuxer.h“
#include “asxparser.h“
#include “mp_msg.h“
#include “m_config.h“
extern m_config_t* mconfig;
////// List utils
void
asx_list_add(void* list_ptrvoid* entry){
void** list = *(void***)list_ptr;
int c = 0;
if(list != NULL)
for( ; list[c] != NULL; c++) ;
list = (void*)realloc(listsizeof(void*)*(c+2));
list[c] = entry;
list[c+1] = NULL;
*(void***)list_ptr = list;
}
void
asx_list_remove(void* list_ptrvoid* entryASX_FreeFunc free_func) {
void** list = *(void***)list_ptr;
int ce = -1;
if(list == NULL) return;
for(c = 0 ; list[c] != NULL; c++){
if(list[c] == entry) e = c;
}
if(e == -1) return; // Not found
if(free_func != NULL) free_func(list[e]);
if(c == 1) { // Only one entry we drop all
free(list);
*(void**)list_ptr = NULL;
return;
}
if(c > e) // If c==e the memmove is not needed
memmove(list+elist+e+1(c-e)*sizeof(void*));
list = (void*)realloc(list(c-1)*sizeof(void*));
list[c-1] = NULL;
*(void***)list_ptr = list;
}
void
asx_list_free(void* list_ptrASX_FreeFunc free_func) {
void** ptr = *(void***)list_ptr;
if(ptr == NULL) return;
if(free_func != NULL) {
for( ; *ptr != NULL ; ptr++)
free_func(*ptr);
}
free(*(void**)list_ptr);
*(void**)list_ptr = NULL;
}
/////// Attribs utils
char*
asx_get_attrib(char* attribchar** attribs) {
char** ptr;
if(attrib == NULL || attribs == NULL) return NULL;
for(ptr = attribs; ptr[0] != NULL; ptr += 2){
if(strcasecmp(ptr[0]attrib) == 0)
return strdup(ptr[1]);
}
return NULL;
}
int
asx_attrib_to_enum(char* valchar** valid_vals) {
char** ptr;
int r = 0;
if(valid_vals == NULL || val == NULL) return -2;
for(ptr = valid_vals ; ptr[0] != NULL ; ptr++) {
if(strcasecmp(valptr[0]) == 0) return r;
r++;
}
return -1;
}
static void
asx_warning_attrib_invalid(ASX_Parser_t* parser char* elem char* attrib
char** valid_valschar* val) {
char *str*vals**ptr;
int len;
if(valid_vals == NULL || valid_vals[0] == NULL) return;
len = strlen(valid_vals[0]) + 1;
for(ptr = valid_vals+1 ; ptr[0] != NULL; ptr++) {
len += strlen(ptr[0]);
len += ((ptr[1] == NULL) ? 4 : 2);
}
str = vals = (char*)malloc(len);
vals += sprintf(vals“%s“valid_vals[0]);
for(ptr = valid_vals + 1 ; ptr[0] != NULL ; ptr++) {
if(ptr[1] == NULL)
vals += sprintf(vals“ or %s“ptr[0]);
else
vals += sprintf(vals“ %s“ptr[0]);
}
mp_msg(MSGT_PLAYTREEMSGL_ERR“at line %d : attribute %s of element %s is invalid (%s). Valid values are %s“
parser->lineattribelemvalstr);
free(str);
}
static int
asx_get_yes_no_attrib(ASX_Parser_t* parser char* element char* attribchar** attribsint def) {
char* val = asx_get_attr
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 170 2006-06-12 02:35 MPla
文件 19195 2006-06-12 02:35 MPla
文件 891 2006-06-12 02:35 MPla
文件 31040 2006-06-12 02:35 MPla
文件 3850 2006-06-12 02:35 MPla
文件 28845 2006-06-12 02:35 MPla
文件 11939 2006-06-12 02:35 MPla
文件 103 2006-06-12 02:35 MPla
文件 15689 2006-06-12 02:35 MPla
文件 109829 2006-06-12 02:35 MPla
文件 30387 2006-06-12 02:35 MPla
文件 1932 2006-06-12 02:35 MPla
文件 2251 2006-06-12 02:35 MPla
文件 224379 2006-06-12 02:35 MPla
文件 3508 2006-06-12 02:35 MPla
文件 18511 2006-06-12 02:35 MPla
文件 1195 2006-06-12 02:35 MPla
文件 13826 2006-06-12 02:35 MPla
文件 5533 2006-06-12 02:35 MPla
文件 1288 2006-06-12 02:35 MPla
文件 1549 2006-06-12 02:35 MPla
文件 292 2006-06-12 02:35 MPla
文件 84 2006-06-12 02:35 MPla
文件 151 2006-06-12 02:35 MPla
文件 133 2006-06-12 02:35 MPla
文件 1246 2006-06-12 02:35 MPla
文件 279 2006-06-12 02:35 MPla
文件 521 2006-06-12 02:35 MPla
文件 2597 2006-06-12 02:35 MPla
文件 1066 2006-06-12 02:35 MPla
............此处省略2750个文件信息
评论
共有 条评论