(self)
| 220 | |
| 221 | @property |
| 222 | def position(self) -> FrameTimecode: |
| 223 | timecode = self.timecode |
| 224 | # If PTS is 0 but we've read frames, derive from frame number. |
| 225 | # This handles image sequences and cases where CAP_PROP_POS_MSEC is unreliable. |
| 226 | if timecode.pts == 0 and self.frame_number > 0: |
| 227 | fps = self.frame_rate |
| 228 | time_base = Fraction(1, fps.numerator) |
| 229 | pts = (self.frame_number - 1) * fps.denominator |
| 230 | timecode = Timecode(pts=pts, time_base=time_base) |
| 231 | return FrameTimecode(timecode=timecode, fps=self.frame_rate) |
| 232 | |
| 233 | @property |
| 234 | def position_ms(self) -> float: |
nothing calls this directly
no test coverage detected