- if( pos > 0 && st->time_base.num > 0 ) {
- double secs = pos / rate;
- tstmp = secs * st->time_base.den / st->time_base.num;
- if( nudge != AV_NOPTS_VALUE ) tstmp += nudge;
- }
+ double secs = pos < 0 ? 0. : pos / rate;
+ AVRational time_base = st->time_base;
+ int64_t tstmp = time_base.num > 0 ? secs * time_base.den/time_base.num : 0;
+ if( nudge != AV_NOPTS_VALUE ) tstmp += nudge;
+ int idx = st->index;
+#if 0
+// seek all streams using the default timebase.
+// this is how ffmpeg and ffplay work. stream seeks are less tested.
+ tstmp = av_rescale_q(tstmp, time_base, AV_TIME_BASE_Q);
+ idx = -1;
+#endif
+