X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Faviobuf.c;h=24c6b79097a7300e63a828bc583e0c37cfb59ccb;hb=2904d052b7ca8714fda5c039c958bc0a0ae40877;hp=738459e83034e7b2183c9c39e0fd8e7701caf961;hpb=4c91599484e115e9b51c884fc46cea3f8511f8ae;p=ffmpeg diff --git a/libavformat/aviobuf.c b/libavformat/aviobuf.c index 738459e8303..24c6b79097a 100644 --- a/libavformat/aviobuf.c +++ b/libavformat/aviobuf.c @@ -19,6 +19,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/bprint.h" #include "libavutil/crc.h" #include "libavutil/dict.h" #include "libavutil/intreadwrite.h" @@ -953,6 +954,24 @@ int64_t avio_seek_time(AVIOContext *s, int stream_index, return ret; } +int avio_read_to_bprint(AVIOContext *h, AVBPrint *pb, size_t max_size) +{ + int ret; + char buf[1024]; + while (max_size) { + ret = avio_read(h, buf, FFMIN(max_size, sizeof(buf))); + if (ret == AVERROR_EOF) + return 0; + if (ret <= 0) + return ret; + av_bprint_append_data(pb, buf, ret); + if (!av_bprint_is_complete(pb)) + return AVERROR(ENOMEM); + max_size -= ret; + } + return 0; +} + /* output in a dynamic buffer */ typedef struct DynBuffer {