diff options
author | Nicolas George <nicolas.george@normalesup.org> | 2012-10-28 14:40:30 +0100 |
---|---|---|
committer | Nicolas George <nicolas.george@normalesup.org> | 2012-11-02 15:12:29 +0100 |
commit | 483c1aa5f114bfed36a6e1c9eeb1e647124559f7 (patch) | |
tree | b62362ceb28084bd7ba8855a6a5c75feee128c0b /libavutil | |
parent | 8551c6bec0fd6cf719f94b24bca39b1c3318e213 (diff) | |
download | ffmpeg-483c1aa5f114bfed36a6e1c9eeb1e647124559f7.tar.gz |
lavu/bprint: add av_bprint_get_buffer().
It is useful to use bprint to handle a growing buffer
used with another API.
Diffstat (limited to 'libavutil')
-rw-r--r-- | libavutil/bprint.c | 9 | ||||
-rw-r--r-- | libavutil/bprint.h | 12 | ||||
-rw-r--r-- | libavutil/version.h | 2 |
3 files changed, 22 insertions, 1 deletions
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 @@ -126,6 +126,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. */ void av_bprint_clear(AVBPrint *buf); 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, \ |