typefindfunctions: made mp3_type_find less aggressive

mp3_type_find could suggest already when only a single valid header
was found, if it ran out of data before the end of the next frame.
Therefore, ignore the last found frame if it was incomplete.
Fixes bug #579692.
This commit is contained in:
Arnout Vandecappelle 2009-05-07 14:59:36 +02:00 committed by Sebastian Dröge
parent ef473dd0ae
commit 192a34af40

View file

@ -931,6 +931,10 @@ mp3_type_find_at_offset (GstTypeFind * tf, guint64 start_off,
offset += length; offset += length;
} }
g_assert (found <= GST_MP3_TYPEFIND_TRY_HEADERS); g_assert (found <= GST_MP3_TYPEFIND_TRY_HEADERS);
if (head_data == NULL &&
gst_type_find_peek (tf, offset + start_off - 1, 1) == NULL)
/* Incomplete last frame - don't count it. */
found--;
if (found == GST_MP3_TYPEFIND_TRY_HEADERS || if (found == GST_MP3_TYPEFIND_TRY_HEADERS ||
(found >= GST_MP3_TYPEFIND_MIN_HEADERS && head_data == NULL)) { (found >= GST_MP3_TYPEFIND_MIN_HEADERS && head_data == NULL)) {
/* we can make a valid guess */ /* we can make a valid guess */