diff --git a/libavutil/bprint.c b/libavutil/bprint.c index 373a492af0..9d8e7c18ab 100644 --- a/libavutil/bprint.c +++ b/libavutil/bprint.c @@ -129,6 +129,15 @@ void av_bprint_chars(AVBPrint *buf, char c, unsigned n) av_bprint_grow(buf, n); } +void av_bprint_get_buffer(AVBPrint *buf, unsigned size, + unsigned char **mem, unsigned *actual_size) +{ + if (size > av_bprint_room(buf)) + av_bprint_alloc(buf, size); + *actual_size = av_bprint_room(buf); + *mem = *actual_size ? buf->str + buf->len : NULL; +} + void av_bprint_clear(AVBPrint *buf) { if (buf->len) { diff --git a/libavutil/bprint.h b/libavutil/bprint.h index 2bef18db23..c09b61f20f 100644 --- a/libavutil/bprint.h +++ b/libavutil/bprint.h @@ -125,6 +125,18 @@ void av_bprintf(AVBPrint *buf, const char *fmt, ...) av_printf_format(2, 3); */ void av_bprint_chars(AVBPrint *buf, char c, unsigned n); +/** + * Allocate bytes in the buffer for external use. + * + * @param[in] buf buffer structure + * @param[in] size required size + * @param[out] mem pointer to the memory area + * @param[out] actual_size size of the memory area after allocation; + * can be larger or smaller than size + */ +void av_bprint_get_buffer(AVBPrint *buf, unsigned size, + unsigned char **mem, unsigned *actual_size); + /** * Reset the string to "" but keep internal allocated data. */ diff --git a/libavutil/version.h b/libavutil/version.h index 94a4a4787f..60a7450f91 100644 --- a/libavutil/version.h +++ b/libavutil/version.h @@ -75,7 +75,7 @@ */ #define LIBAVUTIL_VERSION_MAJOR 52 -#define LIBAVUTIL_VERSION_MINOR 1 +#define LIBAVUTIL_VERSION_MINOR 2 #define LIBAVUTIL_VERSION_MICRO 100 #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \