[FFmpeg-cvslog] bprint: add av_bprint_init_for_buffer().

Nicolas George git at videolan.org
Thu Jun 7 23:03:06 CEST 2012


ffmpeg | branch: master | Nicolas George <nicolas.george at normalesup.org> | Sun Jun  3 19:48:33 2012 +0200| [b3e2bb08a99a81bac672f6ba3958ca175bf06007] | committer: Nicolas George

bprint: add av_bprint_init_for_buffer().

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b3e2bb08a99a81bac672f6ba3958ca175bf06007
---

 libavutil/bprint.c |   14 ++++++++++++++
 libavutil/bprint.h |   11 +++++++++++
 2 files changed, 25 insertions(+)

diff --git a/libavutil/bprint.c b/libavutil/bprint.c
index 115bf0c..646f0aa 100644
--- a/libavutil/bprint.c
+++ b/libavutil/bprint.c
@@ -78,6 +78,15 @@ void av_bprint_init(AVBPrint *buf, unsigned size_init, unsigned size_max)
         av_bprint_alloc(buf, size_init - 1);
 }
 
+void av_bprint_init_for_buffer(AVBPrint *buf, char *buffer, unsigned size)
+{
+    buf->str      = buffer;
+    buf->len      = 0;
+    buf->size     = size;
+    buf->size_max = size;
+    *buf->str = 0;
+}
+
 void av_bprintf(AVBPrint *buf, const char *fmt, ...)
 {
     unsigned room;
@@ -178,6 +187,7 @@ static void bprint_pascal(AVBPrint *b, unsigned size)
 int main(void)
 {
     AVBPrint b;
+    char buf[256];
 
     av_bprint_init(&b, 0, -1);
     bprint_pascal(&b, 5);
@@ -208,6 +218,10 @@ int main(void)
     bprint_pascal(&b, 25);
     printf("Long text count only buffer: %zu/%u\n", strlen(b.str), b.len);
 
+    av_bprint_init_for_buffer(&b, buf, sizeof(buf));
+    bprint_pascal(&b, 25);
+    printf("Long text count only buffer: %zu/%u\n", strlen(buf), b.len);
+
     return 0;
 }
 
diff --git a/libavutil/bprint.h b/libavutil/bprint.h
index ad65afe..60e464e 100644
--- a/libavutil/bprint.h
+++ b/libavutil/bprint.h
@@ -100,6 +100,17 @@ void av_bprint_init(AVBPrint *buf, unsigned size_init, unsigned size_max);
 #define AV_BPRINT_SIZE_COUNT_ONLY 0
 
 /**
+ * Init a print buffer using a pre-existing buffer.
+ *
+ * The buffer will not be reallocated.
+ *
+ * @param buf     buffer structure to init
+ * @param buffer  byte buffer to use for the string data
+ * @param size    size of buffer
+ */
+void av_bprint_init_for_buffer(AVBPrint *buf, char *buffer, unsigned size);
+
+/**
  * Append a formated string to a print buffer.
  */
 void av_bprintf(AVBPrint *buf, const char *fmt, ...) av_printf_format(2, 3);



More information about the ffmpeg-cvslog mailing list