bool Seek(gdouble rate, GstFormat format, GstSeekFlags flags,
GstSeekType start_type, gint64 start, GstSeekType stop_type,
gint64 stop) {
- GstElement* obj = mainbin_[static_cast<int>(T::kPipeline)];
- if (!obj) return false;
- if (!gst_element_seek(obj, rate, format, flags, start_type, start,
- stop_type, stop)) {
- return false;
+ std::vector<T> sinkElements {
+ T::kSinkVideo,
+ T::kSinkAudio,
+ T::kSinkSubtitle,
+ T::kSinkCaption
+ };
+
+ for (const auto& element : sinkElements) {
+ GstElement* obj = mainbin_[static_cast<int>(element)];
+ if (!obj) continue;
+ if (!gst_element_seek(obj, rate, format, flags, start_type, start,
+ stop_type, stop)) {
+ return false;
+ }
}
return true;
}