mirror of
https://github.com/mpv-player/mpv.git
synced 2025-12-28 05:33:14 +00:00
player: fix --lavfi-complex freeze
Commit 0e0b87b6f3 fixed that dropped packets did not trigger further
work correctly. But it also made trivial --lavfi-complex freeze. The
reason is that the meaning if DATA_AGAIN was overloaded: the decoders
meant that they should be called again, while lavfi.c meant that other
outputs needed to be checked again. Rename the latter meaning to
DATA_STARVE, which means that the current input will deliver no more
data, until "other" work has been done (like reading other outputs, or
feeding input).
The decoders never return DATA_STARVE, because they don't get input from
the player core (instead, they get it from the demuxer directly, which
is why they still can return DATA_WAIT).
Also document the DATA_* semantics in the enum.
Fixes #4746.
This commit is contained in:
@@ -617,6 +617,7 @@ static int decode_image(struct MPContext *mpctx)
|
||||
switch (res) {
|
||||
case DATA_WAIT: return VD_WAIT;
|
||||
case DATA_OK:
|
||||
case DATA_STARVE:
|
||||
case DATA_AGAIN: return VD_PROGRESS;
|
||||
case DATA_EOF: return VD_EOF;
|
||||
default: abort();
|
||||
|
||||
Reference in New Issue
Block a user