From b02350bd62e0eb59ee263af731e23195427268c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Fri, 24 Nov 2017 10:36:01 +0200 Subject: [PATCH] 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. --- gst/audioparsers/gstflacparse.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gst/audioparsers/gstflacparse.c b/gst/audioparsers/gstflacparse.c index a222429802..b1f729cbb3 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 */