// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef MEDIA_AUDIO_AUDIO_SOURCE_PARAMETERS_H_
#define MEDIA_AUDIO_AUDIO_SOURCE_PARAMETERS_H_

#include "base/unguessable_token.h"
#include "media/base/audio_processing.h"
#include "media/base/media_export.h"
#include "third_party/abseil-cpp/absl/types/optional.h"

namespace media {

// The set of parameters used to create an AudioInputDevice.
// If |session_id| is nonzero, it is used by the browser
// to select the correct input device ID. If |session_id| is zero, the default
// input device will be selected. This is the state when default constructed.
struct MEDIA_EXPORT AudioSourceParameters final {
  AudioSourceParameters();
  explicit AudioSourceParameters(const base::UnguessableToken& session_id);
  AudioSourceParameters(const AudioSourceParameters& params);
  ~AudioSourceParameters();

  base::UnguessableToken session_id;
  absl::optional<AudioProcessingSettings> processing;
};

}  // namespace media

#endif  // MEDIA_AUDIO_AUDIO_SOURCE_PARAMETERS_H_
