// Copyright 2022 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

library fuchsia.audio.mixer;

const MAX_GAIN_STAGES_PER_EDGE uint32 = 32;

/// Ways that a Mixer node can sample from its source stream to produce a
/// destination stream.
type Sampler = flexible union {
    1: point_sampler PointSampler;
    2: sinc_sampler SincSampler;
};

/// Use the "sample-and-hold" paradigm. This sampler can be used only if the
/// source has the same sample rate as the Mixer's output stream.
type PointSampler = table {};

/// Use a windowed sinc sampler.
type SincSampler = table {
    /// Number of taps to include on each side of the filter, not counting the
    /// center point. When upsampling, the filter reads from 1 + 2*taps_per_side
    /// source frames to produce each destination frame. When downsampling, this
    /// number is scaled by the downsampling ratio.
    ///
    /// Required.
    1: taps_per_side uint32;

    /// Optionally, apply a low-pass filter.
    2: low_pass_frequency uint32;

    /// Optionally, apply a high-pass filter.
    3: high_pass_frequency uint32;
};
