[FFmpeg-devel] [PATCH v2 04/13] avpriv_find_start_code(): rewrite for loop for clarity
Scott Theisen
scott.the.elm at gmail.com
Thu Feb 3 20:44:41 EET 2022
---
libavcodec/utils.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/libavcodec/utils.c b/libavcodec/utils.c
index 8f8cc820bd..1a806b9fa8 100644
--- a/libavcodec/utils.c
+++ b/libavcodec/utils.c
@@ -944,18 +944,20 @@ const uint8_t *avpriv_find_start_code(const uint8_t *av_restrict p,
const uint8_t *end,
uint32_t *av_restrict state)
{
- int i;
-
av_assert0(p <= end);
if (p >= end)
return end;
- for (i = 0; i < 3; i++) {
- uint32_t tmp = *state << 8;
- *state = tmp + *(p++);
- if (tmp == 0x100 || p == end)
+ // read up to the first three bytes in p to enable reading a start code across
+ // two (to four) buffers
+ for (int i = 0; i < 3; i++) {
+ *state <<= 8;
+ *state += *p;
+ p++;
+ if (avpriv_start_code_is_valid(*state) || p == end)
return p;
}
+ // p is now properly incremented for the negative indices in the while loop
/* with memory address increasing left to right, we are looking for (in hexadecimal):
* 00 00 01 XX
--
2.32.0
More information about the ffmpeg-devel
mailing list