mirror of https://github.com/mpv-player/mpv
filter: add/use a convenience function
I guess this is generally useful for filters which buffer data internally.
This commit is contained in:
parent
afb167cfd2
commit
debc17663d
|
@ -251,8 +251,7 @@ static void fixed_aframe_size_process(struct mp_filter *f)
|
|||
p->out = NULL;
|
||||
p->out_written = 0;
|
||||
} else {
|
||||
if (mp_pin_out_request_data(f->ppins[0]))
|
||||
mp_filter_internal_mark_progress(f);
|
||||
mp_pin_out_request_data_next(f->ppins[0]);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -256,6 +256,12 @@ bool mp_pin_out_request_data(struct mp_pin *p)
|
|||
return mp_pin_out_has_data(p);
|
||||
}
|
||||
|
||||
void mp_pin_out_request_data_next(struct mp_pin *p)
|
||||
{
|
||||
if (mp_pin_out_request_data(p))
|
||||
update_filter(p->owner, p->conn->manual_connection);
|
||||
}
|
||||
|
||||
struct mp_frame mp_pin_out_read(struct mp_pin *p)
|
||||
{
|
||||
if (!mp_pin_out_request_data(p))
|
||||
|
|
|
@ -47,6 +47,11 @@ bool mp_pin_in_write(struct mp_pin *p, struct mp_frame frame);
|
|||
// buffered in mp_pins goes against this.
|
||||
bool mp_pin_out_request_data(struct mp_pin *p);
|
||||
|
||||
// Same as mp_pin_out_request_data(), but call the filter's process() function
|
||||
// next time even if there is new data. the intention is that the filter reads
|
||||
// the data in the next iteration, without checking for the data now.
|
||||
void mp_pin_out_request_data_next(struct mp_pin *p);
|
||||
|
||||
// Same as mp_pin_out_request_data(), but does not attempt to procure new frames
|
||||
// if the return value is false.
|
||||
bool mp_pin_out_has_data(struct mp_pin *p);
|
||||
|
|
Loading…
Reference in New Issue