|
|
@@ -30,6 +30,7 @@ |
|
|
#include "libavutil/eval.h" |
|
|
#include "libavutil/eval.h" |
|
|
#include "libavutil/internal.h" |
|
|
#include "libavutil/internal.h" |
|
|
#include "libavutil/opt.h" |
|
|
#include "libavutil/opt.h" |
|
|
|
|
|
#include "libavutil/timestamp.h" |
|
|
#include "avfilter.h" |
|
|
#include "avfilter.h" |
|
|
#include "audio.h" |
|
|
#include "audio.h" |
|
|
#include "formats.h" |
|
|
#include "formats.h" |
|
|
@@ -305,13 +306,15 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame) |
|
|
break; |
|
|
break; |
|
|
case METADATA_PRINT: |
|
|
case METADATA_PRINT: |
|
|
if (!s->key && e) { |
|
|
if (!s->key && e) { |
|
|
s->print(ctx, "frame %"PRId64" pts %"PRId64"\n", inlink->frame_count, frame->pts); |
|
|
|
|
|
|
|
|
s->print(ctx, "frame %"PRId64" pts %"PRId64" pts_time %s\n", |
|
|
|
|
|
inlink->frame_count, frame->pts, av_ts2timestr(frame->pts, &inlink->time_base)); |
|
|
s->print(ctx, "%s=%s\n", e->key, e->value); |
|
|
s->print(ctx, "%s=%s\n", e->key, e->value); |
|
|
while ((e = av_dict_get(metadata, "", e, AV_DICT_IGNORE_SUFFIX)) != NULL) { |
|
|
while ((e = av_dict_get(metadata, "", e, AV_DICT_IGNORE_SUFFIX)) != NULL) { |
|
|
s->print(ctx, "%s=%s\n", e->key, e->value); |
|
|
s->print(ctx, "%s=%s\n", e->key, e->value); |
|
|
} |
|
|
} |
|
|
} else if (e && e->value && (!s->value || (e->value && s->compare(s, e->value, s->value)))) { |
|
|
} else if (e && e->value && (!s->value || (e->value && s->compare(s, e->value, s->value)))) { |
|
|
s->print(ctx, "frame %"PRId64" pts %"PRId64"\n", inlink->frame_count, frame->pts); |
|
|
|
|
|
|
|
|
s->print(ctx, "frame %"PRId64" pts %"PRId64" pts_time %s\n", |
|
|
|
|
|
inlink->frame_count, frame->pts, av_ts2timestr(frame->pts, &inlink->time_base)); |
|
|
s->print(ctx, "%s=%s\n", s->key, e->value); |
|
|
s->print(ctx, "%s=%s\n", s->key, e->value); |
|
|
} |
|
|
} |
|
|
return ff_filter_frame(outlink, frame); |
|
|
return ff_filter_frame(outlink, frame); |
|
|
|