-/** Seek.
- * @param p Position as a source timestamp in seconds.
- * @return true on error.
- */
-bool
-Decoder::seek (double p)
-{
- throw DecodeError ("decoder does not support seek");
+ if (video && !video->ignore() && (!pos || video->position() < *pos)) {
+ pos = video->position();
+ }
+
+ if (audio && !audio->ignore() && (!pos || audio->position() < *pos)) {
+ pos = audio->position();
+ }
+
+ if (subtitle && !subtitle->ignore() && (!pos || subtitle->position() < *pos)) {
+ pos = subtitle->position();
+ }
+
+ return pos.get_value_or(ContentTime());