1 /***
2 
3     Olive - Non-Linear Video Editor
4     Copyright (C) 2019  Olive Team
5 
6     This program is free software: you can redistribute it and/or modify
7     it under the terms of the GNU General Public License as published by
8     the Free Software Foundation, either version 3 of the License, or
9     (at your option) any later version.
10 
11     This program is distributed in the hope that it will be useful,
12     but WITHOUT ANY WARRANTY; without even the implied warranty of
13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14     GNU General Public License for more details.
15 
16     You should have received a copy of the GNU General Public License
17     along with this program.  If not, see <http://www.gnu.org/licenses/>.
18 
19 ***/
20 
21 #include "linearfadetransition.h"
22 
LinearFadeTransition(Clip * c,Clip * s,const EffectMeta * em)23 LinearFadeTransition::LinearFadeTransition(Clip* c, Clip* s, const EffectMeta* em) : Transition(c, s, em) {}
24 
process_audio(double timecode_start,double timecode_end,quint8 * samples,int nb_bytes,int type)25 void LinearFadeTransition::process_audio(double timecode_start, double timecode_end, quint8* samples, int nb_bytes, int type) {
26 	double interval = (timecode_end-timecode_start)/nb_bytes;
27 
28 	for (int i=0;i<nb_bytes;i+=2) {
29 		qint16 samp = (qint16) (((samples[i+1] & 0xFF) << 8) | (samples[i] & 0xFF));
30 
31 		switch (type) {
32         case kTransitionOpening:
33 			samp *= timecode_start + (interval * i);
34 			break;
35         case kTransitionClosing:
36 			samp *= 1 - (timecode_start + (interval * i));
37 			break;
38 		}
39 
40 		samples[i+1] = (quint8) (samp >> 8);
41 		samples[i] = (quint8) samp;
42 	}
43 }
44