summaryrefslogtreecommitdiff
authorharlekin <harlekin>2002-04-22 21:47:09 (UTC)
committer harlekin <harlekin>2002-04-22 21:47:09 (UTC)
commitf77f012023dbe7582a4b4297f61c6521ad8a3aa5 (patch) (side-by-side diff)
tree3d41a0320169e8b2749e7cee98f14e0435fe05e3
parentcca7f8ae4f60ae9b6c704d200ab015233abdd4d7 (diff)
downloadopie-f77f012023dbe7582a4b4297f61c6521ad8a3aa5.zip
opie-f77f012023dbe7582a4b4297f61c6521ad8a3aa5.tar.gz
opie-f77f012023dbe7582a4b4297f61c6521ad8a3aa5.tar.bz2
get shoutcast support better, now all stream information are shown in the mediaplayer
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/multimedia/opieplayer/libmad/libmadplugin.cpp449
1 files changed, 228 insertions, 221 deletions
diff --git a/core/multimedia/opieplayer/libmad/libmadplugin.cpp b/core/multimedia/opieplayer/libmad/libmadplugin.cpp
index 7de4282..0f952f4 100644
--- a/core/multimedia/opieplayer/libmad/libmadplugin.cpp
+++ b/core/multimedia/opieplayer/libmad/libmadplugin.cpp
@@ -19,2 +19,4 @@
**********************************************************************/
+// largly modified by Maximilian Reiss <max.reiss@gmx.de>
+
#include <stdio.h>
@@ -33,3 +35,6 @@
#include <assert.h>
+
#include <qapplication.h>
+#include <qmessagebox.h>
+
#include <qpe/config.h>
@@ -200,4 +205,5 @@ int LibMadPlugin::udp_open(char *address, int port) {
- if ((host = gethostbyname(address)) == NULL)
+ if ((host = gethostbyname(address)) == NULL) {
return (0);
+ }
@@ -206,12 +212,13 @@ int LibMadPlugin::udp_open(char *address, int port) {
/* Create a UDP socket */
- if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
+ if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
return (0);
+ }
/* Allow multiple instance of the client to share the same address and port */
- if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char *)&enable, sizeof(unsigned long int)) < 0)
+ if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char *)&enable, sizeof(unsigned long int)) < 0) {
return (0);
+ }
/* If the address is multicast, register to the multicast group */
- if (is_address_multicast(stAddr.sin_addr.s_addr))
- {
+ if (is_address_multicast(stAddr.sin_addr.s_addr)) {
/* Bind the socket to port */
@@ -220,4 +227,5 @@ int LibMadPlugin::udp_open(char *address, int port) {
stLclAddr.sin_port = stAddr.sin_port;
- if (bind(sock, (struct sockaddr *)&stLclAddr, sizeof(stLclAddr)) < 0)
+ if (bind(sock, (struct sockaddr *)&stLclAddr, sizeof(stLclAddr)) < 0) {
return (0);
+ }
@@ -226,7 +234,6 @@ int LibMadPlugin::udp_open(char *address, int port) {
stMreq.imr_interface.s_addr = INADDR_ANY;
- if (setsockopt(sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char *)&stMreq, sizeof(stMreq)) < 0)
+ if (setsockopt(sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char *)&stMreq, sizeof(stMreq)) < 0) {
return (0);
- }
- else
- {
+ }
+ } else {
/* Bind the socket to port */
@@ -235,6 +242,6 @@ int LibMadPlugin::udp_open(char *address, int port) {
stLclAddr.sin_port = htons(0);
- if (bind(sock, (struct sockaddr *)&stLclAddr, sizeof(stLclAddr)) < 0)
+ if (bind(sock, (struct sockaddr *)&stLclAddr, sizeof(stLclAddr)) < 0) {
return (0);
+ }
}
-
return (sock);
@@ -252,4 +259,5 @@ int LibMadPlugin::tcp_open(char *address, int port) {
- if ((host = gethostbyname(address)) == NULL)
+ if ((host = gethostbyname(address)) == NULL) {
return (0);
+ }
@@ -257,4 +265,5 @@ int LibMadPlugin::tcp_open(char *address, int port) {
- if ((sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0)
+ if ((sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) {
return (0);
+ }
@@ -262,7 +271,9 @@ int LibMadPlugin::tcp_open(char *address, int port) {
l.l_linger = 5;
- if (setsockopt(sock, SOL_SOCKET, SO_LINGER, (char *)&l, sizeof(l)) < 0)
+ if (setsockopt(sock, SOL_SOCKET, SO_LINGER, (char *)&l, sizeof(l)) < 0) {
return (0);
+ }
- if (connect(sock, (struct sockaddr *)&stAddr, sizeof(stAddr)) < 0)
+ if (connect(sock, (struct sockaddr *)&stAddr, sizeof(stAddr)) < 0) {
return (0);
+ }
@@ -283,4 +294,3 @@ int LibMadPlugin::http_read_line(int tcp_sock, char *buf, int size) {
- do
- {
+ do {
if (std::read(tcp_sock, buf + offset, 1) < 0)
@@ -289,4 +299,3 @@ int LibMadPlugin::http_read_line(int tcp_sock, char *buf, int size) {
offset++;
- }
- while (offset < size - 1 && buf[offset - 1] != '\n');
+ } while (offset < size - 1 && buf[offset - 1] != '\n');
@@ -307,4 +316,5 @@ int LibMadPlugin::http_open(const QString& path ) {
/* Check for URL syntax */
- if (strncmp(arg, "http://", strlen("http://")))
+ if (strncmp(arg, "http://", strlen("http://"))) {
return (0);
+ }
@@ -313,8 +323,9 @@ int LibMadPlugin::http_open(const QString& path ) {
host = arg + strlen("http://");
- if ((request = strchr(host, '/')) == NULL)
+ if ((request = strchr(host, '/')) == NULL) {
return (0);
+ }
+
*request++ = 0;
- if (strchr(host, ':') != NULL) /* port is specified */
- {
+ if (strchr(host, ':') != NULL) { /* port is specified */
port = atoi(strchr(host, ':') + 1);
@@ -324,4 +335,3 @@ int LibMadPlugin::http_open(const QString& path ) {
/* Open a TCP socket */
- if (!(tcp_sock = tcp_open(host, port)))
- {
+ if (!(tcp_sock = tcp_open(host, port))) {
perror("http_open");
@@ -336,4 +346,4 @@ int LibMadPlugin::http_open(const QString& path ) {
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);
+ /* "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);
@@ -348,11 +358,8 @@ int LibMadPlugin::http_open(const QString& path ) {
http_request[4] = 0;
- if (strcmp(http_request, "200 "))
- {
+ if (strcmp(http_request, "200 ")) {
fprintf(stderr, "http_open: ");
- do
- {
+ do {
read(tcp_sock, &c, sizeof(char));
fprintf(stderr, "%c", c);
- }
- while (c != '\r');
+ } while (c != '\r');
fprintf(stderr, "\n");
@@ -362,4 +369,10 @@ int LibMadPlugin::http_open(const QString& path ) {
- do
- {
+ QString name;
+ QString genre;
+ QString bitrate;
+ QString url;
+ QString message = tr("Info: ");
+
+ do {
+
int len;
@@ -368,4 +381,3 @@ int LibMadPlugin::http_open(const QString& path ) {
- if (len == -1)
- {
+ if (len == -1) {
fprintf(stderr, "http_open: %s\n", strerror(errno));
@@ -374,4 +386,3 @@ int LibMadPlugin::http_open(const QString& path ) {
- if (strncmp(http_request, "Location:", 9) == 0)
- {
+ if (strncmp(http_request, "Location:", 9) == 0) {
/* redirect */
@@ -384,7 +395,5 @@ int LibMadPlugin::http_open(const QString& path ) {
- if (strncmp(http_request, "ICY ", 4) == 0)
- {
+ if (strncmp(http_request, "ICY ", 4) == 0) {
/* This is icecast streaming */
- if (strncmp(http_request + 4, "200 ", 4))
- {
+ if (strncmp(http_request + 4, "200 ", 4)) {
fprintf(stderr, "http_open: %s\n", http_request);
@@ -392,11 +401,21 @@ int LibMadPlugin::http_open(const QString& path ) {
}
- }
- else if (strncmp(http_request, "icy-", 4) == 0)
- {
+ } else if (strncmp(http_request, "icy-", 4) == 0) {
/* we can have: icy-noticeX, icy-name, icy-genre, icy-url, icy-pub, icy-metaint, icy-br */
- /* Don't print these - mpg123 doesn't */
- /* fprintf(stderr,"%s\n",http_request); */
+ if ( QString( http_request ).left( 8 ) == "icy-name" ) {
+ name = tr("Name: ") + QString(http_request).mid(9, (QString(http_request).length())- 9 );
+ } else if ( QString( http_request ).left( 9 ) == "icy-genre" ) {
+ genre = tr("Genre: ") + QString(http_request).mid(10, (QString(http_request).length())-10 );
+ } else if ( QString( http_request ).left( 6 ) == "icy-br" ) {
+ bitrate = tr("Bitrate: ") + QString(http_request).mid(7, (QString(http_request).length())- 7 );
+ } else if ( QString( http_request ).left( 7 ) == "icy-url" ) {
+ url = tr("URL: ") + QString(http_request).mid(8, (QString(http_request).length())- 8 );
+ } else if ( QString( http_request ).left( 10 ) == "icy-notice" ) {
+ message += QString(http_request).mid(11, QString(http_request).length()-11 ) ;
+ }
}
- }
- while (strcmp(http_request, "\n") != 0);
+ } while (strcmp(http_request, "\n") != 0);
+
+ info = QString(name + genre + url + bitrate + message).replace( QRegExp("\n"), " : " );
+
+ qDebug("Stream info: " + info);
@@ -406,2 +425,3 @@ int LibMadPlugin::http_open(const QString& path ) {
+
bool LibMadPlugin::open( const QString& path ) {
@@ -420,4 +440,6 @@ bool LibMadPlugin::open( const QString& path ) {
if (path.left( 4 ) == "http" ) {
- d->input.fd = http_open(path);
-
+ // in case of any error we get 0 here
+ if ( !(http_open(path)==0) ) {
+ d->input.fd = http_open(path);
+ }
} else {
@@ -425,5 +447,7 @@ bool LibMadPlugin::open( const QString& path ) {
d->input.fd = ::open( d->input.path, O_RDONLY );
+ // thats a better place, since it should only seek for ID3 tags on mp3 files, not streams
+ printID3Tags();
}
if (d->input.fd == -1) {
- qDebug("error opening %s", d->input.path );
+// qDebug("error opening %s", d->input.path );
return FALSE;
@@ -431,3 +455,3 @@ bool LibMadPlugin::open( const QString& path ) {
- printID3Tags();
+// printID3Tags();
@@ -436,11 +460,11 @@ bool LibMadPlugin::open( const QString& path ) {
if (fstat(d->input.fd, &stat) == -1) {
- qDebug("error calling fstat"); return FALSE;
+ //qDebug("error calling fstat"); return FALSE;
}
if (S_ISREG(stat.st_mode) && stat.st_size > 0) {
- d->input.length = stat.st_size;
- d->input.fdm = map_file(d->input.fd, &d->input.length);
- if (d->input.fdm == 0) {
- qDebug("error mmapping file"); return FALSE;
- }
- d->input.data = (unsigned char *)d->input.fdm;
+ d->input.length = stat.st_size;
+ d->input.fdm = map_file(d->input.fd, &d->input.length);
+ if (d->input.fdm == 0) {
+ qDebug("error mmapping file"); return FALSE;
+ }
+ d->input.data = (unsigned char *)d->input.fdm;
}
@@ -450,7 +474,7 @@ bool LibMadPlugin::open( const QString& path ) {
d->input.data = (unsigned char *)malloc( bufferSize /*MPEG_BUFFER_SIZE*/);
- if (d->input.data == 0) {
- qDebug("error allocating input buffer");
- return FALSE;
- }
- d->input.length = 0;
+ if (d->input.data == 0) {
+ qDebug("error allocating input buffer");
+ return FALSE;
+ }
+ d->input.length = 0;
}
@@ -478,8 +502,8 @@ bool LibMadPlugin::close() {
if (d->input.fdm) {
- if (unmap_file(d->input.fdm, d->input.length) == -1) {
- qDebug("error munmapping file");
- result = FALSE;
- }
- d->input.fdm = 0;
- d->input.data = 0;
+ if (unmap_file(d->input.fdm, d->input.length) == -1) {
+ qDebug("error munmapping file");
+ result = FALSE;
+ }
+ d->input.fdm = 0;
+ d->input.data = 0;
}
@@ -489,3 +513,3 @@ bool LibMadPlugin::close() {
free(d->input.data);
- d->input.data = 0;
+ d->input.data = 0;
}
@@ -494,3 +518,3 @@ bool LibMadPlugin::close() {
qDebug("error closing file %s", d->input.path);
- result = FALSE;
+ result = FALSE;
}
@@ -518,5 +542,5 @@ int LibMadPlugin::audioChannels( int ) {
/*
- long t; short t1[5]; audioReadSamples( t1, 2, 1, t, 0 );
- qDebug( "LibMadPlugin::audioChannels: %i", d->frame.header.mode > 0 ? 2 : 1 );
- return d->frame.header.mode > 0 ? 2 : 1;
+ long t; short t1[5]; audioReadSamples( t1, 2, 1, t, 0 );
+ qDebug( "LibMadPlugin::audioChannels: %i", d->frame.header.mode > 0 ? 2 : 1 );
+ return d->frame.header.mode > 0 ? 2 : 1;
*/
@@ -559,4 +583,4 @@ long LibMadPlugin::audioGetSample( int ) {
bool LibMadPlugin::audioReadSamples( short *, int, long, int ) {
- debugMsg( "LibMadPlugin::audioReadSamples" );
- return FALSE;
+debugMsg( "LibMadPlugin::audioReadSamples" );
+return FALSE;
}
@@ -565,5 +589,5 @@ bool LibMadPlugin::audioReadSamples( short *, int, long, int ) {
bool LibMadPlugin::audioReReadSamples( short *, int, long, int ) {
- debugMsg( "LibMadPlugin::audioReReadSamples" );
+debugMsg( "LibMadPlugin::audioReReadSamples" );
return FALSE;
-}
+ }
*/
@@ -579,34 +603,34 @@ bool LibMadPlugin::read() {
if (d->input.fdm) {
- unsigned long skip = 0;
+ unsigned long skip = 0;
- if (d->stream.next_frame) {
- struct stat stat;
+ if (d->stream.next_frame) {
+ struct stat stat;
- if (fstat(d->input.fd, &stat) == -1)
- return FALSE;
+ if (fstat(d->input.fd, &stat) == -1)
+ return FALSE;
- if (stat.st_size + MAD_BUFFER_GUARD <= (signed)d->input.length)
- return FALSE;
+ if (stat.st_size + MAD_BUFFER_GUARD <= (signed)d->input.length)
+ return FALSE;
- // file size changed; update memory map
- skip = d->stream.next_frame - d->input.data;
+ // file size changed; update memory map
+ skip = d->stream.next_frame - d->input.data;
- if (unmap_file(d->input.fdm, d->input.length) == -1) {
- d->input.fdm = 0;
- d->input.data = 0;
- return FALSE;
- }
+ if (unmap_file(d->input.fdm, d->input.length) == -1) {
+ d->input.fdm = 0;
+ d->input.data = 0;
+ return FALSE;
+ }
- d->input.length = stat.st_size;
+ d->input.length = stat.st_size;
- d->input.fdm = map_file(d->input.fd, &d->input.length);
- if (d->input.fdm == 0) {
- d->input.data = 0;
- return FALSE;
- }
+ d->input.fdm = map_file(d->input.fd, &d->input.length);
+ if (d->input.fdm == 0) {
+ d->input.data = 0;
+ return FALSE;
+ }
- d->input.data = (unsigned char *)d->input.fdm;
- }
+ d->input.data = (unsigned char *)d->input.fdm;
+ }
- mad_stream_buffer(&d->stream, d->input.data + skip, d->input.length - skip);
+ mad_stream_buffer(&d->stream, d->input.data + skip, d->input.length - skip);
@@ -615,29 +639,29 @@ bool LibMadPlugin::read() {
{
- if (d->stream.next_frame) {
- memmove(d->input.data, d->stream.next_frame,
- d->input.length = &d->input.data[d->input.length] - d->stream.next_frame);
- }
-
- do {
- len = ::read(d->input.fd, d->input.data + d->input.length, bufferSize /* MPEG_BUFFER_SIZE*/ - d->input.length);
- }
- while (len == -1 && errno == EINTR);
-
- if (len == -1) {
- qDebug("error reading audio");
- return FALSE;
- }
- else if (len == 0) {
- d->input.eof = 1;
-
- assert(bufferSize /*MPEG_BUFFER_SIZE*/ - d->input.length >= MAD_BUFFER_GUARD);
-
- while (len < MAD_BUFFER_GUARD)
- d->input.data[d->input.length + len++] = 0;
- }
-
- mad_stream_buffer(&d->stream, d->input.data, d->input.length += len);
+ if (d->stream.next_frame) {
+ memmove(d->input.data, d->stream.next_frame,
+ d->input.length = &d->input.data[d->input.length] - d->stream.next_frame);
+ }
+
+ do {
+ len = ::read(d->input.fd, d->input.data + d->input.length, bufferSize /* MPEG_BUFFER_SIZE*/ - d->input.length);
+ }
+ while (len == -1 && errno == EINTR);
+
+ if (len == -1) {
+ qDebug("error reading audio");
+ return FALSE;
+ }
+ else if (len == 0) {
+ d->input.eof = 1;
+
+ assert(bufferSize /*MPEG_BUFFER_SIZE*/ - d->input.length >= MAD_BUFFER_GUARD);
+
+ while (len < MAD_BUFFER_GUARD)
+ d->input.data[d->input.length + len++] = 0;
+ }
+
+ mad_stream_buffer(&d->stream, d->input.data, d->input.length += len);
}
- return TRUE;
+ return TRUE;
}
@@ -650,4 +674,3 @@ static const int shift = MAD_F_FRACBITS + 1 - bits;
-inline long audio_linear_dither( mad_fixed_t sample, mad_fixed_t& error )
-{
+inline long audio_linear_dither( mad_fixed_t sample, mad_fixed_t& error ) {
sample += error;
@@ -660,15 +683,14 @@ inline long audio_linear_dither( mad_fixed_t sample, mad_fixed_t& error )
-inline void audio_pcm( short *data, unsigned int nsamples, mad_fixed_t *left, mad_fixed_t *right )
-{
+inline void audio_pcm( short *data, unsigned int nsamples, mad_fixed_t *left, mad_fixed_t *right ) {
if ( right ) {
- while (nsamples--) {
- data[0] = audio_linear_dither( *left++, left_err );
- data[1] = audio_linear_dither( *right++, right_err );
- data += 2;
- }
+ while (nsamples--) {
+ data[0] = audio_linear_dither( *left++, left_err );
+ data[1] = audio_linear_dither( *right++, right_err );
+ data += 2;
+ }
} else {
- while (nsamples--) {
- data[0] = data[1] = audio_linear_dither( *left++, left_err );
- data += 2;
- }
+ while (nsamples--) {
+ data[0] = data[1] = audio_linear_dither( *left++, left_err );
+ data += 2;
+ }
}
@@ -687,9 +709,10 @@ bool LibMadPlugin::decode( short *output, long samples, long& samplesMade ) {
- if ( samples > maxBuffered )
- samples = maxBuffered;
+ if ( samples > maxBuffered ) {
+ samples = maxBuffered;
+ }
if ( d->flush ) {
- buffered = 0;
- offset = 0;
- d->flush = FALSE;
+ buffered = 0;
+ offset = 0;
+ d->flush = FALSE;
}
@@ -698,21 +721,22 @@ bool LibMadPlugin::decode( short *output, long samples, long& samplesMade ) {
- while (mad_frame_decode(&d->frame, &d->stream) == -1) {
- if (!MAD_RECOVERABLE(d->stream.error)) {
- debugMsg( "feed me" );
- return FALSE; // Feed me
- }
- if ( d->stream.error == MAD_ERROR_BADCRC ) {
- mad_frame_mute(&d->frame);
- qDebug( "error decoding, bad crc" );
- }
- }
+ while (mad_frame_decode(&d->frame, &d->stream) == -1) {
+ if (!MAD_RECOVERABLE(d->stream.error)) {
+ debugMsg( "feed me" );
+ return FALSE; // Feed me
+ }
+ if ( d->stream.error == MAD_ERROR_BADCRC ) {
+ mad_frame_mute(&d->frame);
+ qDebug( "error decoding, bad crc" );
+ }
+ }
- mad_synth_frame(&d->synth, &d->frame);
- int decodedSamples = d->synth.pcm.length;
- memcpy( &(buffer[0][offset]), d->synth.pcm.samples[0], decodedSamples * sizeof(mad_fixed_t) );
- if ( d->synth.pcm.channels == 2 )
- memcpy( &(buffer[1][offset]), d->synth.pcm.samples[1], decodedSamples * sizeof(mad_fixed_t) );
- offset += decodedSamples;
- buffered += decodedSamples;
+ mad_synth_frame(&d->synth, &d->frame);
+ int decodedSamples = d->synth.pcm.length;
+ memcpy( &(buffer[0][offset]), d->synth.pcm.samples[0], decodedSamples * sizeof(mad_fixed_t) );
+ if ( d->synth.pcm.channels == 2 )
+ memcpy( &(buffer[1][offset]), d->synth.pcm.samples[1], decodedSamples * sizeof(mad_fixed_t) );
+ offset += decodedSamples;
+ buffered += decodedSamples;
}
+
//qApp->processEvents();
@@ -723,4 +747,5 @@ bool LibMadPlugin::decode( short *output, long samples, long& samplesMade ) {
memmove( buffer[0], &(buffer[0][samples]), (buffered - samples) * sizeof(mad_fixed_t) );
- if ( d->synth.pcm.channels == 2 )
+ if ( d->synth.pcm.channels == 2 ) {
memmove( buffer[1], &(buffer[1][samples]), (buffered - samples) * sizeof(mad_fixed_t) );
+ }
buffered -= samples;
@@ -730,10 +755,3 @@ bool LibMadPlugin::decode( short *output, long samples, long& samplesMade ) {
-/*
-bool LibMadPlugin::audioReadMonoSamples( short *, long, long&, int ) {
- debugMsg( "LibMadPlugin::audioReadMonoSamples" );
- return FALSE;
-}
-
-
-bool LibMadPlugin::audioReadStereoSamples( short *output, long samples, long& samplesMade, int ) {
+/*bool LibMadPlugin::audioReadStereoSamples( short *output, long samples, long& samplesMade, int ) {
*/
@@ -745,31 +763,20 @@ bool LibMadPlugin::audioReadSamples( short *output, int /*channels*/, long sampl
if ( samples == 0 )
- return FALSE;
+ return FALSE;
do {
- if ( needInput )
- if ( !read() ) {
-// if ( d->input.eof )
-// needInput = FALSE;
-// else
- return FALSE;
- }
+ if ( needInput )
+ if ( !read() ) {
+ return FALSE;
+ }
- needInput = FALSE;
+ needInput = FALSE;
- if ( decode( output, samples, samplesMade ) )
- return TRUE;
- else
- needInput = TRUE;
+ if ( decode( output, samples, samplesMade ) )
+ return TRUE;
+ else
+ needInput = TRUE;
}
while ( ( samplesMade < samples ) && ( !d->input.eof ) );
-/*
- static bool firstTimeThru = TRUE;
- if ( firstTimeThru ) {
- firstTimeThru = FALSE;
- decode( output, samples, samplesMade );
- return FALSE;
- } else
-*/
- return FALSE;
+ return FALSE;
}
@@ -789,4 +796,4 @@ void LibMadPlugin::printID3Tags() {
if ( ::lseek( d->input.fd, -128, SEEK_END ) == -1 ) {
- qDebug( "error seeking to id3 tags" );
- return;
+ qDebug( "error seeking to id3 tags" );
+ return;
}
@@ -794,4 +801,4 @@ void LibMadPlugin::printID3Tags() {
if ( ::read( d->input.fd, id3v1, 128 ) != 128 ) {
- qDebug( "error reading in id3 tags" );
- return;
+ qDebug( "error reading in id3 tags" );
+ return;
}
@@ -799,23 +806,23 @@ void LibMadPlugin::printID3Tags() {
if ( ::strncmp( (const char *)id3v1, "TAG", 3 ) != 0 ) {
- debugMsg( "sorry, no id3 tags" );
+ debugMsg( "sorry, no id3 tags" );
} else {
- int len[5] = { 30, 30, 30, 4, 30 };
- QString label[5] = { tr( "Title" ), tr( "Artist" ), tr( "Album" ), tr( "Year" ), tr( "Comment" ) };
- char *ptr = id3v1 + 3, *ptr2 = ptr + len[0];
- qDebug( "ID3 tags in file:" );
- info = "";
- for ( int i = 0; i < 5; ptr += len[i], i++, ptr2 += len[i] ) {
- char push = *ptr2;
- *ptr2 = '\0';
- char *ptr3 = ptr2;
- while ( ptr3-1 >= ptr && isspace(ptr3[-1]) ) ptr3--;
- char push2 = *ptr3; *ptr3 = '\0';
- if ( strcmp( ptr, "" ) )
- info += ( i != 0 ? ", " : "" ) + label[i] + ": " + ptr;
- //qDebug( info.latin1() );
- *ptr3 = push2;
- *ptr2 = push;
- }
- if (id3v1[126] == 0 && id3v1[127] != 0)
- info += tr( ", Track: " ) + id3v1[127];
+ int len[5] = { 30, 30, 30, 4, 30 };
+ QString label[5] = { tr( "Title" ), tr( "Artist" ), tr( "Album" ), tr( "Year" ), tr( "Comment" ) };
+ char *ptr = id3v1 + 3, *ptr2 = ptr + len[0];
+ qDebug( "ID3 tags in file:" );
+ info = "";
+ for ( int i = 0; i < 5; ptr += len[i], i++, ptr2 += len[i] ) {
+ char push = *ptr2;
+ *ptr2 = '\0';
+ char *ptr3 = ptr2;
+ while ( ptr3-1 >= ptr && isspace(ptr3[-1]) ) ptr3--;
+ char push2 = *ptr3; *ptr3 = '\0';
+ if ( strcmp( ptr, "" ) )
+ info += ( i != 0 ? ", " : "" ) + label[i] + ": " + ptr;
+ //qDebug( info.latin1() );
+ *ptr3 = push2;
+ *ptr2 = push;
+ }
+ if (id3v1[126] == 0 && id3v1[127] != 0)
+ info += tr( ", Track: " ) + id3v1[127];
}
@@ -823,3 +830,3 @@ void LibMadPlugin::printID3Tags() {
if ( ::lseek(d->input.fd, 0, SEEK_SET) == -1 ) {
- qDebug( "error seeking back to beginning" );
+ qDebug( "error seeking back to beginning" );
return;