Mercurial > audlegacy-plugins
diff src/mpg123/mpg123.c @ 469:1256144d2a6e trunk
[svn] - fix crash
- finish shout metadata support
author | nenolod |
---|---|
date | Sun, 21 Jan 2007 02:09:42 -0800 |
parents | a3bf53abebf5 |
children | 220515815cf8 |
line wrap: on
line diff
--- a/src/mpg123/mpg123.c Sun Jan 21 01:55:08 2007 -0800 +++ b/src/mpg123/mpg123.c Sun Jan 21 02:09:42 2007 -0800 @@ -671,6 +671,7 @@ static void * decode_loop(void *arg) { + static gchar *old_title = NULL; gboolean have_xing_header = FALSE, vbr = FALSE; int disp_count = 0; char *filename = arg; @@ -761,7 +762,17 @@ } } else { - mpgdec_title = mpgdec_metadata("stream-name"); + gchar *tmp = mpgdec_metadata("stream-name"); + old_title = mpgdec_metadata("track-name"); + + if (old_title != NULL) + { + mpgdec_title = g_strdup_printf("%s (%s)", old_title, tmp); + g_free(tmp); + } + else + mpgdec_title = tmp; + mpgdec_length = -1; } @@ -848,10 +859,32 @@ mpgdec_bitrate * 1000, mpgdec_frequency, mpgdec_stereo); } + } else disp_count--; play_frame(&fr); + + { + gchar *new_title = mpgdec_metadata("track-name"); + gchar *srv_name = mpgdec_metadata("stream-name"); + + if (old_title == NULL || g_strcasecmp(old_title, new_title)) + { + g_free(mpgdec_title); + mpgdec_title = g_strdup_printf("%s (%s)", + new_title, srv_name); + + g_free(old_title); + old_title = new_title; + + g_free(srv_name); + + mpgdec_ip.set_info(mpgdec_title, mpgdec_length, + mpgdec_bitrate * 1000, + mpgdec_frequency, mpgdec_stereo); + } + } } else { mpgdec_ip.output->buffer_free(); @@ -865,6 +898,11 @@ } } g_free(mpgdec_title); + + if (old_title != NULL) + g_free(old_title); + + old_title = NULL; mpgdec_title = NULL; mpgdec_stream_close(); if (output_opened && !audio_error)