GST_DEBUG("message %s(%d) from %s",GST_MESSAGE_TYPE_NAME(msg),
GST_DEBUG("current player position %dms",GST_TIME_AS_MSECONDS(m_current_position));
GST_DEBUG("current segment: rate %lf fmt %d start %"G_GINT64_FORMAT
" stop %"G_GINT64_FORMAT" direction %d",rate,fmt,start,stop,m_direction);
I observe the following debug output (few first columns are omitted for brevity)
DEBUG player gst_player.cpp:800:gst_player::play: segment before seek: rate -1.000000 fmt 3 start 0 stop 450054800000, direction -1
DEBUG player gst_player.cpp:804:gst_player::play: current_position = 450054800000
DEBUG player gst_player.cpp:815:gst_player::play: segment after seek: rate 1.000000 fmt 3 start 0 stop -1, direction -1
DEBUG player gst_player.cpp:345:gst_player::bus_watch: message async-done(2097152) from playbin0
DEBUG player gst_player.cpp:349:gst_player::bus_watch: current player position 450054ms
0:01:22.658857000 2652 040051E8 DEBUG player gst_player.cpp:356:gst_player::bus_watch: current segment: rate 1.000000 fmt 3 start 0 stop -1 direction 1
I've read in the documentation, that the current playing segment is configured with the seek.
Why doesn't the playback direction change after the seek?
And again, I observe the jump in frames.
The m_player was paused and stepping frames backwards before the code above was called.
However, when the m_player is put to playing, it plays from the frame where it was paused or even some frames after it.
The impression is like the framestepping was in both directions. Frames stepped back were shown, but the beginning of the playing segment was shifted to the end of file by the same amount of frames.