diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2013-03-26 13:22:48 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2013-03-26 13:22:48 +0100 |
commit | 2cdedcbceab952297d5ee0f433b5a5c7482e48d6 (patch) | |
tree | d4e6a15939fa7655758c99ca15e369cd9d9c666a /libavcodec/utils.c | |
parent | 795b911bd8acaec4b6f7dc1590f63a529c028ac8 (diff) | |
parent | 75644335b907919057960716508477239c26fed4 (diff) | |
download | ffmpeg-2cdedcbceab952297d5ee0f433b5a5c7482e48d6.tar.gz |
Merge commit '75644335b907919057960716508477239c26fed4'
* commit '75644335b907919057960716508477239c26fed4':
lavc: Move start code finding to utils.c
Conflicts:
configure
libavcodec/mpegvideo.c
libavcodec/utils.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/utils.c')
-rw-r--r-- | libavcodec/utils.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/libavcodec/utils.c b/libavcodec/utils.c index d1b977e0e4..3f17bf5724 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -41,6 +41,7 @@ #include "avcodec.h" #include "dsputil.h" #include "libavutil/opt.h" +#include "mpegvideo.h" #include "thread.h" #include "frame_thread_encoder.h" #include "internal.h" @@ -3098,3 +3099,36 @@ int avpriv_bprint_to_extradata(AVCodecContext *avctx, struct AVBPrint *buf) avctx->extradata_size = buf->len; return 0; } + +const uint8_t *avpriv_mpv_find_start_code(const uint8_t *av_restrict p, + const uint8_t *end, + uint32_t *av_restrict state) +{ + int i; + + assert(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) + return p; + } + + while (p < end) { + if (p[-1] > 1 ) p += 3; + else if (p[-2] ) p += 2; + else if (p[-3]|(p[-1]-1)) p++; + else { + p++; + break; + } + } + + p = FFMIN(p, end) - 4; + *state = AV_RB32(p); + + return p + 4; +} |