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;
|
||||
}
|
||||
|
||||
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;
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue