diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2014-10-27 04:24:20 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2014-11-01 18:26:22 +0100 |
commit | 76587eea6486bd7aaa65bcf8d923c88df9650843 (patch) | |
tree | 3365cb126936ebe49b641916f4383503c84b4470 | |
parent | 667fe8c75b0b1f666f3215c797e00acb1024b3e5 (diff) | |
download | ffmpeg-76587eea6486bd7aaa65bcf8d923c88df9650843.tar.gz |
avcodec/h264: simplify find_start_code()
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)
Conflicts:
libavcodec/h264.h
-rw-r--r-- | libavcodec/h264.h | 16 |
1 files changed, 4 insertions, 12 deletions
diff --git a/libavcodec/h264.h b/libavcodec/h264.h index ed0050a4df..e30e228bfb 100644 --- a/libavcodec/h264.h +++ b/libavcodec/h264.h @@ -37,6 +37,7 @@ #include "h264dsp.h" #include "h264pred.h" #include "h264qpel.h" +#include "internal.h" // for avpriv_find_start_code() #include "rectangle.h" #define MAX_SPS_COUNT 32 @@ -1031,20 +1032,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, |