Files
reasampler/src/core/capture/insert_plan.cpp
T

47 lines
1.3 KiB
C++

// insert_plan.cpp — see insert_plan.h. Pure InsertMedia mode-bit arithmetic.
#include "core/capture/insert_plan.h"
namespace reasampler::capture {
namespace {
// Base target bits (mode&3). We use only 0 (current track) and 1 (new track).
constexpr int kBaseCurrentTrack = 0;
constexpr int kBaseNewTrack = 1;
// Tempo-conform bits, verbatim from the header doc-comment.
constexpr int kMatchTempo1x = 8;
constexpr int kMatchTempoHalf = 16;
constexpr int kMatchTempoDbl = 32;
constexpr int kDontPreservePitch = 64;
} // namespace
int computeInsertMode(const InsertOptions& opts) {
int mode = opts.target == InsertTarget::NewTrack ? kBaseNewTrack
: kBaseCurrentTrack;
switch (opts.conform) {
case TempoConform::None:
return mode; // native length, no stretch; never &4
case TempoConform::Ratio1x:
mode |= kMatchTempo1x;
break;
case TempoConform::RatioHalf:
mode |= kMatchTempoHalf;
break;
case TempoConform::RatioDouble:
mode |= kMatchTempoDbl;
break;
}
// Reached only when a tempo bit is set (None already returned above).
if (!opts.preservePitch)
mode |= kDontPreservePitch;
return mode;
}
} // namespace reasampler::capture