Mercurial > audlegacy-plugins
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"); |