Documentation
¶
Overview ¶
Package voice contains the types used by the SRS audio protocol to send and receive audio data over the network.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Frequency ¶
type Frequency struct {
// Frequency is the transmission frequency in Hz.
// Example: 249.500MHz is encoded as 249500000.0
//
// Length: 8 bytes
Frequency float64
// Modulation is the transmission modulation mode.
//
// Length: 1 byte
Modulation byte
// Encryption is the transmission encryption mode.
//
// Length: 1 byte
Encryption byte
}
Frequency describes an audio transmission channel. This struct is only for use in Packet. For client information, use types.Radio instead. Length: 10 bytes.
type Packet ¶ added in v0.13.2
type Packet struct {
// PacketLength is the total packet length in bytes.
//
// Bytes: 0:2
//
// Length: 2 bytes
PacketLength uint16
// AudioSegmentLength is the length of the Audio segment struct.
//
// Bytes: 2:4
//
// Length: 2 bytes
AudioSegmentLength uint16
// FrequenciesSegmentLength is the length of the Frequencies segment.
//
// Bytes: 4:6
//
// Length: 2 bytes
FrequenciesSegmentLength uint16
/* Audio segment */
// AudioBytes is the AudioPart1 byte array. This is the audio data as an Opus bitstream, encoded as 16KHz Mono in 40ms frames.
// The upstream name is directly mirrored from the IDirectSoundBuffer::Lock function in the legacy DirectSound API - Part2 is not used by SRS.
//
// Bytes: 6:6+AudioSegmentLength
//
// Length: AudioSegmentLength
AudioBytes []byte
// Frequencies is an array of information for each frequency, modulation and encryption combination the audio is transmitted on.
//
// Bytes: 6+AudioSegmentLength:6+AudioSegmentLength+FrequenciesSegmentLength
//
// Length: FrequenciesSegmentLength
Frequencies []Frequency
// UnitID is the ID of the in-game unit that originated the packet.
//
// Bytes: PacketLength-58:PacketLength-53
//
// Length: 4 bytes
UnitID uint32
// PacketID is the ID of this packet. Packets from the same transmitter increment by 1 for each transmission.
//
// Bytes: PacketLength-53:PacketLength-45
//
// Length: 8 bytes
PacketID uint64
// Hops is the number of retransmissions. This value is checked in SRS to limit retransmisisons.
//
// Bytes: PacketLength-45:PacketLength-44
//
// Length: 1 byte
Hops byte
// RelayGUID is the GUID of the last transmitter. This may differ from OriginGUID if this is a retransmission.
//
// Bytes: PacketLength-44:PacketLength-22
//
// Length: 22 bytes
RelayGUID []byte
// OriginGUID is the GUID of the original transmitter.
//
// Bytes: PacketLength-22:PacketLength
//
// Length: 22 bytes
OriginGUID []byte
}
Packet is a network packet containing: A header segment with packet and segment length headers An audio segment containing Opus audio A frequency segment containing each frequency the audio is transmitted on A fixed segment containing metadata
See SRS source code for packet encoding: https://github.com/ciribob/DCS-SimpleRadioStandalone/blob/master/DCS-SR-Common/Network/UDPVoicePacket.cs
func NewPacket ¶ added in v0.13.4
func NewPacket(audioBytes []byte, frequencies []Frequency, unitID uint32, packetID uint64, hops byte, relay []byte, origin []byte) Packet
NewPacket creates a new Packet.