matroskaparse: don't error out if there's not enough data in the adapter

gst_matroska_parse_take() would return FLOW_ERROR instead of
FLOW_EOS in case there's less data in the adapter than requested,
because buffer is NULL in that case which triggers the error
code path. This made the unit test fail (occasionally at least,
because of a bug in the unit test there's a race and it would
happen only sporadically).
This commit is contained in:
Tim-Philipp Müller 2014-06-28 17:37:23 +01:00
parent c0f5644b80
commit 155a3fec93

View file

@ -2274,10 +2274,10 @@ gst_matroska_parse_take (GstMatroskaParse * parse, guint64 bytes,
ret = GST_FLOW_ERROR;
goto exit;
}
if (gst_adapter_available (parse->common.adapter) >= bytes)
buffer = gst_adapter_take_buffer (parse->common.adapter, bytes);
else
ret = GST_FLOW_EOS;
if (gst_adapter_available (parse->common.adapter) < bytes)
return GST_FLOW_EOS;
buffer = gst_adapter_take_buffer (parse->common.adapter, bytes);
if (G_LIKELY (buffer)) {
gst_ebml_read_init (ebml, GST_ELEMENT_CAST (parse), buffer,
parse->common.offset);
@ -2286,6 +2286,7 @@ gst_matroska_parse_take (GstMatroskaParse * parse, guint64 bytes,
ret = GST_FLOW_ERROR;
}
exit:
return ret;
}