[FFmpeg-cvslog] libzvbi-teletextdec: use AVBPrint for whitespace cleanup
Marton Balint
git at videolan.org
Mon Nov 11 22:35:28 CET 2013
ffmpeg | branch: master | Marton Balint <cus at passwd.hu> | Wed Oct 23 23:15:54 2013 +0200| [65fb59abd27af8e71f3a76e30f4536a878918fb1] | committer: Marton Balint
libzvbi-teletextdec: use AVBPrint for whitespace cleanup
Signed-off-by: Marton Balint <cus at passwd.hu>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=65fb59abd27af8e71f3a76e30f4536a878918fb1
---
libavcodec/libzvbi-teletextdec.c | 37 +++++++++++++++++++------------------
1 file changed, 19 insertions(+), 18 deletions(-)
diff --git a/libavcodec/libzvbi-teletextdec.c b/libavcodec/libzvbi-teletextdec.c
index b5066e0..c65268d 100644
--- a/libavcodec/libzvbi-teletextdec.c
+++ b/libavcodec/libzvbi-teletextdec.c
@@ -20,6 +20,7 @@
#include "avcodec.h"
#include "libavutil/opt.h"
+#include "libavutil/bprint.h"
#include "libavutil/intreadwrite.h"
#include <libzvbi.h>
@@ -95,9 +96,8 @@ subtitle_rect_free(AVSubtitleRect **sub_rect)
static int
gen_sub_text(TeletextContext *ctx, AVSubtitleRect *sub_rect, vbi_page *page, int chop_top)
{
- char *text;
const char *in;
- char *out;
+ AVBPrint buf;
char *vbi_text = av_malloc(TEXT_MAXSZ);
int sz;
@@ -115,11 +115,8 @@ gen_sub_text(TeletextContext *ctx, AVSubtitleRect *sub_rect, vbi_page *page, int
}
vbi_text[sz] = '\0';
in = vbi_text;
- out = text = av_malloc(TEXT_MAXSZ);
- if (!text) {
- av_free(vbi_text);
- return AVERROR(ENOMEM);
- }
+ av_bprint_init(&buf, 0, TEXT_MAXSZ);
+
if (ctx->chop_spaces) {
for (;;) {
int nl, sz;
@@ -134,25 +131,29 @@ gen_sub_text(TeletextContext *ctx, AVSubtitleRect *sub_rect, vbi_page *page, int
break;
// skip trailing spaces
sz = chop_spaces_utf8(in, nl);
- memcpy(out, in, sz);
- out += sz;
- *out++ = '\n';
+ av_bprint_append_data(&buf, in, sz);
+ av_bprintf(&buf, "\n");
in += nl;
}
} else {
- strcpy(text, vbi_text);
- out += sz;
- *out++ = '\n';
+ av_bprintf(&buf, "%s\n", vbi_text);
}
av_free(vbi_text);
- *out = '\0';
- if (out > text) {
+
+ if (!av_bprint_is_complete(&buf)) {
+ av_bprint_finalize(&buf, NULL);
+ return AVERROR(ENOMEM);
+ }
+
+ if (buf.len) {
+ int ret;
sub_rect->type = SUBTITLE_TEXT;
- sub_rect->text = text;
- av_log(ctx, AV_LOG_DEBUG, "subtext:%s:txetbus\n", text);
+ if ((ret = av_bprint_finalize(&buf, &sub_rect->text)) < 0)
+ return ret;
+ av_log(ctx, AV_LOG_DEBUG, "subtext:%s:txetbus\n", sub_rect->text);
} else {
sub_rect->type = SUBTITLE_NONE;
- av_free(text);
+ av_bprint_finalize(&buf, NULL);
}
return 0;
}
More information about the ffmpeg-cvslog
mailing list