Thread: [Mplayerplug-in-cvs] mplayerplug-in/Source plugin-list.cpp, 1.64, 1.65 plugin-setup.h, 1.59, 1.60 p
Brought to you by:
kdekorte
From: Kevin D. <kde...@us...> - 2006-10-30 18:46:26
|
Update of /cvsroot/mplayerplug-in/mplayerplug-in/Source In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv15718/Source Modified Files: plugin-list.cpp plugin-setup.h plugin-threads.cpp plugin-ui.cpp plugin.cpp Log Message: In ASX 3.0 files recognise mirror sites and only play one of the mirror sites Index: plugin-threads.cpp =================================================================== RCS file: /cvsroot/mplayerplug-in/mplayerplug-in/Source/plugin-threads.cpp,v retrieving revision 1.251 retrieving revision 1.252 diff -C2 -d -r1.251 -r1.252 *** plugin-threads.cpp 27 Oct 2006 20:36:14 -0000 1.251 --- plugin-threads.cpp 30 Oct 2006 18:46:20 -0000 1.252 *************** *** 1731,1736 **** if (DEBUG) printf ! ("----player thread: play = %i played = %i fname = %s\n", ! local_list->play, local_list->played, local_list->fname); if (local_list->play && !(local_list->played)) { --- 1731,1736 ---- if (DEBUG) printf ! ("----player thread: play = %i played = %i entry = %i fname = %s\n", ! local_list->play, local_list->played,local_list->entry, local_list->fname); if (local_list->play && !(local_list->played)) { *************** *** 2087,2091 **** local_list->played = 0; } else { ! local_list->played = 1; } } --- 2087,2092 ---- local_list->played = 0; } else { ! markPlayed(local_list); ! //local_list->played = 1; } } Index: plugin-list.cpp =================================================================== RCS file: /cvsroot/mplayerplug-in/mplayerplug-in/Source/plugin-list.cpp,v retrieving revision 1.64 retrieving revision 1.65 diff -C2 -d -r1.64 -r1.65 *** plugin-list.cpp 17 Sep 2006 02:22:30 -0000 1.64 --- plugin-list.cpp 30 Oct 2006 18:46:19 -0000 1.65 *************** *** 35,38 **** --- 35,39 ---- n->played = 0; n->frombutton = 0; + n->entry = -1; n->bytes = 0; n->totalbytes = 0; *************** *** 185,192 **** --- 186,195 ---- printf("remove: %i\n", l->remove); printf("play: %i\n", l->play); + printf("played: %i\n", l->played); printf("playlist: %i\n", l->playlist); printf("speed: %i\n", l->speed); printf("cancelled: %i\n", l->cancelled); printf("retrieved: %i\n", l->retrieved); + printf("entry: %i\n", l->entry); printf("mms stream: %i\n", l->mmsstream); printf("cache bytes: %li\n", l->cachebytes); *************** *** 227,231 **** void addToList(nsPluginInstance * instance, char *item, Node * parent, ! int speed) { Node *node = NULL; --- 230,234 ---- void addToList(nsPluginInstance * instance, char *item, Node * parent, ! int speed, int mmsstream, int entry) { Node *node = NULL; *************** *** 273,285 **** node->remove = 0; } ! */ if (filename != NULL) NPN_MemFree(filename); NPN_GetURLNotify(instance->mInstance, node->url, NULL, NULL); } } else { if (n->playlist == 1) n->mmsstream = 1; } } --- 276,296 ---- node->remove = 0; } ! */ ! if (filename != NULL) NPN_MemFree(filename); NPN_GetURLNotify(instance->mInstance, node->url, NULL, NULL); } + if (mmsstream == 1) + node->mmsstream = 1; + node->entry = entry; + } else { if (n->playlist == 1) n->mmsstream = 1; + n->entry = entry; } + + } *************** *** 292,296 **** unsigned long int size, found, i; long int remainder; ! char *p; char *nextrmda = NULL; char *rdrf; --- 303,307 ---- unsigned long int size, found, i; long int remainder; ! char *p, *entry, *href; char *nextrmda = NULL; char *rdrf; *************** *** 299,303 **** char *seqtag, *rate, *videotag, *videosrc; unsigned int code; ! int speed; unsigned char *c1, *c2, *c3, *c4; --- 310,314 ---- char *seqtag, *rate, *videotag, *videosrc; unsigned int code; ! int speed, entry_counter = -1; unsigned char *c1, *c2, *c3, *c4; *************** *** 384,388 **** } else { parent->playlist = 1; ! addToList(instance, refurl, parent, speed); printf("ADDED URL: %s\n", (refurl)); printf("code: %i\n speed %i\n", code, speed); --- 395,399 ---- } else { parent->playlist = 1; ! addToList(instance, refurl, parent, speed,0,-1); printf("ADDED URL: %s\n", (refurl)); printf("code: %i\n speed %i\n", code, speed); *************** *** 490,494 **** printf("[smil] found url %s\n", url); parent->playlist = 1; ! addToList(instance, url, parent, speed); found = 1; } else { --- 501,505 ---- printf("[smil] found url %s\n", url); parent->playlist = 1; ! addToList(instance, url, parent, speed,0,-1); found = 1; } else { *************** *** 555,559 **** printf("URL: %s\n", url); parent->playlist = 1; ! addToList(instance, url, parent, -1); p = p + strlen(url) + 1; found = 1; --- 566,570 ---- printf("URL: %s\n", url); parent->playlist = 1; ! addToList(instance, url, parent, -1,0,-1); p = p + strlen(url) + 1; found = 1; *************** *** 572,575 **** --- 583,672 ---- break; } + + // asx version 3.0 files + // <Ref href = "url" /> + snprintf((char *) buffer_lower, sizeof(buffer_lower), "%s", + buffer); + lowercase((char *) buffer_lower); + p = buffer_lower; + if (memmem(p, size, "<asx version=\"3.0\">", strlen("<asx version=\"3.0\">")) && found == 0) { + if (DEBUG) + printf("found ASX 3.0file\n"); + while (p != NULL) { + i = size - ((long) p - (long) buffer_lower); + + if (i < 1) + break; + entry = (char *) memmem(p, i, "entry", 4); + href = (char *) memmem(p, i, "href", 4); + if (entry == NULL || href == NULL) { + // do nothing + } else { + if ( entry < href ) { + entry_counter++; + if (DEBUG) + printf("incrementing entry counter\n"); + } + } + + p = (char *) memmem(p, i, "href", 4); + if (p == NULL) + break; + if ((p - 9) > buffer_lower) { + // look backwards in the file and see if the href is preceeded by + // a qualifier tag, but don't look too far forward otherwise we may + // find another tag of this type + if (memmem(p - 5, 5, "logo", 4) != NULL) { + if (DEBUG > 1) + printf("found logo in ASX\n"); + p = p + 4; + continue; + } + if (memmem(p - 7, 7, "banner", 6) != NULL) { + if (DEBUG > 1) + printf("found banner in ASX\n"); + p = p + 4; + continue; + } + if (memmem(p - 9, 9, "moreinfo", 8) != NULL) { + if (DEBUG > 1) + printf("found moreinfo in ASX\n"); + p = p + 4; + continue; + } + if (memmem(p - 9, 9, "entryref", 8) != NULL) { + if (DEBUG > 1) + printf("found entryref in ASX\n"); + p = p + 4; + continue; + } + } + p = p + 4; + p = strchr(p, '\"'); + if (p != NULL) { + p++; + i = (long) p - (long) buffer_lower; + if (i >= size) + break; + snprintf(url, 1024, "%s", buffer + i); + + sub = strchr(url, '\"'); + if (sub != NULL) { + *sub = '\0'; + unEscapeXML(url); + if (DEBUG) + printf("URL: %s\n", url); + parent->playlist = 1; + addToList(instance, url, parent, -1,1,entry_counter); + p = p + strlen(url) + 1; + found = 1; + } else { + break; + } + } + } + break; + } + // asx files are XMLish // <Ref href = "url" /> *************** *** 628,633 **** printf("URL: %s\n", url); parent->playlist = 1; ! addToList(instance, url, parent, -1); ! parent->next->mmsstream = 1; p = p + strlen(url) + 1; found = 1; --- 725,729 ---- printf("URL: %s\n", url); parent->playlist = 1; ! addToList(instance, url, parent, -1,1,-1); p = p + strlen(url) + 1; found = 1; *************** *** 669,673 **** if (DEBUG) printf("URL: %s\n", url); ! addToList(instance, url, parent, -1); parent->playlist = 1; if (parent->mmsstream == 1 --- 765,769 ---- if (DEBUG) printf("URL: %s\n", url); ! addToList(instance, url, parent, -1,0,-1); parent->playlist = 1; if (parent->mmsstream == 1 *************** *** 730,734 **** printf("URL: %s\n", url); parent->playlist = 1; ! addToList(instance, url, parent, -1); p = p + strlen(url) + 1; found = 1; --- 826,830 ---- printf("URL: %s\n", url); parent->playlist = 1; ! addToList(instance, url, parent, -1,0,-1); p = p + strlen(url) + 1; found = 1; *************** *** 761,765 **** printf("URL: %s\n", url); parent->playlist = 1; ! addToList(instance, url, parent, -1); p = p + strlen(url) + 1; found = 1; --- 857,861 ---- printf("URL: %s\n", url); parent->playlist = 1; ! addToList(instance, url, parent, -1,0,-1); p = p + strlen(url) + 1; found = 1; *************** *** 789,793 **** printf("URL: %s\n", url); parent->playlist = 1; ! addToList(instance, url, parent, -1); p = p + strlen(url) + 1; found = 1; --- 885,889 ---- printf("URL: %s\n", url); parent->playlist = 1; ! addToList(instance, url, parent, -1,0,-1); p = p + strlen(url) + 1; found = 1; *************** *** 892,895 **** --- 988,992 ---- printf("play: %i\n", l->play); printf("playlist: %i\n", l->playlist); + printf("entry: %i\n", l->entry); printf("speed: %i\n", l->speed); printf("cancelled: %i\n", l->cancelled); *************** *** 914,915 **** --- 1011,1038 ---- } } + + void markPlayed(Node * l) + { + Node *n; + + if (DEBUG) + printf("markPlayed\n",l->url); + + if (l->entry == -1) { + if (DEBUG) + printf("marking %s as played\n",l->url); + l->played = 1; + } else { + n = l; + while (n != NULL) { + if (n->entry == l->entry) { + if (DEBUG) + printf("marking %s as played\n",n->url); + n->played = 1; // set played flag for all mirror lists + } + n = n->next; + } + } + + } + Index: plugin-setup.h =================================================================== RCS file: /cvsroot/mplayerplug-in/mplayerplug-in/Source/plugin-setup.h,v retrieving revision 1.59 retrieving revision 1.60 diff -C2 -d -r1.59 -r1.60 *** plugin-setup.h 20 Aug 2006 16:52:46 -0000 1.59 --- plugin-setup.h 30 Oct 2006 18:46:20 -0000 1.60 *************** *** 115,118 **** --- 115,119 ---- int played; // set to 1 when media play is complete int frombutton; // set to 1 when link is called from srcToButton + int entry; // set to -1 by default, otherwise is the entry # in an ASX file long int bytes; // bytes downloaded long int totalbytes; // total bytes of file *************** *** 188,196 **** void deleteList(Node * l); void insertafter(Node * item, Node * newnode); ! void addToList(nsPluginInstance * instance, char *item, Node * parent, int speed); void addToEnd(Node * l, Node * newnode); void buildPlaylist(nsPluginInstance * instance, char *file, Node * parent); void printNode(Node * l); void printList(Node * l); //plugin-ui.cpp --- 189,198 ---- void deleteList(Node * l); void insertafter(Node * item, Node * newnode); ! void addToList(nsPluginInstance * instance, char *item, Node * parent, int speed,int mmsstream, int entry); void addToEnd(Node * l, Node * newnode); void buildPlaylist(nsPluginInstance * instance, char *file, Node * parent); void printNode(Node * l); void printList(Node * l); + void markPlayed(Node * l); //plugin-ui.cpp Index: plugin.cpp =================================================================== RCS file: /cvsroot/mplayerplug-in/mplayerplug-in/Source/plugin.cpp,v retrieving revision 1.321 retrieving revision 1.322 diff -C2 -d -r1.321 -r1.322 *** plugin.cpp 27 Oct 2006 20:36:14 -0000 1.321 --- plugin.cpp 30 Oct 2006 18:46:20 -0000 1.322 *************** *** 3144,3148 **** } fullyQualifyURL(this, (char *) item, localurl); ! addToList(this, localurl, tail, -1); pthread_mutex_unlock(&playlist_mutex); } --- 3144,3148 ---- } fullyQualifyURL(this, (char *) item, localurl); ! addToList(this, localurl, tail, -1,0,-1); pthread_mutex_unlock(&playlist_mutex); } Index: plugin-ui.cpp =================================================================== RCS file: /cvsroot/mplayerplug-in/mplayerplug-in/Source/plugin-ui.cpp,v retrieving revision 1.233 retrieving revision 1.234 diff -C2 -d -r1.233 -r1.234 *** plugin-ui.cpp 27 Oct 2006 20:36:14 -0000 1.233 --- plugin-ui.cpp 30 Oct 2006 18:46:20 -0000 1.234 *************** *** 2071,2075 **** gtk_widget_show(GTK_WIDGET(instance->mediaprogress_bar)); gtk_widget_set_usize(GTK_WIDGET(instance->mediaprogress_bar), ! win_width - (width * (multiplier + 1) + 20), height - 4); --- 2071,2075 ---- gtk_widget_show(GTK_WIDGET(instance->mediaprogress_bar)); gtk_widget_set_usize(GTK_WIDGET(instance->mediaprogress_bar), ! win_width - (width * (multiplier + 2) + 20), height - 4); |