elanhickler

remove all stretch markers

Dec 7th, 2015
182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.74 KB | None | 0 0
  1. void RemoveAllStretchMarkersAndAdjustLength(MediaItem* item) {
  2.     auto take = GetActiveTake(item);
  3.     int num_sm = GetTakeNumStretchMarkers(take);
  4.     double item_length = GetMediaItemInfo_Value(item, "D_LENGTH");
  5.     double take_playrate = GetMediaItemTakeInfo_Value(take, "D_PLAYRATE");
  6.  
  7.     double p1, p2, s1, s2, dss, dpp, disp;
  8.     disp = 0.0;
  9.  
  10.     GetTakeStretchMarker(take, 0, &p1, &s1);
  11.     for (int i = 1; i < num_sm; ++i) {
  12.         GetTakeStretchMarker(take, i, &p2, &s2);
  13.         dpp = p2 - p1;
  14.         dss = s2 - s1;
  15.         disp += dpp - dss;
  16.  
  17.         p1 = p2;
  18.         s1 = s2;
  19.     }
  20.  
  21.     auto TakeList = GetTakes(item);
  22.     for (const auto& take : TakeList) DeleteTakeStretchMarkers(take, 0, &num_sm);
  23.  
  24.     SetMediaItemInfo_Value(item, "D_LENGTH", item_length - (disp / take_playrate));
  25. }
Advertisement
Add Comment
Please, Sign In to add comment