videodecoder: Re-work reverse playback handling
authorJan Schmidt <thaytan@noraisin.net>
Tue, 19 Jun 2012 14:22:25 +0000 (00:22 +1000)
committerJan Schmidt <thaytan@noraisin.net>
Tue, 19 Jun 2012 15:34:44 +0000 (01:34 +1000)
commit1935cf002299f6c346884f3cd592a6540acfd153
tree8d68e403fbfc0a6db2a686b1f652369382024328
parent5dc7d4ea3a7c9af1bf6e7264a5cc6567bcc04166
videodecoder: Re-work reverse playback handling

Move processing of the gather list into the flush_parse function.

Add a last ditch attempt to apply timestamps to outgoing buffers
when walking backwards through decoded frames. Requires that each
gathered region has at least one timestamp.

Make sure to remove decoded packets from the decode list when
they are sent - otherwise the list just grows on each cycle, with
more and more frames being decoded and then clipped away.

Break out of the processing loop early on a bad flow return to make
seeking more responsive.

Use the gst_video_decoder_clip_and_push_buf function in reverse
mode, instead of pushing all buffers arbitrarily.

A couple of small efficiency gains in the list handling, by moving
list elements directly and not reallocating, and by reversing
and concatenating the gather list instead of moving it one node
at a time.

Rename the gst_video_decoder_do_finish_frame function to
gst_video_decoder_release_frame.
gst-libs/gst/video/gstvideodecoder.c