| 194 | } |
| 195 | |
| 196 | int FFMS_Track::FindClosestVideoKeyFrame(int Frame) const { |
| 197 | frame_vec &Frames = Data->Frames; |
| 198 | Frame = std::min(std::max(Frame, 0), static_cast<int>(size()) - 1); |
| 199 | size_t PosInDecodingOrder = Frames[Frame].PosInDecodingOrder; |
| 200 | for (; PosInDecodingOrder > 0 && !(Frames[Frames[PosInDecodingOrder].OriginalPos].KeyFrame && Frames[Frames[PosInDecodingOrder].OriginalPos].PTS <= Frames[Frame].PTS); PosInDecodingOrder--); |
| 201 | |
| 202 | return Frames[PosInDecodingOrder].OriginalPos; |
| 203 | } |
| 204 | |
| 205 | int FFMS_Track::RealFrameNumber(int Frame) const { |
| 206 | return Data->RealFrameNumbers[Frame]; |