diff options
author | Clément Bœsch <clement.boesch@smartjog.com> | 2012-01-16 14:41:39 +0400 |
---|---|---|
committer | Clément Bœsch <ubitux@gmail.com> | 2012-02-02 17:31:17 +0400 |
commit | f65600d5196df5dda1e4a0f583bee60f5170b413 (patch) | |
tree | 77bbf56359c246a3c33646edb480ad874ba5c528 /libavfilter | |
parent | 11e5d3b9cf5e9f92d683bc4b2a406f2fb4702cb0 (diff) |
drawtext: use new public timecode API.
Diffstat (limited to 'libavfilter')
-rw-r--r-- | libavfilter/vf_drawtext.c | 34 |
1 files changed, 15 insertions, 19 deletions
diff --git a/libavfilter/vf_drawtext.c b/libavfilter/vf_drawtext.c index d0d854b994..f7727ef24f 100644 --- a/libavfilter/vf_drawtext.c +++ b/libavfilter/vf_drawtext.c @@ -30,7 +30,6 @@ #include <time.h> #include "config.h" -#include "libavcodec/timecode.h" #include "libavutil/avstring.h" #include "libavutil/colorspace.h" #include "libavutil/file.h" @@ -39,6 +38,7 @@ #include "libavutil/random_seed.h" #include "libavutil/parseutils.h" #include "libavutil/pixdesc.h" +#include "libavutil/timecode.h" #include "libavutil/tree.h" #include "libavutil/lfg.h" #include "avfilter.h" @@ -157,7 +157,9 @@ typedef struct { AVExpr *d_pexpr; int draw; ///< set to zero to prevent drawing AVLFG prng; ///< random - struct ff_timecode tc; + char *tc_opt_string; ///< specified timecode option string + AVRational tc_rate; ///< frame rate for timecode + AVTimecode tc; ///< timecode context int frame_id; } DrawTextContext; @@ -179,9 +181,9 @@ static const AVOption drawtext_options[]= { {"tabsize", "set tab size", OFFSET(tabsize), AV_OPT_TYPE_INT, {.dbl=4}, 0, INT_MAX }, {"basetime", "set base time", OFFSET(basetime), AV_OPT_TYPE_INT64, {.dbl=AV_NOPTS_VALUE}, INT64_MIN, INT64_MAX }, {"draw", "if false do not draw", OFFSET(d_expr), AV_OPT_TYPE_STRING, {.str="1"}, CHAR_MIN, CHAR_MAX }, -{"timecode", "set initial timecode", OFFSET(tc.str), AV_OPT_TYPE_STRING, {.str=NULL}, CHAR_MIN, CHAR_MAX }, -{"r", "set rate (timecode only)", OFFSET(tc.rate), AV_OPT_TYPE_RATIONAL, {.dbl=0}, 0, INT_MAX }, -{"rate", "set rate (timecode only)", OFFSET(tc.rate), AV_OPT_TYPE_RATIONAL, {.dbl=0}, 0, INT_MAX }, +{"timecode", "set initial timecode", OFFSET(tc_opt_string), AV_OPT_TYPE_STRING, {.str=NULL}, CHAR_MIN, CHAR_MAX }, +{"r", "set rate (timecode only)", OFFSET(tc_rate), AV_OPT_TYPE_RATIONAL, {.dbl=0}, 0, INT_MAX }, +{"rate", "set rate (timecode only)", OFFSET(tc_rate), AV_OPT_TYPE_RATIONAL, {.dbl=0}, 0, INT_MAX }, /* FT_LOAD_* flags */ {"ft_load_flags", "set font loading flags for libfreetype", OFFSET(ft_load_flags), AV_OPT_TYPE_FLAGS, {.dbl=FT_LOAD_DEFAULT|FT_LOAD_RENDER}, 0, INT_MAX, 0, "ft_load_flags" }, @@ -341,17 +343,13 @@ static av_cold int init(AVFilterContext *ctx, const char *args, void *opaque) av_file_unmap(textbuf, textbuf_size); } - if (dtext->tc.str) { -#if CONFIG_AVCODEC - if (avpriv_init_smpte_timecode(ctx, &dtext->tc) < 0) - return AVERROR(EINVAL); + if (dtext->tc_opt_string) { + int ret = av_timecode_init_from_string(&dtext->tc, dtext->tc_rate, + dtext->tc_opt_string, ctx); + if (ret < 0) + return ret; if (!dtext->text) 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) { @@ -729,13 +727,11 @@ static int draw_text(AVFilterContext *ctx, AVFilterBufferRef *picref, buf_size *= 2; } while ((buf = av_realloc(buf, buf_size))); -#if CONFIG_AVCODEC - if (dtext->tc.str) { - char tcbuf[16]; - avpriv_timecode_to_string(tcbuf, &dtext->tc, dtext->frame_id++); + if (dtext->tc_opt_string) { + char tcbuf[AV_TIMECODE_STR_SIZE]; + av_timecode_make_string(&dtext->tc, tcbuf, dtext->frame_id++); buf = av_asprintf("%s%s", dtext->text, tcbuf); } -#endif if (!buf) return AVERROR(ENOMEM); |