drawtext: fix hard dependency to lavc (timecode).

This commit is contained in:
Clément Bœsch 2011-12-28 10:09:45 +01:00 committed by Clément Bœsch
parent e2c1d3ec41
commit 940d3cc0b0
2 changed files with 12 additions and 1 deletions

View File

@ -1226,7 +1226,9 @@ timestamp expressed in seconds, NAN if the input timestamp is unknown
@item timecode @item timecode
initial timecode representation in "hh:mm:ss[:;.]ff" format. It can be used initial timecode representation in "hh:mm:ss[:;.]ff" format. It can be used
with or without text parameter. @var{rate} option must be specified with or without text parameter. @var{rate} option must be specified.
Note that timecode options are @emph{not} effective if FFmpeg is build with
@code{--disable-avcodec}.
@item r, rate @item r, rate
frame rate (timecode only) frame rate (timecode only)

View File

@ -29,6 +29,7 @@
#include <sys/time.h> #include <sys/time.h>
#include <time.h> #include <time.h>
#include "config.h"
#include "libavcodec/timecode.h" #include "libavcodec/timecode.h"
#include "libavutil/avstring.h" #include "libavutil/avstring.h"
#include "libavutil/colorspace.h" #include "libavutil/colorspace.h"
@ -341,10 +342,16 @@ static av_cold int init(AVFilterContext *ctx, const char *args, void *opaque)
} }
if (dtext->tc.str) { if (dtext->tc.str) {
#if CONFIG_AVCODEC
if (avpriv_init_smpte_timecode(ctx, &dtext->tc) < 0) if (avpriv_init_smpte_timecode(ctx, &dtext->tc) < 0)
return AVERROR(EINVAL); return AVERROR(EINVAL);
if (!dtext->text) if (!dtext->text)
dtext->text = av_strdup(""); dtext->text = av_strdup("");
#else
av_log(ctx, AV_LOG_ERROR,
"Timecode options are only available if libavfilter is built with libavcodec enabled.\n");
return AVERROR(EINVAL);
#endif
} }
if (!dtext->text) { if (!dtext->text) {
@ -722,11 +729,13 @@ static int draw_text(AVFilterContext *ctx, AVFilterBufferRef *picref,
buf_size *= 2; buf_size *= 2;
} while ((buf = av_realloc(buf, buf_size))); } while ((buf = av_realloc(buf, buf_size)));
#if CONFIG_AVCODEC
if (dtext->tc.str) { if (dtext->tc.str) {
char tcbuf[sizeof("hh:mm:ss.ff")]; char tcbuf[sizeof("hh:mm:ss.ff")];
avpriv_timecode_to_string(tcbuf, &dtext->tc, dtext->frame_id++); avpriv_timecode_to_string(tcbuf, &dtext->tc, dtext->frame_id++);
buf = av_asprintf("%s%s", dtext->text, tcbuf); buf = av_asprintf("%s%s", dtext->text, tcbuf);
} }
#endif
if (!buf) if (!buf)
return AVERROR(ENOMEM); return AVERROR(ENOMEM);