style: unify identifier naming per updated conventions

Automated with clang-tidy readability-identifier-naming (config added to
.clang-tidy) plus scripted passes, per the updated rules now documented
in CONTRIBUTING.md:

- types (class/struct/enum/alias/template params): PascalCase
- functions, variables, members: snake_case (incl. rational -> Rational)
- private/protected members: trailing underscore; static member
  variables likewise (instance_, available_themes_)
- constants and enum values: snake_case (kLinear -> k_linear,
  F32P -> f32p); ALL_CAPS reserved for macros
- macros: OAK_ prefix (OLIVE_ADD_TEST/OLIVE_ASSERT/OLIVE_CONFIG ->
  OAK_ADD_TEST/OAK_ASSERT/OAK_CONFIG, GL_PREAMBLE -> OAK_GL_PREAMBLE,
  include guards -> OAK_*)
- file names: all lowercase (Current/Plugin/OliveHost/OliveClip/
  OlivePluginInstance -> current/plugin/olivehost/oliveclip/
  oliveplugininstance)
- getters share the member name sans underscore, setters set_foo()
- Qt and third-party (OpenFX) virtual overrides and framework callbacks
  keep their original names (exempt in .clang-tidy)

Manual follow-ups required where automation could not reach:
- string-based QMetaObject/SIGNAL/SLOT references updated to renamed
  methods (AddTask, CreatedFile, DeleteSpecificFile, moveSelectionUp, ...)
- macro bodies referencing renamed methods (OLIVE_CONFIG,
  NODE_DEFAULT_DESTRUCTOR, MANAGEDDISPLAYWIDGET_*)
- self-shadowing locals renamed where signals/methods became same-named
  (size_changed, worker_count, selected_items, import param, filters)
- third_party OFX member/namespace usages restored (OFX::Host::*,
  _created, _clipPrefsDirty, createInstance, clearPersistentMessage)
- STL protocol aliases restored (const_iterator) with .clang-tidy
  ignore rules; qHash overloads restored

Full build and test suite pass: ctest 4/4, ~1960 gtest cases green.
This commit is contained in:
2026-07-19 16:10:54 +08:00
parent cb1718a103
commit bb40b4923e
1014 changed files with 44257 additions and 44220 deletions
+9 -9
View File
@@ -29,7 +29,7 @@ namespace olive
{
AudioLevelMeter::Stats
AudioLevelMeter::AnalyzeSampleBuffer(const core::SampleBuffer &samples)
AudioLevelMeter::analyze_sample_buffer(const core::SampleBuffer &samples)
{
Stats stats;
@@ -63,9 +63,9 @@ AudioLevelMeter::AnalyzeSampleBuffer(const core::SampleBuffer &samples)
ChannelStats channel_stats;
channel_stats.peak_linear = peak;
channel_stats.peak_db = LinearToDb(peak);
channel_stats.peak_db = linear_to_db(peak);
channel_stats.rms_linear = rms;
channel_stats.rms_db = LinearToDb(rms);
channel_stats.rms_db = linear_to_db(rms);
channel_stats.vu_db = channel_stats.rms_db;
stats.channels[channel] = channel_stats;
@@ -76,24 +76,24 @@ AudioLevelMeter::AnalyzeSampleBuffer(const core::SampleBuffer &samples)
stats.silence = qFuzzyIsNull(stats.max_peak_linear);
stats.integrated_lufs =
PowerToLufs(total_square / static_cast<double>(total_samples));
power_to_lufs(total_square / static_cast<double>(total_samples));
return stats;
}
double AudioLevelMeter::LinearToDb(double linear)
double AudioLevelMeter::linear_to_db(double linear)
{
if (linear <= 0.0) {
return Decibel::MINIMUM;
return Decibel::minimum;
}
return Decibel::fromLinear(linear);
return Decibel::from_linear(linear);
}
double AudioLevelMeter::PowerToLufs(double mean_square)
double AudioLevelMeter::power_to_lufs(double mean_square)
{
if (mean_square <= 0.0) {
return Decibel::MINIMUM;
return Decibel::minimum;
}
// BS.1770 loudness uses K-weighted mean square. This first pass stores the
+6 -6
View File
@@ -18,8 +18,8 @@
***/
#ifndef AUDIOLEVELMETER_H
#define AUDIOLEVELMETER_H
#ifndef OAK_AUDIOLEVELMETER_H
#define OAK_AUDIOLEVELMETER_H
#include <QVector>
@@ -45,13 +45,13 @@ public:
bool silence = true;
};
static Stats AnalyzeSampleBuffer(const core::SampleBuffer &samples);
static Stats analyze_sample_buffer(const core::SampleBuffer &samples);
private:
static double LinearToDb(double linear);
static double PowerToLufs(double mean_square);
static double linear_to_db(double linear);
static double power_to_lufs(double mean_square);
};
}
#endif // AUDIOLEVELMETER_H
#endif // OAK_AUDIOLEVELMETER_H
+68 -68
View File
@@ -34,14 +34,14 @@ namespace olive
AudioManager *AudioManager::instance_ = nullptr;
void AudioManager::CreateInstance()
void AudioManager::create_instance()
{
if (instance_ == nullptr) {
instance_ = new AudioManager();
}
}
void AudioManager::DestroyInstance()
void AudioManager::destroy_instance()
{
delete instance_;
instance_ = nullptr;
@@ -52,18 +52,18 @@ AudioManager *AudioManager::instance()
return instance_;
}
void AudioManager::SetOutputNotifyInterval(int n)
void AudioManager::set_output_notify_interval(int n)
{
output_buffer_->set_notify_interval(n);
}
int OutputCallback(const void *input, void *output, unsigned long frameCount,
const PaStreamCallbackTimeInfo *timeInfo,
PaStreamCallbackFlags statusFlags, void *userData)
int output_callback(const void *input, void *output, unsigned long frame_count,
const PaStreamCallbackTimeInfo *time_info,
PaStreamCallbackFlags status_flags, void *user_data)
{
PreviewAudioDevice *device = static_cast<PreviewAudioDevice *>(userData);
PreviewAudioDevice *device = static_cast<PreviewAudioDevice *>(user_data);
qint64 max_read = frameCount * device->bytes_per_frame();
qint64 max_read = frame_count * device->bytes_per_frame();
qint64 read_count =
device->read(reinterpret_cast<char *>(output), max_read);
if (read_count < max_read) {
@@ -74,23 +74,23 @@ int OutputCallback(const void *input, void *output, unsigned long frameCount,
return paContinue;
}
int InputCallback(const void *input, void *output, unsigned long frameCount,
const PaStreamCallbackTimeInfo *timeInfo,
PaStreamCallbackFlags statusFlags, void *userData)
int input_callback(const void *input, void *output, unsigned long frame_count,
const PaStreamCallbackTimeInfo *time_info,
PaStreamCallbackFlags status_flags, void *user_data)
{
FFmpegEncoder *f = static_cast<FFmpegEncoder *>(userData);
FFmpegEncoder *f = static_cast<FFmpegEncoder *>(user_data);
AudioParams our_params = f->params().audio_params();
our_params.set_format(
f->params().audio_params().format().to_packed_equivalent());
f->WriteAudioData(our_params, reinterpret_cast<const uint8_t **>(&input),
frameCount);
f->write_audio_data(our_params, reinterpret_cast<const uint8_t **>(&input),
frame_count);
return paContinue;
}
bool AudioManager::PushToOutput(const AudioParams &params,
bool AudioManager::push_to_output(const AudioParams &params,
const QByteArray &samples, QString *error)
{
if (output_device_ == paNoDevice) {
@@ -102,14 +102,14 @@ bool AudioManager::PushToOutput(const AudioParams &params,
if (output_params_ != params || output_stream_ == nullptr) {
output_params_ = params;
CloseOutputStream();
close_output_stream();
PaStreamParameters p = GetPortAudioParams(params, output_device_);
PaStreamParameters p = get_port_audio_params(params, output_device_);
PaError r = Pa_OpenStream(&output_stream_, nullptr, &p,
output_params_.sample_rate(),
paFramesPerBufferUnspecified, paNoFlag,
OutputCallback, output_buffer_);
output_callback, output_buffer_);
if (r != paNoError) {
// Unhandled error
//qCritical() << "Failed to open output stream:" << Pa_GetErrorText(r);
@@ -136,59 +136,59 @@ bool AudioManager::PushToOutput(const AudioParams &params,
return true;
}
void AudioManager::ClearBufferedOutput()
void AudioManager::clear_buffered_output()
{
output_buffer_->clear();
}
PaSampleFormat AudioManager::GetPortAudioSampleFormat(SampleFormat fmt)
PaSampleFormat AudioManager::get_port_audio_sample_format(SampleFormat fmt)
{
switch (fmt) {
case SampleFormat::U8:
case SampleFormat::U8P:
case SampleFormat::u8:
case SampleFormat::u8_p:
return paUInt8;
case SampleFormat::S16:
case SampleFormat::S16P:
case SampleFormat::s16:
case SampleFormat::s16_p:
return paInt16;
case SampleFormat::S32:
case SampleFormat::S32P:
case SampleFormat::s32:
case SampleFormat::s32_p:
return paInt32;
case SampleFormat::F32:
case SampleFormat::F32P:
case SampleFormat::f32:
case SampleFormat::f32_p:
return paFloat32;
case SampleFormat::S64:
case SampleFormat::S64P:
case SampleFormat::F64:
case SampleFormat::F64P:
case SampleFormat::INVALID:
case SampleFormat::COUNT:
case SampleFormat::s64:
case SampleFormat::s64_p:
case SampleFormat::f64:
case SampleFormat::f64_p:
case SampleFormat::invalid:
case SampleFormat::count:
break;
}
return 0;
}
void AudioManager::CloseOutputStream()
void AudioManager::close_output_stream()
{
if (output_stream_) {
if (Pa_IsStreamActive(output_stream_)) {
StopOutput();
stop_output();
}
Pa_CloseStream(output_stream_);
output_stream_ = nullptr;
}
}
void AudioManager::StopOutput()
void AudioManager::stop_output()
{
// Abort the stream so playback stops immediately
if (output_stream_) {
Pa_AbortStream(output_stream_);
ClearBufferedOutput();
clear_buffered_output();
}
}
void AudioManager::SetOutputDevice(PaDeviceIndex device)
void AudioManager::set_output_device(PaDeviceIndex device)
{
if (device == paNoDevice) {
qInfo() << "No output device found";
@@ -201,12 +201,12 @@ void AudioManager::SetOutputDevice(PaDeviceIndex device)
output_device_ = device;
CloseOutputStream();
close_output_stream();
emit OutputParamsChanged();
emit output_params_changed();
}
void AudioManager::SetInputDevice(PaDeviceIndex device)
void AudioManager::set_input_device(PaDeviceIndex device)
{
if (device == paNoDevice) {
qInfo() << "No input device found";
@@ -220,14 +220,14 @@ void AudioManager::SetInputDevice(PaDeviceIndex device)
input_device_ = device;
}
void AudioManager::HardReset()
void AudioManager::hard_reset()
{
CloseOutputStream();
close_output_stream();
Pa_Terminate();
Pa_Initialize();
}
bool AudioManager::StartRecording(const EncodingParams &params,
bool AudioManager::start_recording(const EncodingParams &params,
QString *error_str)
{
if (input_device_ == paNoDevice) {
@@ -235,18 +235,18 @@ bool AudioManager::StartRecording(const EncodingParams &params,
}
input_encoder_ = new FFmpegEncoder(params);
if (!input_encoder_->Open()) {
if (!input_encoder_->open()) {
qCritical() << "Failed to open encoder for recording";
return false;
}
PaStreamParameters p =
GetPortAudioParams(params.audio_params(), input_device_);
get_port_audio_params(params.audio_params(), input_device_);
PaError r = Pa_OpenStream(&input_stream_, &p, nullptr,
params.audio_params().sample_rate(),
paFramesPerBufferUnspecified, paNoFlag,
InputCallback, input_encoder_);
input_callback, input_encoder_);
if (r == paNoError) {
//const PaStreamInfo* info = Pa_GetStreamInfo(input_stream_);
r = Pa_StartStream(input_stream_);
@@ -259,11 +259,11 @@ bool AudioManager::StartRecording(const EncodingParams &params,
*error_str = Pa_GetErrorText(r);
}
StopRecording();
stop_recording();
return false;
}
void AudioManager::StopRecording()
void AudioManager::stop_recording()
{
if (input_stream_) {
if (Pa_IsStreamActive(input_stream_)) {
@@ -275,14 +275,14 @@ void AudioManager::StopRecording()
}
if (input_encoder_) {
input_encoder_->Close();
input_encoder_->close();
delete input_encoder_;
input_encoder_ = nullptr;
}
}
#ifdef Q_OS_LINUX
static bool IsPreferredLinuxAudioHostApi(const PaHostApiInfo *info)
static bool is_preferred_linux_audio_host_api(const PaHostApiInfo *info)
{
if (!info) {
return false;
@@ -294,7 +294,7 @@ static bool IsPreferredLinuxAudioHostApi(const PaHostApiInfo *info)
name.contains(QStringLiteral("PulseAudio"), Qt::CaseInsensitive);
}
static PaDeviceIndex GetPreferredLinuxAudioDevice(bool is_output_device)
static PaDeviceIndex get_preferred_linux_audio_device(bool is_output_device)
{
// Prefer sound servers that provide mixing and desktop integration
// (PipeWire, JACK, PulseAudio) over plain ALSA defaults, which often
@@ -328,16 +328,16 @@ static PaDeviceIndex GetPreferredLinuxAudioDevice(bool is_output_device)
}
#endif
PaDeviceIndex AudioManager::FindConfigDeviceByName(bool is_output_device)
PaDeviceIndex AudioManager::find_config_device_by_name(bool is_output_device)
{
QString entry = is_output_device ? QStringLiteral("AudioOutput") :
QStringLiteral("AudioInput");
return FindDeviceByName(OLIVE_CONFIG_STR(entry).toString(),
return find_device_by_name(OAK_CONFIG_STR(entry).toString(),
is_output_device);
}
PaDeviceIndex AudioManager::FindDeviceByName(const QString &s,
PaDeviceIndex AudioManager::find_device_by_name(const QString &s,
bool is_output_device)
{
PaDeviceIndex exact_match = paNoDevice;
@@ -367,7 +367,7 @@ PaDeviceIndex AudioManager::FindDeviceByName(const QString &s,
if (matched_info) {
const PaHostApiInfo *host_api =
Pa_GetHostApiInfo(matched_info->hostApi);
if (IsPreferredLinuxAudioHostApi(host_api)) {
if (is_preferred_linux_audio_host_api(host_api)) {
// Keep an explicit choice that already uses a preferred API.
return exact_match;
}
@@ -375,7 +375,7 @@ PaDeviceIndex AudioManager::FindDeviceByName(const QString &s,
// Upgrade a non-preferred (e.g. ALSA) match to a preferred backend
// when one is available.
PaDeviceIndex preferred =
GetPreferredLinuxAudioDevice(is_output_device);
get_preferred_linux_audio_device(is_output_device);
if (preferred != paNoDevice) {
qInfo() << "Overriding saved audio device" << s
<< "with preferred Linux audio device"
@@ -388,7 +388,7 @@ PaDeviceIndex AudioManager::FindDeviceByName(const QString &s,
}
}
return GetPreferredLinuxAudioDevice(is_output_device);
return get_preferred_linux_audio_device(is_output_device);
#else
if (exact_match != paNoDevice) {
return exact_match;
@@ -399,7 +399,7 @@ PaDeviceIndex AudioManager::FindDeviceByName(const QString &s,
#endif
}
PaStreamParameters AudioManager::GetPortAudioParams(const AudioParams &params,
PaStreamParameters AudioManager::get_port_audio_params(const AudioParams &params,
PaDeviceIndex device)
{
PaStreamParameters p;
@@ -407,7 +407,7 @@ PaStreamParameters AudioManager::GetPortAudioParams(const AudioParams &params,
p.channelCount = params.channel_count();
p.device = device;
p.hostApiSpecificStreamInfo = nullptr;
p.sampleFormat = GetPortAudioSampleFormat(params.format());
p.sampleFormat = get_port_audio_sample_format(params.format());
if (device >= 0 && device < Pa_GetDeviceCount()) {
p.suggestedLatency = Pa_GetDeviceInfo(device)->defaultLowOutputLatency;
@@ -432,24 +432,24 @@ AudioManager::AudioManager()
Pa_Initialize();
// Get device from config
PaDeviceIndex output_device = FindConfigDeviceByName(true);
PaDeviceIndex input_device = FindConfigDeviceByName(false);
PaDeviceIndex output_device = find_config_device_by_name(true);
PaDeviceIndex input_device = find_config_device_by_name(false);
qDebug() << "AudioManager: selected output device index=" << output_device
<< "input device index=" << input_device;
SetOutputDevice(output_device);
SetInputDevice(input_device);
set_output_device(output_device);
set_input_device(input_device);
output_buffer_ = new PreviewAudioDevice(this);
output_buffer_->open(PreviewAudioDevice::ReadWrite);
connect(output_buffer_, &PreviewAudioDevice::Notify, this,
&AudioManager::OutputNotify);
connect(output_buffer_, &PreviewAudioDevice::notify, this,
&AudioManager::output_notify);
}
AudioManager::~AudioManager()
{
CloseOutputStream();
close_output_stream();
Pa_Terminate();
}
+23 -23
View File
@@ -19,8 +19,8 @@
***/
#ifndef AUDIOMANAGER_H
#define AUDIOMANAGER_H
#ifndef OAK_AUDIOMANAGER_H
#define OAK_AUDIOMANAGER_H
#include <memory>
#include <QtConcurrent/QtConcurrent>
@@ -46,61 +46,61 @@ namespace olive
class AudioManager : public QObject {
Q_OBJECT
public:
static void CreateInstance();
static void DestroyInstance();
static void create_instance();
static void destroy_instance();
static AudioManager *instance();
void SetOutputNotifyInterval(int n);
void set_output_notify_interval(int n);
bool PushToOutput(const AudioParams &params, const QByteArray &samples,
bool push_to_output(const AudioParams &params, const QByteArray &samples,
QString *error = nullptr);
void ClearBufferedOutput();
void clear_buffered_output();
void StopOutput();
void stop_output();
PaDeviceIndex GetOutputDevice() const
PaDeviceIndex get_output_device() const
{
return output_device_;
}
PaDeviceIndex GetInputDevice() const
PaDeviceIndex get_input_device() const
{
return input_device_;
}
void SetOutputDevice(PaDeviceIndex device);
void set_output_device(PaDeviceIndex device);
void SetInputDevice(PaDeviceIndex device);
void set_input_device(PaDeviceIndex device);
void HardReset();
void hard_reset();
bool StartRecording(const EncodingParams &params,
bool start_recording(const EncodingParams &params,
QString *error_str = nullptr);
void StopRecording();
void stop_recording();
static PaDeviceIndex FindConfigDeviceByName(bool is_output_device);
static PaDeviceIndex FindDeviceByName(const QString &s,
static PaDeviceIndex find_config_device_by_name(bool is_output_device);
static PaDeviceIndex find_device_by_name(const QString &s,
bool is_output_device);
static PaStreamParameters GetPortAudioParams(const AudioParams &p,
static PaStreamParameters get_port_audio_params(const AudioParams &p,
PaDeviceIndex device);
signals:
void OutputNotify();
void output_notify();
void OutputParamsChanged();
void output_params_changed();
private:
AudioManager();
virtual ~AudioManager() override;
static PaSampleFormat GetPortAudioSampleFormat(SampleFormat fmt);
static PaSampleFormat get_port_audio_sample_format(SampleFormat fmt);
void CloseOutputStream();
void close_output_stream();
static AudioManager *instance_;
@@ -117,4 +117,4 @@ private:
}
#endif // AUDIOMANAGER_H
#endif // OAK_AUDIOMANAGER_H
+12 -12
View File
@@ -38,7 +38,7 @@ namespace olive
* If the mask is zero, fall back to a default layout derived from the
* channel count (stereo when unknown).
*/
static AudioParams FixChannelLayout(const AudioParams &params)
static AudioParams fix_channel_layout(const AudioParams &params)
{
AudioParams result = params;
@@ -66,10 +66,10 @@ AudioProcessor::AudioProcessor()
AudioProcessor::~AudioProcessor()
{
Close();
close();
}
bool AudioProcessor::Open(const AudioParams &from, const AudioParams &to,
bool AudioProcessor::open(const AudioParams &from, const AudioParams &to,
double tempo)
{
if (graph_) {
@@ -77,8 +77,8 @@ bool AudioProcessor::Open(const AudioParams &from, const AudioParams &to,
return false;
}
AudioParams from_fixed = FixChannelLayout(from);
AudioParams to_fixed = FixChannelLayout(to);
AudioParams from_fixed = fix_channel_layout(from);
AudioParams to_fixed = fix_channel_layout(to);
qDebug() << "AudioProcessor::Open: from sample_rate="
<< from_fixed.sample_rate() << "channels="
@@ -92,13 +92,13 @@ bool AudioProcessor::Open(const AudioParams &from, const AudioParams &to,
config.in_sample_rate = from_fixed.sample_rate();
config.in_channel_layout_mask = from_fixed.channel_layout();
config.in_sample_format =
FFmpegUtils::GetFFmpegSampleFormat(from_fixed.format());
FFmpegUtils::get_f_fmpeg_sample_format(from_fixed.format());
config.in_channels = from_fixed.channel_count();
config.out_sample_rate = to_fixed.sample_rate();
config.out_channel_layout_mask = to_fixed.channel_layout();
config.out_sample_format =
FFmpegUtils::GetFFmpegSampleFormat(to_fixed.format());
FFmpegUtils::get_f_fmpeg_sample_format(to_fixed.format());
config.out_channels = to_fixed.channel_count();
config.out_is_planar = to_fixed.format().is_planar() ? 1 : 0;
@@ -113,7 +113,7 @@ bool AudioProcessor::Open(const AudioParams &from, const AudioParams &to,
out_frame_ = fb_frame_alloc();
if (!out_frame_) {
qCritical() << "Failed to allocate output frame";
Close();
close();
return false;
}
@@ -123,7 +123,7 @@ bool AudioProcessor::Open(const AudioParams &from, const AudioParams &to,
return true;
}
void AudioProcessor::Close()
void AudioProcessor::close()
{
if (graph_) {
fb_audio_graph_free(&graph_);
@@ -134,10 +134,10 @@ void AudioProcessor::Close()
}
}
int AudioProcessor::Convert(float **in, int nb_in_samples,
int AudioProcessor::convert(float **in, int nb_in_samples,
AudioProcessor::Buffer *output)
{
if (!IsOpen()) {
if (!is_open()) {
qCritical() << "Tried to convert on closed processor";
return -1;
}
@@ -197,7 +197,7 @@ int AudioProcessor::Convert(float **in, int nb_in_samples,
return r;
}
void AudioProcessor::Flush()
void AudioProcessor::flush()
{
int r = fb_audio_graph_push(graph_, nullptr, 0);
if (r < 0) {
+8 -8
View File
@@ -19,8 +19,8 @@
***/
#ifndef AUDIOPROCESSOR_H
#define AUDIOPROCESSOR_H
#ifndef OAK_AUDIOPROCESSOR_H
#define OAK_AUDIOPROCESSOR_H
#include <inttypes.h>
#include <olive/core/core.h>
@@ -43,20 +43,20 @@ public:
DISABLE_COPY_MOVE(AudioProcessor)
bool Open(const AudioParams &from, const AudioParams &to,
bool open(const AudioParams &from, const AudioParams &to,
double tempo = 1.0);
void Close();
void close();
bool IsOpen() const
bool is_open() const
{
return graph_;
}
using Buffer = QVector<QByteArray>;
int Convert(float **in, int nb_in_samples, AudioProcessor::Buffer *output);
int convert(float **in, int nb_in_samples, AudioProcessor::Buffer *output);
void Flush();
void flush();
const AudioParams &from() const
{
@@ -79,4 +79,4 @@ private:
}
#endif // AUDIOPROCESSOR_H
#endif // OAK_AUDIOPROCESSOR_H
+7 -7
View File
@@ -23,9 +23,9 @@
namespace olive
{
AudioSynchronizer::Placement AudioSynchronizer::PlaceBySourceTime(
AudioSynchronizer::Placement AudioSynchronizer::place_by_source_time(
const SourceClip &reference, const SourceClip &candidate,
const core::rational &reference_timeline_in)
const core::Rational &reference_timeline_in)
{
Placement placement;
if (!reference.has_source_start_time || !candidate.has_source_start_time ||
@@ -34,9 +34,9 @@ AudioSynchronizer::Placement AudioSynchronizer::PlaceBySourceTime(
return placement;
}
const core::rational reference_head_source =
const core::Rational reference_head_source =
reference.source_start_time + reference.media_in;
const core::rational candidate_head_source =
const core::Rational candidate_head_source =
candidate.source_start_time + candidate.media_in;
placement.timeline_in =
@@ -45,8 +45,8 @@ AudioSynchronizer::Placement AudioSynchronizer::PlaceBySourceTime(
return placement;
}
AudioSynchronizer::Placement AudioSynchronizer::PlaceByWaveformOffset(
const core::rational &reference_timeline_in,
AudioSynchronizer::Placement AudioSynchronizer::place_by_waveform_offset(
const core::Rational &reference_timeline_in,
int64_t candidate_offset_samples, int sample_rate)
{
Placement placement;
@@ -55,7 +55,7 @@ AudioSynchronizer::Placement AudioSynchronizer::PlaceByWaveformOffset(
}
placement.timeline_in = reference_timeline_in +
core::rational::fromDouble(
core::Rational::from_double(
static_cast<double>(candidate_offset_samples) /
static_cast<double>(sample_rate));
placement.valid = !placement.timeline_in.isNaN();
+9 -9
View File
@@ -18,8 +18,8 @@
***/
#ifndef AUDIOSYNCHRONIZER_H
#define AUDIOSYNCHRONIZER_H
#ifndef OAK_AUDIOSYNCHRONIZER_H
#define OAK_AUDIOSYNCHRONIZER_H
#include <cstdint>
@@ -31,25 +31,25 @@ namespace olive
class AudioSynchronizer {
public:
struct SourceClip {
core::rational source_start_time;
core::rational media_in;
core::Rational source_start_time;
core::Rational media_in;
bool has_source_start_time = false;
};
struct Placement {
core::rational timeline_in;
core::Rational timeline_in;
bool valid = false;
};
static Placement
PlaceBySourceTime(const SourceClip &reference, const SourceClip &candidate,
const core::rational &reference_timeline_in);
place_by_source_time(const SourceClip &reference, const SourceClip &candidate,
const core::Rational &reference_timeline_in);
static Placement
PlaceByWaveformOffset(const core::rational &reference_timeline_in,
place_by_waveform_offset(const core::Rational &reference_timeline_in,
int64_t candidate_offset_samples, int sample_rate);
};
}
#endif // AUDIOSYNCHRONIZER_H
#endif // OAK_AUDIOSYNCHRONIZER_H
+71 -71
View File
@@ -29,19 +29,19 @@
namespace olive
{
const rational AudioVisualWaveform::kMinimumSampleRate = rational(1, 8);
const rational AudioVisualWaveform::kMaximumSampleRate = 1024;
const Rational AudioVisualWaveform::k_minimum_sample_rate = Rational(1, 8);
const Rational AudioVisualWaveform::k_maximum_sample_rate = 1024;
AudioVisualWaveform::AudioVisualWaveform()
: channels_(0)
{
for (rational i = kMinimumSampleRate; i <= kMaximumSampleRate; i *= 2) {
for (Rational i = k_minimum_sample_rate; i <= k_maximum_sample_rate; i *= 2) {
mipmapped_data_.insert({ i, Sample() });
}
}
void AudioVisualWaveform::OverwriteSamplesFromBuffer(
const SampleBuffer &samples, int sample_rate, const rational &start,
void AudioVisualWaveform::overwrite_samples_from_buffer(
const SampleBuffer &samples, int sample_rate, const Rational &start,
double target_rate, Sample &data, size_t &start_index,
size_t &samples_length)
{
@@ -64,16 +64,16 @@ void AudioVisualWaveform::OverwriteSamplesFromBuffer(
size_t(qRound64((double(i + channels_) * chunk_size))) / channels_,
samples.sample_count());
Sample summary = SumSamples(samples, src_start, src_end - src_start);
Sample summary = sum_samples(samples, src_start, src_end - src_start);
memcpy(&data.data()[i + start_index], summary.data(),
summary.size() * sizeof(SamplePerChannel));
}
}
void AudioVisualWaveform::OverwriteSamplesFromMipmap(
void AudioVisualWaveform::overwrite_samples_from_mipmap(
const AudioVisualWaveform::Sample &input, double input_sample_rate,
size_t &input_start, size_t &input_length, const rational &start,
size_t &input_start, size_t &input_length, const Rational &start,
double output_rate, AudioVisualWaveform::Sample &output_data)
{
size_t start_index = time_to_samples(start, output_rate);
@@ -91,7 +91,7 @@ void AudioVisualWaveform::OverwriteSamplesFromMipmap(
for (size_t i = 0; i < samples_length; i += channels_) {
Sample summary =
ReSumSamples(&input.data()[input_start + (i * chunk_size)],
re_sum_samples(&input.data()[input_start + (i * chunk_size)],
chunk_size * channels_, channels_);
memcpy(&output_data.data()[i + start_index], summary.data(),
@@ -102,31 +102,31 @@ void AudioVisualWaveform::OverwriteSamplesFromMipmap(
input_length = samples_length;
}
void AudioVisualWaveform::ValidateVirtualStart(const rational &new_start)
void AudioVisualWaveform::validate_virtual_start(const Rational &new_start)
{
if (length_ == 0) {
virtual_start_ = new_start;
} else if (virtual_start_ > new_start) {
TrimIn(new_start - virtual_start_);
trim_in(new_start - virtual_start_);
}
}
void AudioVisualWaveform::OverwriteSamples(const SampleBuffer &samples,
void AudioVisualWaveform::overwrite_samples(const SampleBuffer &samples,
int sample_rate,
const rational &start)
const Rational &start)
{
if (!channels_) {
qWarning() << "Failed to write samples - channel count is zero";
return;
}
ValidateVirtualStart(start);
validate_virtual_start(start);
// Process the largest mipmap directly for the samples
auto current_mipmap = mipmapped_data_.rbegin();
size_t input_start, input_length;
OverwriteSamplesFromBuffer(samples, sample_rate, start - virtual_start_,
current_mipmap->first.toDouble(),
overwrite_samples_from_buffer(samples, sample_rate, start - virtual_start_,
current_mipmap->first.to_double(),
current_mipmap->second, input_start,
input_length);
@@ -139,37 +139,37 @@ void AudioVisualWaveform::OverwriteSamples(const SampleBuffer &samples,
break;
}
OverwriteSamplesFromMipmap(
previous_mipmap->second, previous_mipmap->first.toDouble(),
overwrite_samples_from_mipmap(
previous_mipmap->second, previous_mipmap->first.to_double(),
input_start, input_length, start - virtual_start_,
current_mipmap->first.toDouble(), current_mipmap->second);
current_mipmap->first.to_double(), current_mipmap->second);
}
rational sample_length(samples.sample_count(), sample_rate);
Rational sample_length(samples.sample_count(), sample_rate);
length_ = qMax(length_, start + sample_length);
}
void AudioVisualWaveform::OverwriteSums(const AudioVisualWaveform &sums,
const rational &dest,
const rational &offset,
const rational &length)
void AudioVisualWaveform::overwrite_sums(const AudioVisualWaveform &sums,
const Rational &dest,
const Rational &offset,
const Rational &length)
{
ValidateVirtualStart(dest);
validate_virtual_start(dest);
for (auto it = mipmapped_data_.begin(); it != mipmapped_data_.end(); it++) {
rational rate = it->first;
Rational rate = it->first;
Sample &our_arr = it->second;
const Sample &their_arr = sums.mipmapped_data_.at(rate);
double rate_dbl = rate.toDouble();
double rate_dbl = rate.to_double();
// Get our destination sample
size_t our_start_index =
time_to_samples(dest - virtual_start_, rate_dbl);
// Get our source sample, indexing with the SOURCE's channel count
size_t their_start_index = std::floor(offset.toDouble() * rate_dbl) *
size_t their_start_index = std::floor(offset.to_double() * rate_dbl) *
sums.channel_count();
if (their_start_index >= their_arr.size()) {
continue;
@@ -201,17 +201,17 @@ void AudioVisualWaveform::OverwriteSums(const AudioVisualWaveform &sums,
length));
}
void AudioVisualWaveform::OverwriteSilence(const rational &start,
const rational &length)
void AudioVisualWaveform::overwrite_silence(const Rational &start,
const Rational &length)
{
ValidateVirtualStart(start);
validate_virtual_start(start);
for (auto it = mipmapped_data_.begin(); it != mipmapped_data_.end(); it++) {
rational rate = it->first;
Rational rate = it->first;
Sample &our_arr = it->second;
double rate_dbl = rate.toDouble();
double rate_dbl = rate.to_double();
// Get our destination sample
size_t our_start_index =
@@ -231,7 +231,7 @@ void AudioVisualWaveform::OverwriteSilence(const rational &start,
length_ = qMax(length_, start + length);
}
void AudioVisualWaveform::TrimIn(rational length)
void AudioVisualWaveform::trim_in(Rational length)
{
if (length == 0) {
return;
@@ -245,8 +245,8 @@ void AudioVisualWaveform::TrimIn(rational length)
}
for (auto it = mipmapped_data_.begin(); it != mipmapped_data_.end(); it++) {
rational rate = it->first;
double rate_dbl = rate.toDouble();
Rational rate = it->first;
double rate_dbl = rate.to_double();
Sample &data = it->second;
size_t chop_length = time_to_samples(length, rate_dbl);
@@ -262,40 +262,40 @@ void AudioVisualWaveform::TrimIn(rational length)
}
if (!negative) {
length_ = qMax(rational(0), length_ - length);
length_ = qMax(Rational(0), length_ - length);
}
// Prepending grows the data before the existing start, so the absolute
// end (which length_ tracks) is unchanged
}
AudioVisualWaveform AudioVisualWaveform::Mid(const rational &offset) const
AudioVisualWaveform AudioVisualWaveform::mid(const Rational &offset) const
{
AudioVisualWaveform mid = *this;
mid.TrimIn(offset - virtual_start_);
mid.trim_in(offset - virtual_start_);
return mid;
}
AudioVisualWaveform AudioVisualWaveform::Mid(const rational &offset,
const rational &length) const
AudioVisualWaveform AudioVisualWaveform::mid(const Rational &offset,
const Rational &length) const
{
AudioVisualWaveform mid = *this;
mid.TrimRange(offset - virtual_start_, length);
mid.trim_range(offset - virtual_start_, length);
return mid;
}
void AudioVisualWaveform::Resize(const rational &length)
void AudioVisualWaveform::resize(const Rational &length)
{
if (length_ == length) {
return;
}
for (auto it = mipmapped_data_.begin(); it != mipmapped_data_.end(); it++) {
rational rate = it->first;
double rate_dbl = rate.toDouble();
Rational rate = it->first;
double rate_dbl = rate.to_double();
Sample &data = it->second;
size_t chop_length = time_to_samples(length, rate_dbl);
@@ -306,20 +306,20 @@ void AudioVisualWaveform::Resize(const rational &length)
length_ = length;
}
void AudioVisualWaveform::TrimRange(const rational &in, const rational &length)
void AudioVisualWaveform::trim_range(const Rational &in, const Rational &length)
{
TrimIn(in);
Resize(length);
trim_in(in);
resize(length);
}
AudioVisualWaveform::Sample
AudioVisualWaveform::GetSummaryFromTime(const rational &start,
const rational &length) const
AudioVisualWaveform::get_summary_from_time(const Rational &start,
const Rational &length) const
{
// Find mipmap that requires
auto using_mipmap = GetMipmapForScale(length.flipped().toDouble());
auto using_mipmap = get_mipmap_for_scale(length.flipped().to_double());
double rate_dbl = using_mipmap->first.toDouble();
double rate_dbl = using_mipmap->first.to_double();
size_t start_sample = time_to_samples(start - virtual_start_, rate_dbl);
size_t sample_length = time_to_samples(length, rate_dbl);
@@ -333,7 +333,7 @@ AudioVisualWaveform::GetSummaryFromTime(const rational &start,
sample_length = qMin(sample_length, size_t(available));
if (sample_length > 0) {
return ReSumSamples(&mipmap_data.data()[start_sample],
return re_sum_samples(&mipmap_data.data()[start_sample],
sample_length, channels_);
}
}
@@ -342,7 +342,7 @@ AudioVisualWaveform::GetSummaryFromTime(const rational &start,
return AudioVisualWaveform::Sample(channel_count(), { 0, 0 });
}
void ExpandMinMaxChannel(const float *a, size_t length, float &min_val,
void expand_min_max_channel(const float *a, size_t length, float &min_val,
float &max_val)
{
#if defined(Q_PROCESSOR_X86) || defined(Q_PROCESSOR_ARM)
@@ -387,7 +387,7 @@ void ExpandMinMaxChannel(const float *a, size_t length, float &min_val,
}
AudioVisualWaveform::Sample
AudioVisualWaveform::SumSamples(const SampleBuffer &samples, size_t start_index,
AudioVisualWaveform::sum_samples(const SampleBuffer &samples, size_t start_index,
size_t length)
{
int channels = samples.audio_params().channel_count();
@@ -395,7 +395,7 @@ AudioVisualWaveform::SumSamples(const SampleBuffer &samples, size_t start_index,
for (int channel = 0; channel < samples.audio_params().channel_count();
channel++) {
ExpandMinMaxChannel(samples.data(channel) + start_index, length,
expand_min_max_channel(samples.data(channel) + start_index, length,
summed_samples[channel].min,
summed_samples[channel].max);
}
@@ -409,7 +409,7 @@ AudioVisualWaveform::SumSamples(const SampleBuffer &samples, size_t start_index,
}
AudioVisualWaveform::Sample
AudioVisualWaveform::ReSumSamples(const SamplePerChannel *samples,
AudioVisualWaveform::re_sum_samples(const SamplePerChannel *samples,
size_t nb_samples, int nb_channels)
{
AudioVisualWaveform::Sample summed_samples(nb_channels);
@@ -437,7 +437,7 @@ template <typename T> inline int round_away_from_zero(T t)
return (t < 0) ? std::floor(t) : std::ceil(t);
}
void AudioVisualWaveform::DrawSample(QPainter *painter, const Sample &sample,
void AudioVisualWaveform::draw_sample(QPainter *painter, const Sample &sample,
int x, int y, int height, bool rectified)
{
if (sample.empty()) {
@@ -475,19 +475,19 @@ void AudioVisualWaveform::DrawSample(QPainter *painter, const Sample &sample,
}
}
void AudioVisualWaveform::DrawWaveform(QPainter *painter, const QRect &rect,
void AudioVisualWaveform::draw_waveform(QPainter *painter, const QRect &rect,
const double &scale,
const AudioVisualWaveform &samples,
const rational &start_time)
const Rational &start_time)
{
if (samples.mipmapped_data_.empty()) {
return;
}
auto using_mipmap = samples.GetMipmapForScale(scale);
auto using_mipmap = samples.get_mipmap_for_scale(scale);
rational rate = using_mipmap->first;
double rate_dbl = rate.toDouble();
Rational rate = using_mipmap->first;
double rate_dbl = rate.to_double();
const Sample &arr = using_mipmap->second;
size_t start_sample_index =
@@ -509,7 +509,7 @@ void AudioVisualWaveform::DrawWaveform(QPainter *painter, const QRect &rect,
size_t start = qMax(rect.x(), -top_left.x());
size_t end = qMin(rect.right(), -top_left.x() + viewport.width());
bool rectified = OLIVE_CONFIG("RectifiedWaveforms").toBool();
bool rectified = OAK_CONFIG("RectifiedWaveforms").toBool();
for (size_t i = start; i < end; i++) {
sample_index = next_sample_index;
@@ -526,7 +526,7 @@ void AudioVisualWaveform::DrawWaveform(QPainter *painter, const QRect &rect,
samples.channel_count()));
if (summary_index != sample_index) {
summary = AudioVisualWaveform::ReSumSamples(
summary = AudioVisualWaveform::re_sum_samples(
&arr.at(sample_index),
qMax(size_t(samples.channel_count()),
next_sample_index - sample_index),
@@ -534,14 +534,14 @@ void AudioVisualWaveform::DrawWaveform(QPainter *painter, const QRect &rect,
summary_index = sample_index;
}
DrawSample(painter, summary, i, rect.y(), rect.height(), rectified);
draw_sample(painter, summary, i, rect.y(), rect.height(), rectified);
}
}
size_t AudioVisualWaveform::time_to_samples(const rational &time,
size_t AudioVisualWaveform::time_to_samples(const Rational &time,
double sample_rate) const
{
return time_to_samples(time.toDouble(), sample_rate);
return time_to_samples(time.to_double(), sample_rate);
}
size_t AudioVisualWaveform::time_to_samples(const double &time,
@@ -550,13 +550,13 @@ size_t AudioVisualWaveform::time_to_samples(const double &time,
return std::floor(time * sample_rate) * channels_;
}
std::map<rational, AudioVisualWaveform::Sample>::const_iterator
AudioVisualWaveform::GetMipmapForScale(double scale) const
std::map<Rational, AudioVisualWaveform::Sample>::const_iterator
AudioVisualWaveform::get_mipmap_for_scale(double scale) const
{
// Find largest mipmap for this scale (or the largest if we don't find one sufficient)
for (auto it = mipmapped_data_.cbegin(); it != mipmapped_data_.cend();
it++) {
if (it->first.toDouble() >= scale) {
if (it->first.to_double() >= scale) {
return it;
}
}
+35 -35
View File
@@ -19,8 +19,8 @@
***/
#ifndef SUMSAMPLES_H
#define SUMSAMPLES_H
#ifndef OAK_SUMSAMPLES_H
#define OAK_SUMSAMPLES_H
#include <olive/core/core.h>
#include <QPainter>
@@ -58,7 +58,7 @@ public:
channels_ = channels;
}
const rational &length() const
const Rational &length() const
{
return length_;
}
@@ -68,8 +68,8 @@ public:
*
* Starting at `start`, writes samples over anything in the buffer, expanding it if necessary.
*/
void OverwriteSamples(const SampleBuffer &samples, int sample_rate,
const rational &start = 0);
void overwrite_samples(const SampleBuffer &samples, int sample_rate,
const Rational &start = 0);
/**
* @brief Replaces sums at a certain range in this visual waveform
@@ -90,74 +90,74 @@ public:
*
* Maximum length of `sums` to overwrite with.
*/
void OverwriteSums(const AudioVisualWaveform &sums, const rational &dest,
const rational &offset = 0, const rational &length = 0);
void overwrite_sums(const AudioVisualWaveform &sums, const Rational &dest,
const Rational &offset = 0, const Rational &length = 0);
void OverwriteSilence(const rational &start, const rational &length);
void overwrite_silence(const Rational &start, const Rational &length);
void TrimIn(rational length);
void trim_in(Rational length);
AudioVisualWaveform Mid(const rational &offset) const;
AudioVisualWaveform Mid(const rational &offset,
const rational &length) const;
AudioVisualWaveform mid(const Rational &offset) const;
AudioVisualWaveform mid(const Rational &offset,
const Rational &length) const;
void Resize(const rational &length);
void resize(const Rational &length);
void TrimRange(const rational &in, const rational &length);
void trim_range(const Rational &in, const Rational &length);
Sample GetSummaryFromTime(const rational &start,
const rational &length) const;
Sample get_summary_from_time(const Rational &start,
const Rational &length) const;
static Sample SumSamples(const SampleBuffer &samples, size_t start_index,
static Sample sum_samples(const SampleBuffer &samples, size_t start_index,
size_t length);
static Sample ReSumSamples(const SamplePerChannel *samples,
static Sample re_sum_samples(const SamplePerChannel *samples,
size_t nb_samples, int nb_channels);
static void DrawSample(QPainter *painter, const Sample &sample, int x,
static void draw_sample(QPainter *painter, const Sample &sample, int x,
int y, int height, bool rectified);
static void DrawWaveform(QPainter *painter, const QRect &rect,
static void draw_waveform(QPainter *painter, const QRect &rect,
const double &scale,
const AudioVisualWaveform &samples,
const rational &start_time);
const Rational &start_time);
// Must be a power of 2
static const rational kMinimumSampleRate;
static const rational kMaximumSampleRate;
static const Rational k_minimum_sample_rate;
static const Rational k_maximum_sample_rate;
private:
void OverwriteSamplesFromBuffer(const SampleBuffer &samples,
int sample_rate, const rational &start,
void overwrite_samples_from_buffer(const SampleBuffer &samples,
int sample_rate, const Rational &start,
double target_rate, Sample &data,
size_t &start_index,
size_t &samples_length);
void OverwriteSamplesFromMipmap(const Sample &input,
void overwrite_samples_from_mipmap(const Sample &input,
double input_sample_rate,
size_t &input_start, size_t &input_length,
const rational &start, double output_rate,
const Rational &start, double output_rate,
Sample &output_data);
size_t time_to_samples(const rational &time, double sample_rate) const;
size_t time_to_samples(const Rational &time, double sample_rate) const;
size_t time_to_samples(const double &time, double sample_rate) const;
std::map<rational, Sample>::const_iterator
GetMipmapForScale(double scale) const;
std::map<Rational, Sample>::const_iterator
get_mipmap_for_scale(double scale) const;
void ValidateVirtualStart(const rational &new_start);
void validate_virtual_start(const Rational &new_start);
rational virtual_start_;
Rational virtual_start_;
int channels_;
std::map<rational, Sample> mipmapped_data_;
std::map<Rational, Sample> mipmapped_data_;
rational length_;
Rational length_;
};
}
Q_DECLARE_METATYPE(olive::AudioVisualWaveform)
#endif // SUMSAMPLES_H
#endif // OAK_SUMSAMPLES_H
+10 -10
View File
@@ -27,7 +27,7 @@ namespace olive
{
QVector<double>
AudioWaveformSync::ExtractRmsEnvelope(const core::SampleBuffer &samples,
AudioWaveformSync::extract_rms_envelope(const core::SampleBuffer &samples,
size_t window_samples)
{
QVector<double> envelope;
@@ -64,7 +64,7 @@ AudioWaveformSync::ExtractRmsEnvelope(const core::SampleBuffer &samples,
return envelope;
}
AudioWaveformSync::OffsetResult AudioWaveformSync::EstimateOffset(
AudioWaveformSync::OffsetResult AudioWaveformSync::estimate_offset(
const core::SampleBuffer &reference, const core::SampleBuffer &candidate,
size_t window_samples, int64_t max_offset_samples)
{
@@ -73,26 +73,26 @@ AudioWaveformSync::OffsetResult AudioWaveformSync::EstimateOffset(
}
const QVector<double> reference_envelope =
ExtractRmsEnvelope(reference, window_samples);
extract_rms_envelope(reference, window_samples);
const QVector<double> candidate_envelope =
ExtractRmsEnvelope(candidate, window_samples);
extract_rms_envelope(candidate, window_samples);
const int64_t max_offset_windows =
max_offset_samples / static_cast<int64_t>(window_samples);
return EstimateEnvelopeOffset(reference_envelope, candidate_envelope,
return estimate_envelope_offset(reference_envelope, candidate_envelope,
window_samples, max_offset_windows);
}
AudioWaveformSync::OffsetResult AudioWaveformSync::EstimateEnvelopeOffset(
AudioWaveformSync::OffsetResult AudioWaveformSync::estimate_envelope_offset(
const QVector<double> &reference, const QVector<double> &candidate,
size_t window_samples, int64_t max_offset_windows)
{
return EstimateEnvelopeOffset(reference, candidate, QVector<bool>(),
return estimate_envelope_offset(reference, candidate, QVector<bool>(),
QVector<bool>(), window_samples,
max_offset_windows);
}
AudioWaveformSync::OffsetResult AudioWaveformSync::EstimateEnvelopeOffset(
AudioWaveformSync::OffsetResult AudioWaveformSync::estimate_envelope_offset(
const QVector<double> &reference, const QVector<double> &candidate,
const QVector<bool> &reference_valid, const QVector<bool> &candidate_valid,
size_t window_samples, int64_t max_offset_windows)
@@ -185,7 +185,7 @@ AudioWaveformSync::OffsetResult AudioWaveformSync::EstimateEnvelopeOffset(
return result;
}
AudioWaveformSync::StretchOffsetResult AudioWaveformSync::EstimateStretchAndOffset(
AudioWaveformSync::StretchOffsetResult AudioWaveformSync::estimate_stretch_and_offset(
const QVector<double> &reference, const QVector<double> &candidate,
const QVector<bool> &reference_valid, const QVector<bool> &candidate_valid,
size_t window_samples, int64_t max_offset_windows, double min_rate,
@@ -226,7 +226,7 @@ AudioWaveformSync::StretchOffsetResult AudioWaveformSync::EstimateStretchAndOffs
(candidate_valid.at(lower) && candidate_valid.at(upper)));
}
const OffsetResult offset = EstimateEnvelopeOffset(
const OffsetResult offset = estimate_envelope_offset(
reference, resampled, reference_valid, resampled_valid,
window_samples, max_offset_windows);
+8 -8
View File
@@ -18,8 +18,8 @@
***/
#ifndef AUDIOWAVEFORMSYNC_H
#define AUDIOWAVEFORMSYNC_H
#ifndef OAK_AUDIOWAVEFORMSYNC_H
#define OAK_AUDIOWAVEFORMSYNC_H
#include <cstdint>
@@ -48,15 +48,15 @@ public:
bool valid = false;
};
static QVector<double> ExtractRmsEnvelope(const core::SampleBuffer &samples,
static QVector<double> extract_rms_envelope(const core::SampleBuffer &samples,
size_t window_samples);
static OffsetResult EstimateOffset(const core::SampleBuffer &reference,
static OffsetResult estimate_offset(const core::SampleBuffer &reference,
const core::SampleBuffer &candidate,
size_t window_samples,
int64_t max_offset_samples);
static OffsetResult EstimateEnvelopeOffset(const QVector<double> &reference,
static OffsetResult estimate_envelope_offset(const QVector<double> &reference,
const QVector<double> &candidate,
size_t window_samples,
int64_t max_offset_windows);
@@ -71,7 +71,7 @@ public:
* waveform cache have not been generated yet. Empty masks are treated as
* "all windows valid".
*/
static OffsetResult EstimateEnvelopeOffset(const QVector<double> &reference,
static OffsetResult estimate_envelope_offset(const QVector<double> &reference,
const QVector<double> &candidate,
const QVector<bool> &reference_valid,
const QVector<bool> &candidate_valid,
@@ -89,7 +89,7 @@ public:
* callers should bound max_offset_windows to a sensible range.
*/
static StretchOffsetResult
EstimateStretchAndOffset(const QVector<double> &reference,
estimate_stretch_and_offset(const QVector<double> &reference,
const QVector<double> &candidate,
const QVector<bool> &reference_valid,
const QVector<bool> &candidate_valid, size_t window_samples,
@@ -99,4 +99,4 @@ public:
}
#endif // AUDIOWAVEFORMSYNC_H
#endif // OAK_AUDIOWAVEFORMSYNC_H