UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
OpusEncoder.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
7
8#if !PLATFORM_TVOS
9
12
13// Possible frame sizes to use for the encoder.
15{
16 Min, // 2.5 milliseconds
17 Small, // 5 milliseconds
18 MediumLow, // 10 milliseconds
19 MediumHigh, // 20 milliseconds
20 High, // 40 milliseconds
21 Max, // 60 milliseconds
22};
23
24enum class EOpusMode : uint8
25{
26 File, // Use this when encoding a .opus file. Pushes the Opus frames into Ogg packets.
27 AudioStream, // Use this for general music and non-speech streaming applications.
28 VoiceStream // Use this for Voice-specific applications.
29};
30
32{
33public:
36
37 virtual int32 GetCompressedPacketSize() const override;
38
39protected:
40 virtual int64 SamplesRequiredPerEncode() const override;
42 virtual bool EncodeChunk(const TArray<float>& InAudio, TArray<uint8>& OutBytes) override;
43 virtual bool EndFile(TArray<uint8>& OutBytes) override;
44
45private:
47
48 int32 GetNumSamplesForEncode(EOpusFrameSizes InFrameSize) const;
49 int32 GetNumSamplesForPreskip();
50
51 int32 LastValidFrameSize;
52 int32 NumChannels;
53 int32 SampleRate;
54 int32 UncompressedFrameSize;
55
56 // Private state so that we don't have a public dependency on opus libraries.
57 // Uniquely owned by this instance. Only a raw pointer because the destructor is not accessible.
58 FOpusEncoderPrivateState* PrivateOpusState;
59
60 // Private state. Only used if we are generating a .opus file, which are ogg encapsulations of an opus stream.
61 FOggEncapsulator* PrivateOggEncapsulator;
62
63 // Used for .opus files only:
64 uint32 GranulePos;
65 uint32 PacketIndex;
66};
67
68#endif // !PLATFORM_TVOS
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
EOpusFrameSizes
Definition OpusEncoder.h:15
EOpusMode
Definition OpusEncoder.h:25
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition IAudioEncoder.h:16
Definition OpusEncoder.h:32
virtual bool StartFile(const FSoundQualityInfo &InQualityInfo, TArray< uint8 > &OutFileStart) override
virtual bool EndFile(TArray< uint8 > &OutBytes) override
FOpusEncoder(const FSoundQualityInfo &InInfo, int32 AverageBufferCallbackSize, EOpusFrameSizes InFrameSize=EOpusFrameSizes::MediumLow, EOpusMode InMode=EOpusMode::File)
virtual bool EncodeChunk(const TArray< float > &InAudio, TArray< uint8 > &OutBytes) override
virtual int64 SamplesRequiredPerEncode() const override
virtual int32 GetCompressedPacketSize() const override
Definition Array.h:670