diff options
author | Niklas Haas <git@haasn.dev> | 2023-06-15 15:54:31 +0200 |
---|---|---|
committer | Niklas Haas <git@haasn.dev> | 2023-06-20 17:09:57 +0200 |
commit | 0c66d912ba2248a3650fb1ed8563adf28bff2987 (patch) | |
tree | 6515660b459bd5851435e2c8b29a568f5f7d8e33 /libavfilter | |
parent | 4e4a66b8c49371e5eb53796eae902ebe2843b815 (diff) | |
download | ffmpeg-0c66d912ba2248a3650fb1ed8563adf28bff2987.tar.gz |
lavfi/vf_libplacebo: keep track of latest status globally
This field will effectively hold the most recent status set by any
input. Currently functionally equivalent to input->status, but will
change soon.
Diffstat (limited to 'libavfilter')
-rw-r--r-- | libavfilter/vf_libplacebo.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/libavfilter/vf_libplacebo.c b/libavfilter/vf_libplacebo.c index ee8780036c..5b45d4f8fb 100644 --- a/libavfilter/vf_libplacebo.c +++ b/libavfilter/vf_libplacebo.c @@ -138,6 +138,8 @@ typedef struct LibplaceboContext { /* input state */ LibplaceboInput *inputs; int nb_inputs; + int64_t status_pts; ///< tracks status of most recently used input + int status; /* settings */ char *out_format_string; @@ -943,6 +945,11 @@ static int handle_input(AVFilterContext *ctx, LibplaceboInput *input) pl_queue_push(input->queue, NULL); /* Signal EOF to pl_queue */ input->status = status; input->status_pts = pts; + if (!s->status || pts >= s->status_pts) { + /* Also propagate to output unless overwritten by later status change */ + s->status = status; + s->status_pts = pts; + } } return 0; @@ -975,8 +982,8 @@ static int libplacebo_activate(AVFilterContext *ctx) } } - if (in->status && pts >= in->status_pts) { - ff_outlink_set_status(outlink, in->status, in->status_pts); + if (s->status && pts >= s->status_pts) { + ff_outlink_set_status(outlink, s->status, s->status_pts); return 0; } |