comparison src/aac/libmp4.c @ 3138:8e26022bb814

aac: handle premature EOF on shoutcast streams more gracefully. in combination with the neon work, we no longer have a problem. (closes #57)
author William Pitcock <nenolod@atheme.org>
date Thu, 07 May 2009 11:14:36 -0500
parents 1f13c07c4d80
children
comparison
equal deleted inserted replaced
3137:8c884237cecd 3138:8e26022bb814
649 guchar streambuffer[BUFFER_SIZE]; 649 guchar streambuffer[BUFFER_SIZE];
650 gulong bufferconsumed = 0; 650 gulong bufferconsumed = 0;
651 gulong samplerate = 0; 651 gulong samplerate = 0;
652 guchar channels = 0; 652 guchar channels = 0;
653 gulong buffervalid = 0; 653 gulong buffervalid = 0;
654 gulong ret = 0;
654 gchar *ttemp = NULL, *stemp = NULL; 655 gchar *ttemp = NULL, *stemp = NULL;
655 gchar *temp = g_strdup(filename); 656 gchar *temp = g_strdup(filename);
656 gchar *xmmstitle = NULL; 657 gchar *xmmstitle = NULL;
657 gint bitrate; 658 gint bitrate;
658 gboolean remote = aud_str_has_prefix_nocase(filename, "http:") || 659 gboolean remote = aud_str_has_prefix_nocase(filename, "http:") ||
745 746
746 if(bufferconsumed > 0) 747 if(bufferconsumed > 0)
747 { 748 {
748 buffervalid -= bufferconsumed; 749 buffervalid -= bufferconsumed;
749 memmove(streambuffer, &streambuffer[bufferconsumed], buffervalid); 750 memmove(streambuffer, &streambuffer[bufferconsumed], buffervalid);
750 buffervalid += aud_vfs_fread(&streambuffer[buffervalid], 1, 751 ret = aud_vfs_fread(&streambuffer[buffervalid], 1,
751 BUFFER_SIZE-buffervalid, file); 752 BUFFER_SIZE-buffervalid, file);
753 buffervalid += ret;
752 bufferconsumed = 0; 754 bufferconsumed = 0;
755
756 /* XXX: buffer underrun on a shoutcast stream, well this is unpleasant. --nenolod */
757 if (ret == 0 && remote == TRUE)
758 break;
753 759
754 ttemp = aud_vfs_get_metadata(file, "stream-name"); 760 ttemp = aud_vfs_get_metadata(file, "stream-name");
755 761
756 if (ttemp != NULL) 762 if (ttemp != NULL)
757 stemp = aud_vfs_get_metadata(file, "track-name"); 763 stemp = aud_vfs_get_metadata(file, "track-name");