diff --git a/libavcodec/mlp_parser.c b/libavcodec/mlp_parser.c
index 3c0330f777c2c718b94fdda11777570c3ea5e0e7..4827354f18942aafc273b0f2afc51e97df80a19e 100644
--- a/libavcodec/mlp_parser.c
+++ b/libavcodec/mlp_parser.c
@@ -256,6 +256,9 @@ static int mlp_parse(AVCodecParserContext *s,
     if (buf_size == 0)
         return 0;
 
+    if (s->flags & PARSER_FLAG_COMPLETE_FRAMES) {
+        next = buf_size;
+    } else {
     if (!mp->in_sync) {
         // Not in sync - find a major sync header
 
@@ -315,6 +318,7 @@ static int mlp_parse(AVCodecParserContext *s,
     }
 
     mp->bytes_left = 0;
+    }
 
     sync_present = (AV_RB32(buf + 4) & 0xfffffffe) == 0xf8726fba;