mirror of https://git.ffmpeg.org/ffmpeg.git
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>
This commit is contained in:
parent
e75ab15fd4
commit
19093100fd
|
@ -1015,6 +1015,31 @@ int ffio_ensure_seekback(AVIOContext *s, int64_t buf_size)
|
||||||
return 0;
|
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)
|
int ffio_set_buf_size(AVIOContext *s, int buf_size)
|
||||||
{
|
{
|
||||||
uint8_t *buffer;
|
uint8_t *buffer;
|
||||||
|
|
|
@ -213,31 +213,6 @@ static const AVCodec *find_probe_decoder(AVFormatContext *s, const AVStream *st,
|
||||||
/* an arbitrarily chosen "sane" max packet size -- 50M */
|
/* an arbitrarily chosen "sane" max packet size -- 50M */
|
||||||
#define SANE_CHUNK_SIZE (50000000)
|
#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.
|
/* Read the data in sane-sized chunks and append to pkt.
|
||||||
* Return the number of bytes read or an error. */
|
* Return the number of bytes read or an error. */
|
||||||
static int append_packet_chunked(AVIOContext *s, AVPacket *pkt, int size)
|
static int append_packet_chunked(AVIOContext *s, AVPacket *pkt, int size)
|
||||||
|
|
Loading…
Reference in New Issue