From 2c3c6aae66ec606eeb26593f94079b3e920df237 Mon Sep 17 00:00:00 2001 From: wm4 Date: Sat, 25 May 2019 21:57:31 +0200 Subject: demux, f_decoder_wrapper: fix coverart in backward mode Shitty ancient hack that wastes my time all the time. demux.c: always return the coverart packet as soon as possible, and don't let the backward demux state machine possibly stop it. f_decoder_wrapper.c: mess with some shit until it somehow starts to work. I think the old code tried to let it cleverly fall through so the packet was processed "normally"; just make it run the "usual" code instead. --- demux/demux.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) (limited to 'demux/demux.c') diff --git a/demux/demux.c b/demux/demux.c index 92f2eaacc4..bd62e6f0ef 100644 --- a/demux/demux.c +++ b/demux/demux.c @@ -2258,17 +2258,6 @@ static int dequeue_packet(struct demux_stream *ds, struct demux_packet **res) if (in->blocked) return 0; - if (ds->eager) { - in->reading = true; // enable readahead - in->eof = false; // force retry - pthread_cond_signal(&in->wakeup); // possibly read more - } - - if (ds->back_resuming || ds->back_restarting) { - assert(in->back_demuxing); - return 0; - } - if (ds->sh->attached_picture) { ds->eof = true; if (ds->attached_picture_added) @@ -2282,6 +2271,17 @@ static int dequeue_packet(struct demux_stream *ds, struct demux_packet **res) return 1; } + if (ds->eager) { + in->reading = true; // enable readahead + in->eof = false; // force retry + pthread_cond_signal(&in->wakeup); // possibly read more + } + + if (ds->back_resuming || ds->back_restarting) { + assert(in->back_demuxing); + return 0; + } + bool eof = !ds->reader_head && ds->eof; if (in->back_demuxing) { -- cgit v1.2.3