| 178 | } |
| 179 | |
| 180 | int FFMS_Track::ClosestFrameFromPTS(int64_t PTS) const { |
| 181 | FrameInfo F; |
| 182 | F.PTS = PTS; |
| 183 | |
| 184 | auto Pos = std::lower_bound(begin(), end(), F, PTSComparison); |
| 185 | while (Pos != end() && Pos->Skipped() && Pos->PTS == PTS) |
| 186 | Pos++; |
| 187 | |
| 188 | if (Pos == end()) |
| 189 | return static_cast<int>(size() - 1); |
| 190 | size_t Frame = std::distance(begin(), Pos); |
| 191 | if (Pos == begin() || FFABS(Pos->PTS - PTS) <= FFABS((Pos - 1)->PTS - PTS)) |
| 192 | return static_cast<int>(Frame); |
| 193 | return static_cast<int>(Frame - 1); |
| 194 | } |
| 195 | |
| 196 | int FFMS_Track::FindClosestVideoKeyFrame(int Frame) const { |
| 197 | frame_vec &Frames = Data->Frames; |
no test coverage detected