diff mbox series

[FFmpeg-devel,v2,04/13] avpriv_find_start_code(): rewrite for loop for clarity

Message ID 20220203184450.5491-5-scott.the.elm@gmail.com
State New
Headers show
Series rewrite avpriv_find_start_code() for clarity | expand

Checks

Context Check Description
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished
andriy/make_ppc success Make finished
andriy/make_fate_ppc success Make fate finished

Commit Message

Scott Theisen Feb. 3, 2022, 6:44 p.m. UTC
---
 libavcodec/utils.c | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)
diff mbox series

Patch

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