Merge release 0.15.10 from branch 'v0.15.x'
Conflicts: NEWS configure.ac src/input/mms_input_plugin.c
This commit is contained in:
commit
9dda53e1d2
8
NEWS
8
NEWS
@ -101,6 +101,14 @@ ver 0.16 (20??/??/??)
|
|||||||
* added libwrap support
|
* added libwrap support
|
||||||
|
|
||||||
|
|
||||||
|
ver 0.15.10 (2010/05/30)
|
||||||
|
* input:
|
||||||
|
- mms: fix memory leak in error handler
|
||||||
|
- mms: initialize the "eof" attribute
|
||||||
|
* decoders:
|
||||||
|
- mad: properly calculate ID3 size without libid3tag
|
||||||
|
|
||||||
|
|
||||||
ver 0.15.9 (2010/03/21)
|
ver 0.15.9 (2010/03/21)
|
||||||
* decoders:
|
* decoders:
|
||||||
- mad: fix crash when seeking at end of song
|
- mad: fix crash when seeking at end of song
|
||||||
|
@ -468,7 +468,27 @@ static void mp3_parse_id3(struct mp3_data *data, size_t tagsize,
|
|||||||
/* This code is enabled when libid3tag is disabled. Instead
|
/* This code is enabled when libid3tag is disabled. Instead
|
||||||
of parsing the ID3 frame, it just skips it. */
|
of parsing the ID3 frame, it just skips it. */
|
||||||
|
|
||||||
mad_stream_skip(&data->stream, tagsize);
|
size_t count = data->stream.bufend - data->stream.this_frame;
|
||||||
|
|
||||||
|
if (tagsize <= count) {
|
||||||
|
mad_stream_skip(&data->stream, tagsize);
|
||||||
|
} else {
|
||||||
|
mad_stream_skip(&data->stream, count);
|
||||||
|
|
||||||
|
while (count < tagsize) {
|
||||||
|
size_t len = tagsize - count;
|
||||||
|
char ignored[1024];
|
||||||
|
if (len > sizeof(ignored))
|
||||||
|
len = sizeof(ignored);
|
||||||
|
|
||||||
|
len = decoder_read(data->decoder, data->input_stream,
|
||||||
|
ignored, len);
|
||||||
|
if (len == 0)
|
||||||
|
break;
|
||||||
|
else
|
||||||
|
count += len;
|
||||||
|
}
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -476,16 +496,16 @@ static void mp3_parse_id3(struct mp3_data *data, size_t tagsize,
|
|||||||
/**
|
/**
|
||||||
* This function emulates libid3tag when it is disabled. Instead of
|
* This function emulates libid3tag when it is disabled. Instead of
|
||||||
* doing a real analyzation of the frame, it just checks whether the
|
* doing a real analyzation of the frame, it just checks whether the
|
||||||
* frame begins with the string "ID3". If so, it returns the full
|
* frame begins with the string "ID3". If so, it returns the length
|
||||||
* length.
|
* of the ID3 frame.
|
||||||
*/
|
*/
|
||||||
static signed long
|
static signed long
|
||||||
id3_tag_query(const void *p0, size_t length)
|
id3_tag_query(const void *p0, size_t length)
|
||||||
{
|
{
|
||||||
const char *p = p0;
|
const char *p = p0;
|
||||||
|
|
||||||
return length > 3 && memcmp(p, "ID3", 3) == 0
|
return length >= 10 && memcmp(p, "ID3", 3) == 0
|
||||||
? length
|
? (p[8] << 7) + p[9] + 10
|
||||||
: 0;
|
: 0;
|
||||||
}
|
}
|
||||||
#endif /* !HAVE_ID3TAG */
|
#endif /* !HAVE_ID3TAG */
|
||||||
|
@ -60,10 +60,13 @@ input_mms_open(const char *url, GError **error_r)
|
|||||||
|
|
||||||
m->mms = mmsx_connect(NULL, NULL, url, 128 * 1024);
|
m->mms = mmsx_connect(NULL, NULL, url, 128 * 1024);
|
||||||
if (m->mms == NULL) {
|
if (m->mms == NULL) {
|
||||||
|
g_free(m);
|
||||||
g_set_error(error_r, mms_quark(), 0, "mmsx_connect() failed");
|
g_set_error(error_r, mms_quark(), 0, "mmsx_connect() failed");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m->eof = false;
|
||||||
|
|
||||||
/* XX is this correct? at least this selects the ffmpeg
|
/* XX is this correct? at least this selects the ffmpeg
|
||||||
decoder, which seems to work fine*/
|
decoder, which seems to work fine*/
|
||||||
m->base.mime = g_strdup("audio/x-ms-wma");
|
m->base.mime = g_strdup("audio/x-ms-wma");
|
||||||
|
Loading…
Reference in New Issue
Block a user