1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-11-21 10:55:51 +02:00

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.
This commit is contained in:
Niklas Haas 2023-06-15 15:54:31 +02:00
parent 4e4a66b8c4
commit 0c66d912ba

View File

@ -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;
}