ffmpeg | branch: master | Andrey Utkin <andrey.krieger.ut...@gmail.com> | Wed Jul 23 16:12:38 2014 +0300| [8a4c0866dc7d718b5ee3f0af60d4317cd133d83f] | committer: Michael Niedermayer
avio: Introduce avio_read_to_bprint(avioctx, bp, max_size) Signed-off-by: Michael Niedermayer <michae...@gmx.at> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=8a4c0866dc7d718b5ee3f0af60d4317cd133d83f --- doc/APIchanges | 3 +++ libavformat/avio.h | 9 +++++++++ libavformat/aviobuf.c | 18 ++++++++++++++++++ libavformat/version.h | 4 ++-- 4 files changed, 32 insertions(+), 2 deletions(-) diff --git a/doc/APIchanges b/doc/APIchanges index 1a9d103..22a6be8 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -15,6 +15,9 @@ libavutil: 2012-10-22 API changes, most recent first: +2014-07-23 - XXXXXXX - lavf 55.49.100 - avio.h + Add avio_read_to_bprint() + 2014-07-14 - 62227a7 - lavf 55.47.100 - avformat.h Add av_stream_get_parser() diff --git a/libavformat/avio.h b/libavformat/avio.h index 4004b6f..9b16843 100644 --- a/libavformat/avio.h +++ b/libavformat/avio.h @@ -31,6 +31,7 @@ #include "libavutil/common.h" #include "libavutil/dict.h" #include "libavutil/log.h" +#include "libavutil/bprint.h" #include "libavformat/version.h" @@ -500,4 +501,12 @@ int avio_pause(AVIOContext *h, int pause); int64_t avio_seek_time(AVIOContext *h, int stream_index, int64_t timestamp, int flags); +/** + * Read contents of h into print buffer, up to max_size bytes, or up to EOF. + * + * @return 0 for success (max_size bytes read or EOF reached), negative error + * code otherwise + */ +int avio_read_to_bprint(AVIOContext *h, AVBPrint *pb, size_t max_size); + #endif /* AVFORMAT_AVIO_H */ diff --git a/libavformat/aviobuf.c b/libavformat/aviobuf.c index 738459e..463d90a 100644 --- a/libavformat/aviobuf.c +++ b/libavformat/aviobuf.c @@ -953,6 +953,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 { diff --git a/libavformat/version.h b/libavformat/version.h index 4e28112..5ad2338 100644 --- a/libavformat/version.h +++ b/libavformat/version.h @@ -30,8 +30,8 @@ #include "libavutil/version.h" #define LIBAVFORMAT_VERSION_MAJOR 55 -#define LIBAVFORMAT_VERSION_MINOR 48 -#define LIBAVFORMAT_VERSION_MICRO 101 +#define LIBAVFORMAT_VERSION_MINOR 49 +#define LIBAVFORMAT_VERSION_MICRO 100 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ LIBAVFORMAT_VERSION_MINOR, \ _______________________________________________ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog