diff options
author | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2021-08-05 01:45:21 +0200 |
---|---|---|
committer | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2021-08-25 23:01:53 +0200 |
commit | 19093100fd5c3100f15a5c41f99e1f5792997b73 (patch) | |
tree | 86001c17598be7398f1fa8b541f4dcfe65729f85 /libavformat | |
parent | e75ab15fd4579e7b4d5b12d756caeee338f0f62c (diff) | |
download | ffmpeg-19093100fd5c3100f15a5c41f99e1f5792997b73.tar.gz |
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 <andreas.rheinhardt@outlook.com>
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/aviobuf.c | 25 | ||||
-rw-r--r-- | libavformat/utils.c | 25 |
2 files changed, 25 insertions, 25 deletions
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->maxsize<newsize) + s->maxsize = 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->maxsize<newsize) - s->maxsize = 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) |