MCPcopy Create free account
hub / github.com/Tencent/libpag / ProcessAudioOverlapsScaledEnd

Function ProcessAudioOverlapsScaledEnd

viewer/src/audio/process/AudioTimeRange.cpp:137–164  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

135}
136
137void ProcessAudioOverlapsScaledEnd(int64_t originFileDuration, int64_t fileDuration,
138 int64_t audioStartTime, int64_t audioDuration,
139 TimeRange& scaledTimeRange, std::vector<AudioClip>& clips,
140 std::shared_ptr<AudioSource> source) {
141 auto audioEndTime = audioStartTime + audioDuration;
142
143 if (fileDuration > scaledTimeRange.start) {
144 auto minDuration = originFileDuration - scaledTimeRange.duration();
145 auto offset = std::max(minDuration, fileDuration) - originFileDuration;
146 auto scaledTargetEnd = scaledTimeRange.end + offset;
147
148 if (fileDuration > minDuration) {
149 auto targetStart = scaledTargetEnd - (scaledTimeRange.end - audioStartTime) *
150 (fileDuration - minDuration) /
151 scaledTimeRange.duration();
152 auto sourceTimeRange = TimeRange{0, scaledTimeRange.end - audioStartTime};
153 auto targetTimeRange = TimeRange{targetStart, scaledTargetEnd};
154 auto clip = AudioClip(source, sourceTimeRange, targetTimeRange);
155 clips.push_back(clip);
156 }
157
158 auto audioTargetEnd = audioEndTime + offset;
159 auto sourceTimeRange = TimeRange{scaledTimeRange.end - audioStartTime, audioDuration};
160 auto targetTimeRange = TimeRange{scaledTargetEnd, audioTargetEnd};
161 auto clip = AudioClip(source, sourceTimeRange, targetTimeRange);
162 clips.push_back(clip);
163 }
164}
165
166} // namespace pag

Callers 1

Calls 3

push_backMethod · 0.80
AudioClipClass · 0.70
durationMethod · 0.45

Tested by

no test coverage detected