aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHendrik Leppkes <h.leppkes@gmail.com>2018-04-05 17:09:35 +0200
committerHendrik Leppkes <h.leppkes@gmail.com>2018-04-15 10:18:26 +0200
commit8df8a9299364016027825a67534b93cd2b6af473 (patch)
tree477eb89b81131ba709bd0e09256a75ae04cb135b
parent250792be5e905cbcfd0b4858e57de9b007e74e44 (diff)
downloadffmpeg-8df8a9299364016027825a67534b93cd2b6af473.tar.gz
avcodec/aac_ac3_parser: account for data already in the parsing buffer
If a frame starts very close to a packet boundary, the start code may already have been added to the parsing buffer, indicated by a small negative value of "i", while the header is still being tracked in the "state" variable. Reduce the remaining size accordingly, otherwise trying to find the next frame could skip over the frame header and lump two frames together as one.
-rw-r--r--libavcodec/aac_ac3_parser.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/libavcodec/aac_ac3_parser.c b/libavcodec/aac_ac3_parser.c
index 019074b0dd..54e459844f 100644
--- a/libavcodec/aac_ac3_parser.c
+++ b/libavcodec/aac_ac3_parser.c
@@ -60,6 +60,9 @@ get_next:
s->remaining_size += i;
goto get_next;
}
+ else if (i < 0) {
+ s->remaining_size += i;
+ }
}
}
}