baseparse: Fix push mode seeking (aacparse, amrparse)
authorRené Stadler <mail@renestadler.de>
Sun, 5 Apr 2009 00:50:19 +0000 (03:50 +0300)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Fri, 8 Apr 2011 14:44:46 +0000 (15:44 +0100)
commitda8fb9be91f7d30a6a858c22cdd52b0e02bc9555
tree34266fe295a5be6c503058c0e5218d0cf0c98f3a
parent1b93e8ec0341898c9a1c1c21f6af6b0ca9ca9fd6
baseparse: Fix push mode seeking (aacparse, amrparse)

Sending the flush-start event forward before taking the stream lock actually
works, in contrast to deadlocking in downstream preroll_wait (hunk 1).

After that we get the chain function being stuck in a busy loop. This is fixed
by updating the minimum frame size inside the synchronization loop because the
subclass asks for more data in this way (hunk 2).

Finally, this leads to a very probable crash because the subclass can find a
valid frame with a size greater than the currently available data in the
adapter. This makes the subsequent gst_adapter_take_buffer call return NULL,
which is not expected (hunk 3).
gst/aacparse/gstbaseparse.c