Framestepping backwards in MPEG2 files

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Framestepping backwards in MPEG2 files

wl2776
Administrator
Is it complete?
My pipeline doesn't step one frame backwards.

m_player is an instance of the playbin2. It has loaded the MPEG2 Program Stream.
Then, the pipeline was paused before calling step_left

void gst_player::step_left(void)
{GstFormat fmt=GST_FORMAT_TIME;
 
  if(m_player){
    if(m_current_position>=40*GST_MSECOND){
      gboolean rb=gst_element_seek(m_player,-1.0,GST_FORMAT_TIME,
                                          (GstSeekFlags)(GST_SEEK_FLAG_FLUSH|GST_SEEK_FLAG_ACCURATE),
                                          GST_SEEK_TYPE_SET,m_current_position,GST_SEEK_TYPE_SET,m_stream_duration);
      GST_DEBUG("seek backwards: %d",rb);
      GstEvent *event = gst_event_new_step (GST_FORMAT_BUFFERS, 1, 1.0, TRUE, FALSE);
      rb=gst_element_send_event (m_player, event);
      GST_DEBUG("send step event: %d",rb);
    }
  }
}

Both _seek and _send_event(_new_step) return TRUE.
However, I don't see any changes in picture on the screen.
After several calls to step_left() I get the EOS.
What am I doing wrong?