avcodec/h264: simplify find_start_code()
authorMichael Niedermayer <michaelni@gmx.at>
Mon, 27 Oct 2014 03:24:20 +0000 (04:24 +0100)
committerCarl Eugen Hoyos <cehoyos@ag.or.at>
Sat, 1 Nov 2014 16:09:16 +0000 (17:09 +0100)
this also uses avpriv_find_start_code(), though no speed change is expected as
the area searched is generally small

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 3b678da5e386c138316954e867d595f946666051)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/h264.h

index 9083026..cf84e93 100644 (file)
@@ -37,6 +37,7 @@
 #include "h264dsp.h"
 #include "h264pred.h"
 #include "h264qpel.h"
+#include "internal.h" // for avpriv_find_start_code()
 #include "mpegutils.h"
 #include "parser.h"
 #include "qpeldsp.h"
@@ -1095,20 +1096,11 @@ static av_always_inline int get_dct8x8_allowed(H264Context *h)
 static inline int find_start_code(const uint8_t *buf, int buf_size,
                            int buf_index, int next_avc)
 {
-    // start code prefix search
-    for (; buf_index + 3 < next_avc; buf_index++)
-        // This should always succeed in the first iteration.
-        if (buf[buf_index]     == 0 &&
-            buf[buf_index + 1] == 0 &&
-            buf[buf_index + 2] == 1)
-            break;
+    uint32_t state = -1;
 
-    buf_index += 3;
+    buf_index = avpriv_find_start_code(buf + buf_index, buf + next_avc + 1, &state) - buf - 1;
 
-    if (buf_index >= buf_size)
-        return buf_size;
-
-    return buf_index;
+    return FFMIN(buf_index, buf_size);
 }
 
 static inline int get_avc_nalsize(H264Context *h, const uint8_t *buf,