group2 0.1.0
CSE 125 Group 2
Loading...
Searching...
No Matches
VoiceCapture.hpp
Go to the documentation of this file.
1
3
4#pragma once
5
6#include "VoiceCodec.hpp"
7
8#include <SDL3/SDL_audio.h>
9
10#include <cstdint>
11#include <string>
12#include <string_view>
13#include <vector>
14
16{
17public:
19 {
20 std::uint16_t sequence = 0;
22 std::vector<std::uint8_t> opus;
23 };
24
25 bool init(std::string_view recordingDeviceName = {});
26 void quit();
27 void setRecordingDeviceName(std::string_view name);
28 void setPushToTalk(bool active);
29 [[nodiscard]] bool ready() const noexcept { return captureStream_ != nullptr && encoder_.ready(); }
30 [[nodiscard]] bool transmitting() const noexcept { return transmitting_; }
31 [[nodiscard]] std::vector<EncodedFrame> poll();
32
33private:
35 static constexpr std::size_t kMaxAccumulatedSamples = static_cast<std::size_t>(kFrameSamples * 8);
36
37 [[nodiscard]] bool framePassesNoiseGate(std::span<const float> frame) const noexcept;
38
39 SDL_AudioStream* captureStream_ = nullptr;
42 std::vector<float> capturePcm_;
43 std::size_t captureReadOffset_ = 0;
44 std::uint16_t nextSequence_ = 0;
45 bool transmitting_ = false;
46};
Thin RAII wrappers around the Opus encoder and decoder used by voice chat.
Definition VoiceCapture.hpp:16
std::string recordingDeviceName_
Definition VoiceCapture.hpp:41
std::vector< EncodedFrame > poll()
Definition VoiceCapture.cpp:100
SDL_AudioStream * captureStream_
Definition VoiceCapture.hpp:39
bool transmitting() const noexcept
Definition VoiceCapture.hpp:30
bool transmitting_
Definition VoiceCapture.hpp:45
void setPushToTalk(bool active)
Definition VoiceCapture.cpp:86
static constexpr std::size_t kMaxAccumulatedSamples
Definition VoiceCapture.hpp:35
std::vector< float > capturePcm_
Definition VoiceCapture.hpp:42
bool init(std::string_view recordingDeviceName={})
Definition VoiceCapture.cpp:37
void quit()
Definition VoiceCapture.cpp:62
bool ready() const noexcept
Definition VoiceCapture.hpp:29
std::uint16_t nextSequence_
Definition VoiceCapture.hpp:44
VoiceEncoder encoder_
Definition VoiceCapture.hpp:40
std::size_t captureReadOffset_
Definition VoiceCapture.hpp:43
bool framePassesNoiseGate(std::span< const float > frame) const noexcept
Definition VoiceCapture.cpp:150
static constexpr int kFrameSamples
Definition VoiceCapture.hpp:34
void setRecordingDeviceName(std::string_view name)
Definition VoiceCapture.cpp:74
Definition VoiceCodec.hpp:17
constexpr std::uint8_t k_frameMs
Definition VoiceProtocol.hpp:18
constexpr int k_sampleRate
Definition VoiceProtocol.hpp:16
Definition VoiceCapture.hpp:19
std::uint8_t frameMs
Definition VoiceCapture.hpp:21
std::vector< std::uint8_t > opus
Definition VoiceCapture.hpp:22
std::uint16_t sequence
Definition VoiceCapture.hpp:20