From 19093100fd5c3100f15a5c41f99e1f5792997b73 Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt Date: Thu, 5 Aug 2021 01:45:21 +0200 Subject: avformat/utils: Move ffio_limit() to aviobuf It is the more natural place for it given that it only deals with I/O; in fact, the function already has the ffio prefix and its declaration already is in avio_internal.h. Signed-off-by: Andreas Rheinhardt --- libavformat/aviobuf.c | 25 +++++++++++++++++++++++++ libavformat/utils.c | 25 ------------------------- 2 files changed, 25 insertions(+), 25 deletions(-) (limited to 'libavformat') diff --git a/libavformat/aviobuf.c b/libavformat/aviobuf.c index 164b07ae6a..9322ed38bc 100644 --- a/libavformat/aviobuf.c +++ b/libavformat/aviobuf.c @@ -1015,6 +1015,31 @@ int ffio_ensure_seekback(AVIOContext *s, int64_t buf_size) return 0; } +int ffio_limit(AVIOContext *s, int size) +{ + if (s->maxsize>= 0) { + int64_t pos = avio_tell(s); + int64_t remaining = s->maxsize - pos; + if (remaining < size) { + int64_t newsize = avio_size(s); + if (!s->maxsize || s->maxsizemaxsize = newsize - !newsize; + if (pos > s->maxsize && s->maxsize >= 0) + s->maxsize = AVERROR(EIO); + if (s->maxsize >= 0) + remaining = s->maxsize - pos; + } + + if (s->maxsize >= 0 && remaining < size && size > 1) { + av_log(NULL, remaining ? AV_LOG_ERROR : AV_LOG_DEBUG, + "Truncating packet of size %d to %"PRId64"\n", + size, remaining + !remaining); + size = remaining + !remaining; + } + } + return size; +} + int ffio_set_buf_size(AVIOContext *s, int buf_size) { uint8_t *buffer; diff --git a/libavformat/utils.c b/libavformat/utils.c index 39f082d98d..9706b141ad 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -213,31 +213,6 @@ static const AVCodec *find_probe_decoder(AVFormatContext *s, const AVStream *st, /* an arbitrarily chosen "sane" max packet size -- 50M */ #define SANE_CHUNK_SIZE (50000000) -int ffio_limit(AVIOContext *s, int size) -{ - if (s->maxsize>= 0) { - int64_t pos = avio_tell(s); - int64_t remaining= s->maxsize - pos; - if (remaining < size) { - int64_t newsize = avio_size(s); - if (!s->maxsize || s->maxsizemaxsize = newsize - !newsize; - if (pos > s->maxsize && s->maxsize >= 0) - s->maxsize = AVERROR(EIO); - if (s->maxsize >= 0) - remaining = s->maxsize - pos; - } - - if (s->maxsize >= 0 && remaining < size && size > 1) { - av_log(NULL, remaining ? AV_LOG_ERROR : AV_LOG_DEBUG, - "Truncating packet of size %d to %"PRId64"\n", - size, remaining + !remaining); - size = remaining + !remaining; - } - } - return size; -} - /* Read the data in sane-sized chunks and append to pkt. * Return the number of bytes read or an error. */ static int append_packet_chunked(AVIOContext *s, AVPacket *pkt, int size) -- cgit v1.2.3