group2 0.1.0
CSE 125 Group 2
Loading...
Searching...
No Matches
VoiceProtocol.hpp
Go to the documentation of this file.
1
3
4#pragma once
5
7
8#include <cstdint>
9#include <optional>
10#include <span>
11#include <vector>
12
13namespace net::voice
14{
15
16inline constexpr int k_sampleRate = 48000;
17inline constexpr int k_channels = 1;
18inline constexpr std::uint8_t k_frameMs = 20;
19inline constexpr std::uint16_t k_maxOpusBytes = 512;
20
22{
23 std::uint16_t sequence = 0;
24 std::uint8_t frameMs = k_frameMs;
25 std::vector<std::uint8_t> opus;
26};
27
29{
30 std::uint16_t sequence = 0;
31 std::uint8_t frameMs = k_frameMs;
32 std::span<const std::uint8_t> opus;
33};
34
36{
38 std::uint16_t sequence = 0;
39 std::uint8_t frameMs = k_frameMs;
40 std::vector<std::uint8_t> opus;
41};
42
43[[nodiscard]] std::vector<std::uint8_t>
44encodeClientFrame(std::uint16_t sequence, std::uint8_t frameMs, std::span<const std::uint8_t> opus);
45[[nodiscard]] std::vector<std::uint8_t>
46encodeServerFrame(ClientId speaker, std::uint16_t sequence, std::uint8_t frameMs, std::span<const std::uint8_t> opus);
47[[nodiscard]] std::optional<ClientVoiceFrameView> decodeClientFrameView(std::span<const std::uint8_t> payload);
48[[nodiscard]] std::optional<ClientVoiceFrame> decodeClientFrame(std::span<const std::uint8_t> payload);
49[[nodiscard]] std::optional<ServerVoiceFrame> decodeServerFrame(std::span<const std::uint8_t> payload);
50
51} // namespace net::voice
Network client identifier component for multiplayer entities.
Definition VoiceProtocol.cpp:11
std::optional< ServerVoiceFrame > decodeServerFrame(std::span< const std::uint8_t > payload)
Definition VoiceProtocol.cpp:122
std::vector< std::uint8_t > encodeClientFrame(std::uint16_t sequence, std::uint8_t frameMs, std::span< const std::uint8_t > opus)
Definition VoiceProtocol.cpp:62
constexpr std::uint8_t k_frameMs
Definition VoiceProtocol.hpp:18
std::vector< std::uint8_t > encodeServerFrame(ClientId speaker, std::uint16_t sequence, std::uint8_t frameMs, std::span< const std::uint8_t > opus)
Definition VoiceProtocol.cpp:77
constexpr std::uint16_t k_maxOpusBytes
Definition VoiceProtocol.hpp:19
std::optional< ClientVoiceFrameView > decodeClientFrameView(std::span< const std::uint8_t > payload)
Definition VoiceProtocol.cpp:105
constexpr int k_sampleRate
Definition VoiceProtocol.hpp:16
std::optional< ClientVoiceFrame > decodeClientFrame(std::span< const std::uint8_t > payload)
Definition VoiceProtocol.cpp:93
constexpr int k_channels
Definition VoiceProtocol.hpp:17
Associates an entity with a connected network client.
Definition ClientId.hpp:10
Definition VoiceProtocol.hpp:29
std::uint16_t sequence
Definition VoiceProtocol.hpp:30
std::uint8_t frameMs
Definition VoiceProtocol.hpp:31
std::span< const std::uint8_t > opus
Definition VoiceProtocol.hpp:32
Definition VoiceProtocol.hpp:22
std::uint8_t frameMs
Definition VoiceProtocol.hpp:24
std::uint16_t sequence
Definition VoiceProtocol.hpp:23
std::vector< std::uint8_t > opus
Definition VoiceProtocol.hpp:25
Definition VoiceProtocol.hpp:36
std::uint8_t frameMs
Definition VoiceProtocol.hpp:39
std::vector< std::uint8_t > opus
Definition VoiceProtocol.hpp:40
std::uint16_t sequence
Definition VoiceProtocol.hpp:38
ClientId speaker
Definition VoiceProtocol.hpp:37