annotate nonExposed/manageOverlapping.m @ 51:ebf92ed7d680 tip master

Added -fd (--full-duration) argument.
author Emmanouil Theofanis Chourdakis <e.t.chourdakis@qmul.ac.uk>
date Sun, 30 Sep 2018 13:21:49 +0100
parents b1901e8d8f5f
children
rev   line source
mathieu@14 1 function [ sceneSchedule ] = manageOverlapping( sceneSchedule,minSpace )
mathieu@14 2
mathieu@14 3 % This program was written by Mathias Rossignol & Grégoire Lafay
mathieu@14 4 % is Copyright (C) 2015 IRCAM <http://www.ircam.fr>
mathieu@14 5 %
mathieu@14 6 % This program is free software: you can redistribute it and/or modify it
mathieu@14 7 % under the terms of the GNU General Public License as published by the Free
mathieu@14 8 % Software Foundation, either version 3 of the License, or (at your option)
mathieu@14 9 % any later version.
mathieu@14 10 %
mathieu@14 11 % This program is distributed in the hope that it will be useful, but
mathieu@14 12 % WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
mathieu@14 13 % or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
mathieu@14 14 % for more details.
mathieu@14 15 %
mathieu@14 16 % You should have received a copy of the GNU General Public License along
mathieu@14 17 % with this program. If not, see <http://www.gnu.org/licenses/>.
mathieu@14 18
mathieu@14 19 % get sceneSchedule index in order to have position in ascending order
mathieu@14 20
mathieu@14 21 positions= [sceneSchedule.position];
mathieu@14 22 isBackground= [sceneSchedule.isBackground];
mathieu@14 23 [~,index]=sort(positions(logical(~isBackground)));
mathieu@14 24 index=index+length(isBackground(isBackground==1));
mathieu@14 25 idFlag=zeros(length(unique([sceneSchedule.classId])),1);
mathieu@14 26
mathieu@14 27 endPos=0;
mathieu@14 28 index2remove=[];
mathieu@14 29 for jj = index
mathieu@14 30 if(sceneSchedule(jj).position > endPos)
mathieu@14 31 endPos= sceneSchedule(jj).position+sceneSchedule(jj).duration;
mathieu@14 32 idFlag(sceneSchedule(jj).classId)=1;
mathieu@14 33 elseif(2*sceneSchedule(jj).duration>endPos-(sceneSchedule(jj).position+sceneSchedule(jj).duration) || idFlag(sceneSchedule(jj).classId)==0)
mathieu@14 34 sceneSchedule(jj).position=endPos+minSpace;
mathieu@14 35 endPos= sceneSchedule(jj).position+sceneSchedule(jj).duration;
mathieu@14 36 idFlag(sceneSchedule(jj).classId)=1;
mathieu@14 37 else
mathieu@14 38 index2remove=[index2remove jj];
mathieu@14 39 end
mathieu@14 40 end
mathieu@14 41
mathieu@14 42 sceneSchedule(index2remove)=[];