From: Tim-Philipp Müller Date: Wed, 3 Jun 2009 19:42:39 +0000 (+0100) Subject: vorbisdec: don't put invalid bitrate values into the taglist X-Git-Tag: 1.19.3~511^2~9588 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=20fb58be198e7d76ece4e6c635cda7c919fad6d2;p=platform%2Fupstream%2Fgstreamer.git vorbisdec: don't put invalid bitrate values into the taglist Bitrates are stored as 32-bit signed integers in the vorbis identification headers, but seem to be read incorrectly, namely as unsigned 32-bit integers, into the vorbis structure members which are of type long, which makes our check for values <= 0 fail with files that put -1 in there for unset values. --- diff --git a/ext/vorbis/vorbisdec.c b/ext/vorbis/vorbisdec.c index 1885be0..c5517bb 100644 --- a/ext/vorbis/vorbisdec.c +++ b/ext/vorbis/vorbisdec.c @@ -721,18 +721,18 @@ vorbis_handle_comment_packet (GstVorbisDec * vd, ogg_packet * packet) gst_tag_list_add (vd->taglist, GST_TAG_MERGE_REPLACE, GST_TAG_ENCODER_VERSION, vd->vi.version, GST_TAG_AUDIO_CODEC, "Vorbis", NULL); - if (vd->vi.bitrate_nominal > 0) { + if (vd->vi.bitrate_nominal > 0 && vd->vi.bitrate_nominal <= 0x7FFFFFFF) { gst_tag_list_add (vd->taglist, GST_TAG_MERGE_REPLACE, GST_TAG_NOMINAL_BITRATE, (guint) vd->vi.bitrate_nominal, NULL); bitrate = vd->vi.bitrate_nominal; } - if (vd->vi.bitrate_upper > 0) { + if (vd->vi.bitrate_upper > 0 && vd->vi.bitrate_upper <= 0x7FFFFFFF) { gst_tag_list_add (vd->taglist, GST_TAG_MERGE_REPLACE, GST_TAG_MAXIMUM_BITRATE, (guint) vd->vi.bitrate_upper, NULL); if (!bitrate) bitrate = vd->vi.bitrate_upper; } - if (vd->vi.bitrate_lower > 0) { + if (vd->vi.bitrate_lower > 0 && vd->vi.bitrate_lower <= 0x7FFFFFFF) { gst_tag_list_add (vd->taglist, GST_TAG_MERGE_REPLACE, GST_TAG_MINIMUM_BITRATE, (guint) vd->vi.bitrate_lower, NULL); if (!bitrate)