summaryrefslogtreecommitdiff
authorllornkcor <llornkcor>2002-04-23 00:04:57 (UTC)
committer llornkcor <llornkcor>2002-04-23 00:04:57 (UTC)
commit228dffdc2721ee13ca9491584d8cc46cd4807cc1 (patch) (unidiff)
treeb0431ae74b7a64272748899c556165d194a09740
parentb3190f8be01fb364f89d9de0a0dddb9a5ccebe77 (diff)
downloadopie-228dffdc2721ee13ca9491584d8cc46cd4807cc1.zip
opie-228dffdc2721ee13ca9491584d8cc46cd4807cc1.tar.gz
opie-228dffdc2721ee13ca9491584d8cc46cd4807cc1.tar.bz2
config fix
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/multimedia/opieplayer/libmad/libmadplugin.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/core/multimedia/opieplayer/libmad/libmadplugin.cpp b/core/multimedia/opieplayer/libmad/libmadplugin.cpp
index c744c6d..319e0ff 100644
--- a/core/multimedia/opieplayer/libmad/libmadplugin.cpp
+++ b/core/multimedia/opieplayer/libmad/libmadplugin.cpp
@@ -298,257 +298,257 @@ int LibMadPlugin::http_read_line(int tcp_sock, char *buf, int size) {
298 if (buf[offset] != '\r') /* Strip \r from answer */ 298 if (buf[offset] != '\r') /* Strip \r from answer */
299 offset++; 299 offset++;
300 } while (offset < size - 1 && buf[offset - 1] != '\n'); 300 } while (offset < size - 1 && buf[offset - 1] != '\n');
301 301
302 buf[offset] = 0; 302 buf[offset] = 0;
303 return offset; 303 return offset;
304} 304}
305 305
306int LibMadPlugin::http_open(const QString& path ) { 306int LibMadPlugin::http_open(const QString& path ) {
307 char *host; 307 char *host;
308 int port; 308 int port;
309 char *request; 309 char *request;
310 int tcp_sock; 310 int tcp_sock;
311 char http_request[PATH_MAX]; 311 char http_request[PATH_MAX];
312 char filename[PATH_MAX]; 312 char filename[PATH_MAX];
313 //char c; 313 //char c;
314 char *arg =strdup(path.latin1()); 314 char *arg =strdup(path.latin1());
315 315
316 /* Check for URL syntax */ 316 /* Check for URL syntax */
317 if (strncmp(arg, "http://", strlen("http://"))) { 317 if (strncmp(arg, "http://", strlen("http://"))) {
318 return (0); 318 return (0);
319 } 319 }
320 320
321 /* Parse URL */ 321 /* Parse URL */
322 port = 80; 322 port = 80;
323 host = arg + strlen("http://"); 323 host = arg + strlen("http://");
324 if ((request = strchr(host, '/')) == NULL) { 324 if ((request = strchr(host, '/')) == NULL) {
325 return (0); 325 return (0);
326 } 326 }
327 327
328 *request++ = 0; 328 *request++ = 0;
329 329
330 if (strchr(host, ':') != NULL) { /* port is specified */ 330 if (strchr(host, ':') != NULL) { /* port is specified */
331 port = atoi(strchr(host, ':') + 1); 331 port = atoi(strchr(host, ':') + 1);
332 *strchr(host, ':') = 0; 332 *strchr(host, ':') = 0;
333 } 333 }
334 334
335 /* Open a TCP socket */ 335 /* Open a TCP socket */
336 if (!(tcp_sock = tcp_open(host, port))) { 336 if (!(tcp_sock = tcp_open(host, port))) {
337 perror("http_open"); 337 perror("http_open");
338 return (0); 338 return (0);
339 } 339 }
340 340
341 snprintf(filename, sizeof(filename) - strlen(host) - 75, "%s", request); 341 snprintf(filename, sizeof(filename) - strlen(host) - 75, "%s", request);
342 342
343 /* Send HTTP GET request */ 343 /* Send HTTP GET request */
344 /* Please don't use a Agent know by shoutcast (Lynx, Mozilla) seems to be reconized and print 344 /* Please don't use a Agent know by shoutcast (Lynx, Mozilla) seems to be reconized and print
345 * a html page and not the stream */ 345 * a html page and not the stream */
346 snprintf(http_request, sizeof(http_request), "GET /%s HTTP/1.0\r\n" 346 snprintf(http_request, sizeof(http_request), "GET /%s HTTP/1.0\r\n"
347 /* "User-Agent: Mozilla/2.0 (Win95; I)\r\n" */ 347 /* "User-Agent: Mozilla/2.0 (Win95; I)\r\n" */
348 "Pragma: no-cache\r\n" "Host: %s\r\n" "Accept: */*\r\n" "\r\n", filename, host); 348 "Pragma: no-cache\r\n" "Host: %s\r\n" "Accept: */*\r\n" "\r\n", filename, host);
349 349
350 send(tcp_sock, http_request, strlen(http_request), 0); 350 send(tcp_sock, http_request, strlen(http_request), 0);
351 351
352 /* Parse server reply */ 352 /* Parse server reply */
353#if 0 353#if 0
354 do 354 do
355 read(tcp_sock, &c, sizeof(char)); 355 read(tcp_sock, &c, sizeof(char));
356 while (c != ' '); 356 while (c != ' ');
357 read(tcp_sock, http_request, 4 * sizeof(char)); 357 read(tcp_sock, http_request, 4 * sizeof(char));
358 http_request[4] = 0; 358 http_request[4] = 0;
359 if (strcmp(http_request, "200 ")) { 359 if (strcmp(http_request, "200 ")) {
360 fprintf(stderr, "http_open: "); 360 fprintf(stderr, "http_open: ");
361 do { 361 do {
362 read(tcp_sock, &c, sizeof(char)); 362 read(tcp_sock, &c, sizeof(char));
363 fprintf(stderr, "%c", c); 363 fprintf(stderr, "%c", c);
364 } while (c != '\r'); 364 } while (c != '\r');
365 fprintf(stderr, "\n"); 365 fprintf(stderr, "\n");
366 return (0); 366 return (0);
367 } 367 }
368#endif 368#endif
369 369
370 QString name; 370 QString name;
371 QString genre; 371 QString genre;
372 QString bitrate; 372 QString bitrate;
373 QString url; 373 QString url;
374 QString message = tr("Info: "); 374 QString message = tr("Info: ");
375 do { 375 do {
376 376
377 int len; 377 int len;
378 378
379 len = http_read_line(tcp_sock, http_request, sizeof(http_request)); 379 len = http_read_line(tcp_sock, http_request, sizeof(http_request));
380 380
381 if (len == -1) { 381 if (len == -1) {
382 qDebug( "http_open: "+ QString(strerror(errno)) +"\n"); 382 qDebug( "http_open: "+ QString(strerror(errno)) +"\n");
383 return 0; 383 return 0;
384 } 384 }
385 385
386 if (QString(http_request).left(9) == "Location:") { 386 if (QString(http_request).left(9) == "Location:") {
387 /* redirect */ 387 /* redirect */
388 std::close(tcp_sock); 388 std::close(tcp_sock);
389 http_request[strlen(http_request) - 1] = '\0'; 389 http_request[strlen(http_request) - 1] = '\0';
390 return http_open(&http_request[10]); 390 return http_open(&http_request[10]);
391 } 391 }
392 392
393 if (QString(http_request).left(4) == "ICY ") { 393 if (QString(http_request).left(4) == "ICY ") {
394 /* This is shoutcast/icecast streaming */ 394 /* This is shoutcast/icecast streaming */
395 if (strncmp(http_request + 4, "200 ", 4)) { 395 if (strncmp(http_request + 4, "200 ", 4)) {
396 qDebug("http_open: " + QString(http_request) + "\n"); 396 qDebug("http_open: " + QString(http_request) + "\n");
397 return 0; 397 return 0;
398 } 398 }
399 } else if (QString(http_request).left(4) == "icy-") { 399 } else if (QString(http_request).left(4) == "icy-") {
400 /* we can have: icy-noticeX, icy-name, icy-genre, icy-url, icy-pub, icy-metaint, icy-br */ 400 /* we can have: icy-noticeX, icy-name, icy-genre, icy-url, icy-pub, icy-metaint, icy-br */
401 if ( QString( http_request ).left( 8 ) == "icy-name" ) { 401 if ( QString( http_request ).left( 8 ) == "icy-name" ) {
402 name = tr("Name: ") + QString(http_request).mid(9, (QString(http_request).length())- 9 ); 402 name = tr("Name: ") + QString(http_request).mid(9, (QString(http_request).length())- 9 );
403 } else if ( QString( http_request ).left( 9 ) == "icy-genre" ) { 403 } else if ( QString( http_request ).left( 9 ) == "icy-genre" ) {
404 genre = tr("Genre: ") + QString(http_request).mid(10, (QString(http_request).length())-10 ); 404 genre = tr("Genre: ") + QString(http_request).mid(10, (QString(http_request).length())-10 );
405 } else if ( QString( http_request ).left( 6 ) == "icy-br" ) { 405 } else if ( QString( http_request ).left( 6 ) == "icy-br" ) {
406 bitrate = tr("Bitrate: ") + QString(http_request).mid(7, (QString(http_request).length())- 7 ); 406 bitrate = tr("Bitrate: ") + QString(http_request).mid(7, (QString(http_request).length())- 7 );
407 } else if ( QString( http_request ).left( 7 ) == "icy-url" ) { 407 } else if ( QString( http_request ).left( 7 ) == "icy-url" ) {
408 url = tr("URL: ") + QString(http_request).mid(8, (QString(http_request).length())- 8 ); 408 url = tr("URL: ") + QString(http_request).mid(8, (QString(http_request).length())- 8 );
409 } else if ( QString( http_request ).left( 10 ) == "icy-notice" ) { 409 } else if ( QString( http_request ).left( 10 ) == "icy-notice" ) {
410 message += QString(http_request).mid(11, QString(http_request).length()-11 ) ; 410 message += QString(http_request).mid(11, QString(http_request).length()-11 ) ;
411 } 411 }
412 } 412 }
413 } while (strcmp(http_request, "\n") != 0); 413 } while (strcmp(http_request, "\n") != 0);
414 414
415 info = QString(name + genre + url + bitrate + message).replace( QRegExp("\n"), " : " ); 415 info = QString(name + genre + url + bitrate + message).replace( QRegExp("\n"), " : " );
416 416
417 qDebug("Stream info: " + info); 417 qDebug("Stream info: " + info);
418 418
419 return (tcp_sock); 419 return (tcp_sock);
420} 420}
421 421
422 422
423 423
424bool LibMadPlugin::open( const QString& path ) { 424bool LibMadPlugin::open( const QString& path ) {
425 debugMsg( "LibMadPlugin::open" ); 425 debugMsg( "LibMadPlugin::open" );
426 Config cfg("MediaPlayer"); 426 Config cfg("OpiePlayer");
427 cfg.setGroup("Options"); 427 cfg.setGroup("Options");
428 bufferSize = cfg.readNumEntry("MPeg_BufferSize",MPEG_BUFFER_SIZE); 428 bufferSize = cfg.readNumEntry("MPeg_BufferSize",MPEG_BUFFER_SIZE);
429 qDebug("buffer size is %d", bufferSize); 429 qDebug("buffer size is %d", bufferSize);
430 d->bad_last_frame = 0; 430 d->bad_last_frame = 0;
431 d->flush = TRUE; 431 d->flush = TRUE;
432 info = QString( "" ); 432 info = QString( "" );
433 433
434 //qDebug( "Opening %s", path.latin1() ); 434 //qDebug( "Opening %s", path.latin1() );
435 435
436 436
437 if (path.left( 4 ) == "http" ) { 437 if (path.left( 4 ) == "http" ) {
438 qDebug("Test2"); 438 qDebug("Test2");
439 // in case of any error we get 0 here 439 // in case of any error we get 0 here
440 if ( !(http_open(path) == 0) ) { 440 if ( !(http_open(path) == 0) ) {
441 qDebug("Test3"); 441 qDebug("Test3");
442 d->input.fd = http_open(path); 442 d->input.fd = http_open(path);
443 } else { 443 } else {
444 qDebug("Test5"); 444 qDebug("Test5");
445 return FALSE; 445 return FALSE;
446 } 446 }
447 } else { 447 } else {
448 qDebug("Test4"); 448 qDebug("Test4");
449 d->input.path = path.latin1(); 449 d->input.path = path.latin1();
450 d->input.fd = ::open( d->input.path, O_RDONLY ); 450 d->input.fd = ::open( d->input.path, O_RDONLY );
451 // thats a better place, since it should only seek for ID3 tags on mp3 files, not streams 451 // thats a better place, since it should only seek for ID3 tags on mp3 files, not streams
452 printID3Tags(); 452 printID3Tags();
453 } 453 }
454 if (d->input.fd == -1) { 454 if (d->input.fd == -1) {
455 qDebug("error opening %s", d->input.path ); 455 qDebug("error opening %s", d->input.path );
456 return FALSE; 456 return FALSE;
457 } 457 }
458 458
459// printID3Tags(); 459// printID3Tags();
460 460
461#if defined(HAVE_MMAP) 461#if defined(HAVE_MMAP)
462 struct stat stat; 462 struct stat stat;
463 if (fstat(d->input.fd, &stat) == -1) { 463 if (fstat(d->input.fd, &stat) == -1) {
464 //qDebug("error calling fstat"); return FALSE; 464 //qDebug("error calling fstat"); return FALSE;
465 } 465 }
466 if (S_ISREG(stat.st_mode) && stat.st_size > 0) { 466 if (S_ISREG(stat.st_mode) && stat.st_size > 0) {
467 d->input.length = stat.st_size; 467 d->input.length = stat.st_size;
468 d->input.fdm = map_file(d->input.fd, &d->input.length); 468 d->input.fdm = map_file(d->input.fd, &d->input.length);
469 if (d->input.fdm == 0) { 469 if (d->input.fdm == 0) {
470 qDebug("error mmapping file"); return FALSE; 470 qDebug("error mmapping file"); return FALSE;
471 } 471 }
472 d->input.data = (unsigned char *)d->input.fdm; 472 d->input.data = (unsigned char *)d->input.fdm;
473 } 473 }
474#endif 474#endif
475 475
476 if (d->input.data == 0) { 476 if (d->input.data == 0) {
477 d->input.data = (unsigned char *)malloc( bufferSize /*MPEG_BUFFER_SIZE*/); 477 d->input.data = (unsigned char *)malloc( bufferSize /*MPEG_BUFFER_SIZE*/);
478 if (d->input.data == 0) { 478 if (d->input.data == 0) {
479 qDebug("error allocating input buffer"); 479 qDebug("error allocating input buffer");
480 return FALSE; 480 return FALSE;
481 } 481 }
482 d->input.length = 0; 482 d->input.length = 0;
483 } 483 }
484 484
485 d->input.eof = 0; 485 d->input.eof = 0;
486 486
487 mad_stream_init(&d->stream); 487 mad_stream_init(&d->stream);
488 mad_frame_init(&d->frame); 488 mad_frame_init(&d->frame);
489 mad_synth_init(&d->synth); 489 mad_synth_init(&d->synth);
490 490
491 return TRUE; 491 return TRUE;
492} 492}
493 493
494 494
495bool LibMadPlugin::close() { 495bool LibMadPlugin::close() {
496 debugMsg( "LibMadPlugin::close" ); 496 debugMsg( "LibMadPlugin::close" );
497 497
498 int result = TRUE; 498 int result = TRUE;
499 499
500 mad_synth_finish(&d->synth); 500 mad_synth_finish(&d->synth);
501 mad_frame_finish(&d->frame); 501 mad_frame_finish(&d->frame);
502 mad_stream_finish(&d->stream); 502 mad_stream_finish(&d->stream);
503 503
504#if defined(HAVE_MMAP) 504#if defined(HAVE_MMAP)
505 if (d->input.fdm) { 505 if (d->input.fdm) {
506 if (unmap_file(d->input.fdm, d->input.length) == -1) { 506 if (unmap_file(d->input.fdm, d->input.length) == -1) {
507 qDebug("error munmapping file"); 507 qDebug("error munmapping file");
508 result = FALSE; 508 result = FALSE;
509 } 509 }
510 d->input.fdm = 0; 510 d->input.fdm = 0;
511 d->input.data = 0; 511 d->input.data = 0;
512 } 512 }
513#endif 513#endif
514 514
515 if (d->input.data) { 515 if (d->input.data) {
516 free(d->input.data); 516 free(d->input.data);
517 d->input.data = 0; 517 d->input.data = 0;
518 } 518 }
519 519
520 if (::close(d->input.fd) == -1) { 520 if (::close(d->input.fd) == -1) {
521 qDebug("error closing file %s", d->input.path); 521 qDebug("error closing file %s", d->input.path);
522 result = FALSE; 522 result = FALSE;
523 } 523 }
524 524
525 d->input.fd = 0; 525 d->input.fd = 0;
526 526
527 return result; 527 return result;
528} 528}
529 529
530 530
531bool LibMadPlugin::isOpen() { 531bool LibMadPlugin::isOpen() {
532 debugMsg( "LibMadPlugin::isOpen" ); 532 debugMsg( "LibMadPlugin::isOpen" );
533 return ( d->input.fd != 0 ); 533 return ( d->input.fd != 0 );
534} 534}
535 535
536 536
537int LibMadPlugin::audioStreams() { 537int LibMadPlugin::audioStreams() {
538 debugMsg( "LibMadPlugin::audioStreams" ); 538 debugMsg( "LibMadPlugin::audioStreams" );
539 return 1; 539 return 1;
540} 540}
541 541
542 542
543int LibMadPlugin::audioChannels( int ) { 543int LibMadPlugin::audioChannels( int ) {
544 debugMsg( "LibMadPlugin::audioChannels" ); 544 debugMsg( "LibMadPlugin::audioChannels" );
545/* 545/*
546 long t; short t1[5]; audioReadSamples( t1, 2, 1, t, 0 ); 546 long t; short t1[5]; audioReadSamples( t1, 2, 1, t, 0 );
547 qDebug( "LibMadPlugin::audioChannels: %i", d->frame.header.mode > 0 ? 2 : 1 ); 547 qDebug( "LibMadPlugin::audioChannels: %i", d->frame.header.mode > 0 ? 2 : 1 );
548 return d->frame.header.mode > 0 ? 2 : 1; 548 return d->frame.header.mode > 0 ? 2 : 1;
549*/ 549*/
550 return 2; 550 return 2;
551} 551}
552 552
553 553
554int LibMadPlugin::audioFrequency( int ) { 554int LibMadPlugin::audioFrequency( int ) {