diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2017-11-24 10:36:01 +0200 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2017-11-29 17:28:25 +0200 |
commit | b02350bd62e0eb59ee263af731e23195427268c6 (patch) | |
tree | 1dcb85062ccb9220833f6436d445e23a7eaf8d70 /gst | |
parent | a31581064013e729ae03f33c086cadb8919e17ab (diff) |
flacparse: Request at least the full header size when parsing headers
Otherwise baseparse will incrementally send us bigger buffers until the
full header size is reached, which is not only pointless but also means
that baseparse will reallocate and copy into a bigger buffer for every
input buffers. In pull mode that's done in 64kb increments, in push mode
usually in much smaller increments, causing a lot of overhead for
example when parsing high-quality coverart.
Diffstat (limited to 'gst')
-rw-r--r-- | gst/audioparsers/gstflacparse.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/gst/audioparsers/gstflacparse.c b/gst/audioparsers/gstflacparse.c index a22242980..b1f729cbb 100644 --- a/gst/audioparsers/gstflacparse.c +++ b/gst/audioparsers/gstflacparse.c @@ -793,6 +793,7 @@ gst_flac_parse_handle_frame (GstBaseParse * parse, GST_DEBUG_OBJECT (flacparse, "Found metadata block of size %u", size); framesize = size; + gst_base_parse_set_min_frame_size (GST_BASE_PARSE (flacparse), framesize); goto cleanup; } @@ -1605,6 +1606,9 @@ gst_flac_parse_parse_frame (GstBaseParse * parse, GstBaseParseFrame * frame, if (res != GST_FLOW_OK) goto cleanup; + } else { + /* Header length */ + gst_base_parse_set_min_frame_size (GST_BASE_PARSE (flacparse), 4); } /* DROPPED because we pushed already or will push all headers manually */ |