Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void RemoveAllStretchMarkersAndAdjustLength(MediaItem* item) {
- auto take = GetActiveTake(item);
- int num_sm = GetTakeNumStretchMarkers(take);
- double item_length = GetMediaItemInfo_Value(item, "D_LENGTH");
- double take_playrate = GetMediaItemTakeInfo_Value(take, "D_PLAYRATE");
- double p1, p2, s1, s2, dss, dpp, disp;
- disp = 0.0;
- GetTakeStretchMarker(take, 0, &p1, &s1);
- for (int i = 1; i < num_sm; ++i) {
- GetTakeStretchMarker(take, i, &p2, &s2);
- dpp = p2 - p1;
- dss = s2 - s1;
- disp += dpp - dss;
- p1 = p2;
- s1 = s2;
- }
- auto TakeList = GetTakes(item);
- for (const auto& take : TakeList) DeleteTakeStretchMarkers(take, 0, &num_sm);
- SetMediaItemInfo_Value(item, "D_LENGTH", item_length - (disp / take_playrate));
- }
Advertisement
Add Comment
Please, Sign In to add comment