mirror of https://git.ffmpeg.org/ffmpeg.git
lavfi/drawtext: ignore final LF of textfile.
A standard text file ends with a final LF. Without this change, it is interpreted as an empty final line, and visible with the box option. The current behavior can be achieved by actually having an empty line at the end of the file. Fix trac ticket #7948.
This commit is contained in:
parent
8331eb058d
commit
670051b524
|
@ -568,6 +568,11 @@ static int load_font(AVFilterContext *ctx)
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline int is_newline(uint32_t c)
|
||||||
|
{
|
||||||
|
return c == '\n' || c == '\r' || c == '\f' || c == '\v';
|
||||||
|
}
|
||||||
|
|
||||||
static int load_textfile(AVFilterContext *ctx)
|
static int load_textfile(AVFilterContext *ctx)
|
||||||
{
|
{
|
||||||
DrawTextContext *s = ctx->priv;
|
DrawTextContext *s = ctx->priv;
|
||||||
|
@ -583,6 +588,8 @@ static int load_textfile(AVFilterContext *ctx)
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (textbuf_size > 0 && is_newline(textbuf[textbuf_size - 1]))
|
||||||
|
textbuf_size--;
|
||||||
if (textbuf_size > SIZE_MAX - 1 || !(tmp = av_realloc(s->text, textbuf_size + 1))) {
|
if (textbuf_size > SIZE_MAX - 1 || !(tmp = av_realloc(s->text, textbuf_size + 1))) {
|
||||||
av_file_unmap(textbuf, textbuf_size);
|
av_file_unmap(textbuf, textbuf_size);
|
||||||
return AVERROR(ENOMEM);
|
return AVERROR(ENOMEM);
|
||||||
|
@ -595,11 +602,6 @@ static int load_textfile(AVFilterContext *ctx)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int is_newline(uint32_t c)
|
|
||||||
{
|
|
||||||
return c == '\n' || c == '\r' || c == '\f' || c == '\v';
|
|
||||||
}
|
|
||||||
|
|
||||||
#if CONFIG_LIBFRIBIDI
|
#if CONFIG_LIBFRIBIDI
|
||||||
static int shape_text(AVFilterContext *ctx)
|
static int shape_text(AVFilterContext *ctx)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue