author | llornkcor <llornkcor> | 2002-04-20 21:02:20 (UTC) |
---|---|---|
committer | llornkcor <llornkcor> | 2002-04-20 21:02:20 (UTC) |
commit | b452044ec1b3327f25f8552045b4229c8af39bf7 (patch) (side-by-side diff) | |
tree | 1a3785f1af71fe38aabe131a2a8f0ad8a5be76c9 | |
parent | 99904a1df601bb5d1c0e6d43a3e04a63fe13cf51 (diff) | |
download | opie-b452044ec1b3327f25f8552045b4229c8af39bf7.zip opie-b452044ec1b3327f25f8552045b4229c8af39bf7.tar.gz opie-b452044ec1b3327f25f8552045b4229c8af39bf7.tar.bz2 |
http streaming
-rw-r--r-- | core/multimedia/opieplayer/libmad/libmad.pro | 2 | ||||
-rw-r--r-- | core/multimedia/opieplayer/libmad/libmadplugin.cpp | 55 |
2 files changed, 40 insertions, 17 deletions
diff --git a/core/multimedia/opieplayer/libmad/libmad.pro b/core/multimedia/opieplayer/libmad/libmad.pro index eddf242..679242b 100644 --- a/core/multimedia/opieplayer/libmad/libmad.pro +++ b/core/multimedia/opieplayer/libmad/libmad.pro @@ -4,9 +4,9 @@ HEADERS = libmad_version.h fixed.h bit.h timer.h stream.h frame.h synth.h de layer12.h layer3.h huffman.h libmad_global.h mad.h libmadplugin.h libmadpluginimpl.h SOURCES = version.c fixed.c bit.c timer.c stream.c frame.c synth.c decoder.c \ layer12.c layer3.c huffman.c libmadplugin.cpp libmadpluginimpl.cpp TARGET = madplugin -DESTDIR = ../../plugins/codecs +DESTDIR = ../../../plugins/codecs INCLUDEPATH += $(OPIEDIR)/include .. DEPENDPATH += ../$(OPIEDIR)/include .. LIBS += -lqpe -lm VERSION = 1.0.0 diff --git a/core/multimedia/opieplayer/libmad/libmadplugin.cpp b/core/multimedia/opieplayer/libmad/libmadplugin.cpp index 46f2450..4665408 100644 --- a/core/multimedia/opieplayer/libmad/libmadplugin.cpp +++ b/core/multimedia/opieplayer/libmad/libmadplugin.cpp @@ -16,8 +16,13 @@ ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ +#include <qapplication.h> +#include <qpe/config.h> +#include <qmessagebox.h> +#include <qstring.h> + #include <stdio.h> #include <stdarg.h> #include <stdlib.h> #include <sys/types.h> @@ -30,10 +35,9 @@ #include <time.h> #include <locale.h> #include <math.h> #include <assert.h> -#include <qapplication.h> -#include <qpe/config.h> + // for network handling #include <netinet/in.h> #include <netdb.h> @@ -232,8 +236,9 @@ int LibMadPlugin::http_read_line(int tcp_sock, char *buf, int size) { return offset; } int LibMadPlugin::http_open(const QString& path ) { + qDebug("Open http"); char *host; int port; char *request; int tcp_sock; @@ -241,29 +246,36 @@ int LibMadPlugin::http_open(const QString& path ) { char filename[PATH_MAX]; char c; char *arg =strdup(path.latin1()); + QString errorMsg; + /* Check for URL syntax */ - if (strncmp(arg, "http://", strlen("http://"))) - return (0); +// if (strncmp(arg, "http://", strlen("http://"))) { +// qDebug("Url syntax error"); +// return (0); +// } - /* Parse URL */ + qDebug("Parse URL"); port = 80; host = arg + strlen("http://"); - if ((request = strchr(host, '/')) == NULL) + if ((request = strchr(host, '/')) == NULL) { + qDebug("Url syntax 2error %s", host); return (0); + } *request++ = 0; if (strchr(host, ':') != NULL) /* port is specified */ { port = atoi(strchr(host, ':') + 1); *strchr(host, ':') = 0; } - /* Open a TCP socket */ - if (!(tcp_sock = tcp_open(host, port))) - { + qDebug("Open a TCP socket"); + if (!(tcp_sock = tcp_open(host, port))) { perror("http_open"); + errorMsg="http_open "+(QString)strerror(errno); + QMessageBox::message("OPiePlayer",errorMsg); return (0); } snprintf(filename, sizeof(filename) - strlen(host) - 75, "%s", request); @@ -273,13 +285,14 @@ int LibMadPlugin::http_open(const QString& path ) { * a html page and not the stream */ snprintf(http_request, sizeof(http_request), "GET /%s HTTP/1.0\r\n" /* "User-Agent: Mozilla/2.0 (Win95; I)\r\n" */ "Pragma: no-cache\r\n" "Host: %s\r\n" "Accept: */*\r\n" "\r\n", filename, host); - + qDebug("send"); send(tcp_sock, http_request, strlen(http_request), 0); - /* Parse server reply */ + qDebug("Parse server reply"); #if 0 + qDebug("do 0"); do read(tcp_sock, &c, sizeof(char)); while (c != ' '); read(tcp_sock, http_request, 4 * sizeof(char)); @@ -311,9 +324,9 @@ int LibMadPlugin::http_open(const QString& path ) { } if (strncmp(http_request, "Location:", 9) == 0) { - /* redirect */ + qDebug("redirect"); std::close(tcp_sock); http_request[strlen(http_request) - 1] = '\0'; @@ -321,9 +334,9 @@ int LibMadPlugin::http_open(const QString& path ) { } if (strncmp(http_request, "ICY ", 4) == 0) { - /* This is icecast streaming */ + qDebug(" This is icecast streaming"); if (strncmp(http_request + 4, "200 ", 4)) { fprintf(stderr, "http_open: %s\n", http_request); return 0; @@ -351,13 +364,18 @@ bool LibMadPlugin::open( const QString& path ) { d->bad_last_frame = 0; d->flush = TRUE; info = QString( "" ); - //qDebug( "Opening %s", path.latin1() ); - + qDebug( "Opening %s", path.latin1() ); + bool isStream=FALSE; if (path.left( 4 ) == "http" ) { d->input.fd = http_open(path); + if(d->input.fd == 0) { + qDebug("http_open error"); + } + isStream=TRUE; + qDebug("Opened ok"); } else { d->input.path = path.latin1(); d->input.fd = ::open( d->input.path, O_RDONLY ); @@ -365,10 +383,12 @@ bool LibMadPlugin::open( const QString& path ) { if (d->input.fd == -1) { qDebug("error opening %s", d->input.path ); return FALSE; } - + if(!isStream) { + qDebug("Print ID#tags"); printID3Tags(); + } #if defined(HAVE_MMAP) struct stat stat; if (fstat(d->input.fd, &stat) == -1) { @@ -394,10 +414,13 @@ bool LibMadPlugin::open( const QString& path ) { } d->input.eof = 0; +qDebug("about to mad_stream"); mad_stream_init(&d->stream); +qDebug("mad_frame"); mad_frame_init(&d->frame); +qDebug("mad_synth"); mad_synth_init(&d->synth); return TRUE; } |