summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Hervey <edward@centricular.com>2015-11-30 08:42:35 +0100
committerEdward Hervey <bilboed@bilboed.com>2015-12-02 14:12:55 +0100
commit6888871d2acf3d4b6f219685602464b56f87cea6 (patch)
treee7d53048d0a7ce7fe2a74826092d55cca749dee4
parentf173bd7d16a491bf13d08635b5170a8a6fc01306 (diff)
aacparse: Avoid over-skipping when checking LOAS config
There might be multiple LOAS config in a row in a full frame. The first one might be a multi-layer config (which we can't properly parse yet)... but then followed by a valid (single-layer) one. The code was previously skipping whole frames (instead of just the LOAS config we failed to read) resulting in multiple frames (seen up to 6s in some situation) being dropped before finally getting the configuration. https://bugzilla.gnome.org/show_bug.cgi?id=758826
-rw-r--r--gst/audioparsers/gstaacparse.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/gst/audioparsers/gstaacparse.c b/gst/audioparsers/gstaacparse.c
index cd75b7f53..3e4d64cc2 100644
--- a/gst/audioparsers/gstaacparse.c
+++ b/gst/audioparsers/gstaacparse.c
@@ -1302,7 +1302,10 @@ gst_aac_parse_handle_frame (GstBaseParse * parse,
/* This is pretty normal when skipping data at the start of
* random stream (MPEG-TS capture for example) */
GST_DEBUG_OBJECT (aacparse, "Error reading LOAS config. Skipping.");
- *skipsize = map.size;
+ /* Since we don't fully parse the LOAS config, we don't know for sure
+ * how much to skip. Just skip 1 to end up to the next marker and
+ * resume parsing from there */
+ *skipsize = 1;
goto exit;
}