diff options
author | Martin Storsjö <martin@martin.st> | 2013-03-25 14:42:57 +0400 |
---|---|---|
committer | Martin Storsjö <martin@martin.st> | 2013-03-26 11:48:12 +0400 |
commit | 75644335b907919057960716508477239c26fed4 (patch) | |
tree | c5caa37705a00b1ecd01ac603d04e349844b58af | |
parent | 613a37eca4c7b8eefceaa3e0231c23ad090ca94f (diff) |
lavc: Move start code finding to utils.c
This allows dropping the mpegvideo dependency from a number of
components.
This also fixes standalone building of the h264 parser, which
was broken in 64e438697.
Signed-off-by: Martin Storsjö <martin@martin.st>
-rwxr-xr-x | configure | 5 | ||||
-rw-r--r-- | libavcodec/mpegvideo.c | 33 | ||||
-rw-r--r-- | libavcodec/utils.c | 34 |
3 files changed, 36 insertions, 36 deletions
@@ -1514,7 +1514,7 @@ atrac1_decoder_select="mdct sinewin" atrac3_decoder_select="mdct" binkaudio_dct_decoder_select="mdct rdft dct sinewin" binkaudio_rdft_decoder_select="mdct rdft sinewin" -cavs_decoder_select="golomb h264chroma mpegvideo videodsp" +cavs_decoder_select="golomb h264chroma videodsp" comfortnoise_encoder_select="lpc" cook_decoder_select="mdct sinewin" cscd_decoder_select="lzo" @@ -1752,13 +1752,12 @@ mov_demuxer_suggest="zlib" mov_muxer_select="rtpenc_chain" mp3_demuxer_select="mpegaudio_parser" mp4_muxer_select="mov_muxer" -mpegts_muxer_select="adts_muxer latm_muxer mpegvideo" +mpegts_muxer_select="adts_muxer latm_muxer" mpegtsraw_demuxer_select="mpegts_demuxer" mxf_d10_muxer_select="mxf_muxer" ogg_demuxer_select="golomb" psp_muxer_select="mov_muxer" rtp_demuxer_select="sdp_demuxer" -rtp_muxer_select="mpegvideo" rtpdec_select="asf_demuxer rm_demuxer rtp_protocol mpegts_demuxer mov_demuxer" rtsp_demuxer_select="http_protocol rtpdec" rtsp_muxer_select="rtp_muxer http_protocol rtp_protocol rtpenc_chain" diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c index dab1485fcc..5635c26c83 100644 --- a/libavcodec/mpegvideo.c +++ b/libavcodec/mpegvideo.c @@ -158,39 +158,6 @@ static void mpeg_er_decode_mb(void *opaque, int ref, int mv_dir, int mv_type, ff_MPV_decode_mb(s, s->block); } -const uint8_t *avpriv_mpv_find_start_code(const uint8_t *restrict p, - const uint8_t *end, - uint32_t * 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; -} - /* init common dct for both encoder and decoder */ av_cold int ff_dct_common_init(MpegEncContext *s) { diff --git a/libavcodec/utils.c b/libavcodec/utils.c index e18f42d99a..d8ebda61dc 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -39,6 +39,7 @@ #include "avcodec.h" #include "dsputil.h" #include "libavutil/opt.h" +#include "mpegvideo.h" #include "thread.h" #include "internal.h" #include "bytestream.h" @@ -2197,3 +2198,36 @@ int avcodec_is_open(AVCodecContext *s) { return !!s->internal; } + +const uint8_t *avpriv_mpv_find_start_code(const uint8_t *restrict p, + const uint8_t *end, + uint32_t * 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; +} |