aboutsummaryrefslogtreecommitdiffstats
path: root/libavformat
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2021-08-05 01:45:21 +0200
committerAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2021-08-25 23:01:53 +0200
commit19093100fd5c3100f15a5c41f99e1f5792997b73 (patch)
tree86001c17598be7398f1fa8b541f4dcfe65729f85 /libavformat
parente75ab15fd4579e7b4d5b12d756caeee338f0f62c (diff)
downloadffmpeg-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.c25
-rw-r--r--libavformat/utils.c25
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)