oggdemux: Reverse keyframe seek doesn't work
Submitted by Edward Hervey
How to reproduce :
USE_PLAYBIN3=1 gst-validate-launcher -S -m -t validate.file.playback.reverse_playback
oggdemux will fail to find the appropriate previous keyframe for the requested seek position (10s).
This results in oggdemux pushing a lot of non-keyframe theora packets downstream, eventually causing multiqueue to deadlock downstream (theoradec drops everything, video stream never prerolls, audio stream blocks, boom).
Initial analysis seems to be that gst_ogg_demux_do_seek() should be using gst_ogg_demux_get_prev_page() instead of _next_page() when looking for the target granule (containing a keyframe).