[FFmpeg-cvslog] Merge commit '96a47364d1cf346a5d0437e054b1b10d44d8d969'
James Almer
git at videolan.org
Sat Oct 21 21:44:58 EEST 2017
ffmpeg | branch: master | James Almer <jamrial at gmail.com> | Sat Oct 21 15:40:14 2017 -0300| [d1b1a65662e3657ba05aa76023dde19712470f58] | committer: James Almer
Merge commit '96a47364d1cf346a5d0437e054b1b10d44d8d969'
* commit '96a47364d1cf346a5d0437e054b1b10d44d8d969':
lavfi: Drop deprecated non-const filter retrieval
Merged-by: James Almer <jamrial at gmail.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=d1b1a65662e3657ba05aa76023dde19712470f58
---
libavfilter/avfilter.c | 5 +----
libavfilter/avfilter.h | 5 +----
libavfilter/avfiltergraph.c | 4 ++--
libavfilter/version.h | 3 ---
4 files changed, 4 insertions(+), 13 deletions(-)
diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c
index 6740cd3755..bc9e60bb85 100644
--- a/libavfilter/avfilter.c
+++ b/libavfilter/avfilter.c
@@ -576,10 +576,7 @@ int avfilter_process_command(AVFilterContext *filter, const char *cmd, const cha
static AVFilter *first_filter;
static AVFilter **last_filter = &first_filter;
-#if !FF_API_NOCONST_GET_NAME
-const
-#endif
-AVFilter *avfilter_get_by_name(const char *name)
+const AVFilter *avfilter_get_by_name(const char *name)
{
const AVFilter *f = NULL;
diff --git a/libavfilter/avfilter.h b/libavfilter/avfilter.h
index 6be7625676..47546c15e5 100644
--- a/libavfilter/avfilter.h
+++ b/libavfilter/avfilter.h
@@ -699,10 +699,7 @@ int avfilter_register(AVFilter *filter);
* @return the filter definition, if any matching one is registered.
* NULL if none found.
*/
-#if !FF_API_NOCONST_GET_NAME
-const
-#endif
-AVFilter *avfilter_get_by_name(const char *name);
+const AVFilter *avfilter_get_by_name(const char *name);
/**
* Iterate over all registered filters.
diff --git a/libavfilter/avfiltergraph.c b/libavfilter/avfiltergraph.c
index 76a3a2b8ed..69cf26896d 100644
--- a/libavfilter/avfiltergraph.c
+++ b/libavfilter/avfiltergraph.c
@@ -492,7 +492,7 @@ static int query_formats(AVFilterGraph *graph, AVClass *log_ctx)
if (convert_needed) {
AVFilterContext *convert;
- AVFilter *filter;
+ const AVFilter *filter;
AVFilterLink *inlink, *outlink;
char scale_args[256];
char inst_name[30];
@@ -1218,7 +1218,7 @@ static int graph_insert_fifos(AVFilterGraph *graph, AVClass *log_ctx)
for (j = 0; j < f->nb_inputs; j++) {
AVFilterLink *link = f->inputs[j];
AVFilterContext *fifo_ctx;
- AVFilter *fifo;
+ const AVFilter *fifo;
char name[32];
if (!link->dstpad->needs_fifo)
diff --git a/libavfilter/version.h b/libavfilter/version.h
index 2d5caa8105..5bcf9b4df0 100644
--- a/libavfilter/version.h
+++ b/libavfilter/version.h
@@ -52,9 +52,6 @@
#ifndef FF_API_OLD_FILTER_OPTS_ERROR
#define FF_API_OLD_FILTER_OPTS_ERROR (LIBAVFILTER_VERSION_MAJOR < 8)
#endif
-#ifndef FF_API_NOCONST_GET_NAME
-#define FF_API_NOCONST_GET_NAME (LIBAVFILTER_VERSION_MAJOR < 7)
-#endif
#ifndef FF_API_LAVR_OPTS
#define FF_API_LAVR_OPTS (LIBAVFILTER_VERSION_MAJOR < 8)
#endif
======================================================================
diff --cc libavfilter/avfilter.c
index 6740cd3755,83c1a7c20d..bc9e60bb85
--- a/libavfilter/avfilter.c
+++ b/libavfilter/avfilter.c
@@@ -483,103 -290,9 +483,100 @@@ int ff_poll_frame(AVFilterLink *link
return min;
}
+static const char *const var_names[] = {
+ "t",
+ "n",
+ "pos",
+ "w",
+ "h",
+ NULL
+};
+
+enum {
+ VAR_T,
+ VAR_N,
+ VAR_POS,
+ VAR_W,
+ VAR_H,
+ VAR_VARS_NB
+};
+
+static int set_enable_expr(AVFilterContext *ctx, const char *expr)
+{
+ int ret;
+ char *expr_dup;
+ AVExpr *old = ctx->enable;
+
+ if (!(ctx->filter->flags & AVFILTER_FLAG_SUPPORT_TIMELINE)) {
+ av_log(ctx, AV_LOG_ERROR, "Timeline ('enable' option) not supported "
+ "with filter '%s'\n", ctx->filter->name);
+ return AVERROR_PATCHWELCOME;
+ }
+
+ expr_dup = av_strdup(expr);
+ if (!expr_dup)
+ return AVERROR(ENOMEM);
+
+ if (!ctx->var_values) {
+ ctx->var_values = av_calloc(VAR_VARS_NB, sizeof(*ctx->var_values));
+ if (!ctx->var_values) {
+ av_free(expr_dup);
+ return AVERROR(ENOMEM);
+ }
+ }
+
+ ret = av_expr_parse((AVExpr**)&ctx->enable, expr_dup, var_names,
+ NULL, NULL, NULL, NULL, 0, ctx->priv);
+ if (ret < 0) {
+ av_log(ctx->priv, AV_LOG_ERROR,
+ "Error when evaluating the expression '%s' for enable\n",
+ expr_dup);
+ av_free(expr_dup);
+ return ret;
+ }
+
+ av_expr_free(old);
+ av_free(ctx->enable_str);
+ ctx->enable_str = expr_dup;
+ return 0;
+}
+
+void ff_update_link_current_pts(AVFilterLink *link, int64_t pts)
+{
+ if (pts == AV_NOPTS_VALUE)
+ return;
+ link->current_pts = pts;
+ link->current_pts_us = av_rescale_q(pts, link->time_base, AV_TIME_BASE_Q);
+ /* TODO use duration */
+ if (link->graph && link->age_index >= 0)
+ ff_avfilter_graph_update_heap(link->graph, link);
+}
+
+int avfilter_process_command(AVFilterContext *filter, const char *cmd, const char *arg, char *res, int res_len, int flags)
+{
+ if(!strcmp(cmd, "ping")){
+ char local_res[256] = {0};
+
+ if (!res) {
+ res = local_res;
+ res_len = sizeof(local_res);
+ }
+ av_strlcatf(res, res_len, "pong from:%s %s\n", filter->filter->name, filter->name);
+ if (res == local_res)
+ av_log(filter, AV_LOG_INFO, "%s", res);
+ return 0;
+ }else if(!strcmp(cmd, "enable")) {
+ return set_enable_expr(filter, arg);
+ }else if(filter->filter->process_command) {
+ return filter->filter->process_command(filter, cmd, arg, res, res_len, flags);
+ }
+ return AVERROR(ENOSYS);
+}
+
static AVFilter *first_filter;
+static AVFilter **last_filter = &first_filter;
- #if !FF_API_NOCONST_GET_NAME
- const
- #endif
- AVFilter *avfilter_get_by_name(const char *name)
+ const AVFilter *avfilter_get_by_name(const char *name)
{
const AVFilter *f = NULL;
diff --cc libavfilter/avfiltergraph.c
index 76a3a2b8ed,a0f797e283..69cf26896d
--- a/libavfilter/avfiltergraph.c
+++ b/libavfilter/avfiltergraph.c
@@@ -447,52 -276,24 +447,52 @@@ static int query_formats(AVFilterGraph
if (!link)
continue;
- if (link->in_formats != link->out_formats &&
- !ff_merge_formats(link->in_formats,
- link->out_formats))
- convert_needed = 1;
- if (link->type == AVMEDIA_TYPE_AUDIO) {
- if (link->in_channel_layouts != link->out_channel_layouts &&
- !ff_merge_channel_layouts(link->in_channel_layouts,
- link->out_channel_layouts))
- convert_needed = 1;
- if (link->in_samplerates != link->out_samplerates &&
- !ff_merge_samplerates(link->in_samplerates,
- link->out_samplerates))
+ if (link->in_formats != link->out_formats
+ && link->in_formats && link->out_formats)
+ if (!can_merge_formats(link->in_formats, link->out_formats,
+ link->type, 0))
convert_needed = 1;
+ if (link->type == AVMEDIA_TYPE_AUDIO) {
+ if (link->in_samplerates != link->out_samplerates
+ && link->in_samplerates && link->out_samplerates)
+ if (!can_merge_formats(link->in_samplerates,
+ link->out_samplerates,
+ 0, 1))
+ convert_needed = 1;
+ }
+
+#define MERGE_DISPATCH(field, statement) \
+ if (!(link->in_ ## field && link->out_ ## field)) { \
+ count_delayed++; \
+ } else if (link->in_ ## field == link->out_ ## field) { \
+ count_already_merged++; \
+ } else if (!convert_needed) { \
+ count_merged++; \
+ statement \
}
+ if (link->type == AVMEDIA_TYPE_AUDIO) {
+ MERGE_DISPATCH(channel_layouts,
+ if (!ff_merge_channel_layouts(link->in_channel_layouts,
+ link->out_channel_layouts))
+ convert_needed = 1;
+ )
+ MERGE_DISPATCH(samplerates,
+ if (!ff_merge_samplerates(link->in_samplerates,
+ link->out_samplerates))
+ convert_needed = 1;
+ )
+ }
+ MERGE_DISPATCH(formats,
+ if (!ff_merge_formats(link->in_formats, link->out_formats,
+ link->type))
+ convert_needed = 1;
+ )
+#undef MERGE_DISPATCH
+
if (convert_needed) {
AVFilterContext *convert;
- AVFilter *filter;
+ const AVFilter *filter;
AVFilterLink *inlink, *outlink;
char scale_args[256];
char inst_name[30];
diff --cc libavfilter/version.h
index 2d5caa8105,62fc97dd27..5bcf9b4df0
--- a/libavfilter/version.h
+++ b/libavfilter/version.h
@@@ -49,14 -49,4 +49,11 @@@
* the public API and may change, break or disappear at any time.
*/
+#ifndef FF_API_OLD_FILTER_OPTS_ERROR
+#define FF_API_OLD_FILTER_OPTS_ERROR (LIBAVFILTER_VERSION_MAJOR < 8)
+#endif
- #ifndef FF_API_NOCONST_GET_NAME
- #define FF_API_NOCONST_GET_NAME (LIBAVFILTER_VERSION_MAJOR < 7)
- #endif
+#ifndef FF_API_LAVR_OPTS
+#define FF_API_LAVR_OPTS (LIBAVFILTER_VERSION_MAJOR < 8)
+#endif
+
#endif /* AVFILTER_VERSION_H */
More information about the ffmpeg-cvslog
mailing list