From c3916406451cddfb9daa42699dcd2163bff1a0eb Mon Sep 17 00:00:00 2001 From: wm4 Date: Fri, 11 Aug 2017 21:28:01 +0200 Subject: player: fix --lavfi-complex freeze Commit 0e0b87b6f3297 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. --- common/common.h | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'common/common.h') diff --git a/common/common.h b/common/common.h index cdd1d56ed5..bed9060f71 100644 --- a/common/common.h +++ b/common/common.h @@ -59,10 +59,11 @@ enum stream_type { }; enum { - DATA_OK = 1, - DATA_WAIT = 0, - DATA_AGAIN = -1, - DATA_EOF = -2, + DATA_OK = 1, // data is actually being returned + DATA_WAIT = 0, // async wait: check state again after next wakeup + DATA_AGAIN = -2, // repeat request (internal progress was made) + DATA_STARVE = -1, // need input (might require to drain other outputs) + DATA_EOF = -3, // no more data available }; extern const char mpv_version[]; -- cgit v1.2.3