Hi. I have a video engine that uses GStreamer to decode videos to an AppSink, which accepts the video frames and composites them with other stuff in the video engine. Pipeline definition is simple:
std::string pipeline_definition = "\
filesrc location=" + pathname + " ! decodebin ! videoconvert ! \
video/x-raw,format=" + this->pixelFormat() + " ! appsink name=sink";
When accepting frames, the app tests for an end of stream condition, and loops back to the beginning of the video:
gst_element_seek_simple(this->pipeline_, GST_FORMAT_TIME, static_cast<GstSeekFlags>(GST_SEEK_FLAG_FLUSH), 0);
This code has been working fine for years. However, upon recently updating to GST 1.26.1, seeking to the start of file is broken when the source video is a VP9 (WebM with alpha) file. The seek returns status indicating that is was successful, but then the pipeline is immediately back in EOS state again, and the code can no longer fetch any frames. The same code continues to work properly for MP4 videos.
I saw in the release notes that there were changes in Matroska support in 1.26, specifically talking about seeks, so I figure it’s possible that this is either a GST bug, or that I need to change my code in some way. Would appreciate advice on how to get this working again.
BTW, I’m testing on Mac OS X Sequoia on an x86 machine.
Thanks very much!