UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
VorbisAudioInfo.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4 VorbisAudioInfo.h: Unreal audio vorbis decompression interface object.
5=============================================================================*/
6
7#pragma once
8
9#include "CoreMinimal.h"
10#include "HAL/ThreadSafeBool.h"
11#include "AudioDecompress.h"
12
16#ifndef WITH_OGGVORBIS
17 #define WITH_OGGVORBIS 0
18#endif
19
23#ifndef WITH_OGGVORBIS_DLL
24 #define WITH_OGGVORBIS_DLL (PLATFORM_WINDOWS)
25#endif
26
27
28namespace VorbisChannelInfo
29{
30 extern VORBISAUDIODECODER_API const int32 Order[8][8];
31}
32
37#if WITH_OGGVORBIS
38
43{
44public:
48 size_t ReadMemory( void *ptr, uint32 size );
49 int SeekMemory( uint32 offset, int whence );
50 int CloseMemory( void );
51 long TellMemory( void );
52
54 size_t ReadStreaming( void *ptr, uint32 size );
55 int CloseStreaming( void );
56
59 bool GetCompressedInfoCommon(void* Callbacks, FSoundQualityInfo* QualityInfo);
60
76 VORBISAUDIODECODER_API virtual bool ReadCompressedData( uint8* InDestination, bool bLooping, uint32 BufferSize ) override;
77 VORBISAUDIODECODER_API virtual void SeekToTime( const float SeekTime ) override;
78 VORBISAUDIODECODER_API virtual void SeekToFrame(const uint32 SeekFrame) override;
82 VORBISAUDIODECODER_API virtual void ExpandFile( uint8* DstBuffer, struct FSoundQualityInfo* QualityInfo ) override;
88 VORBISAUDIODECODER_API virtual void EnableHalfRate( bool HalfRate ) override;
89 virtual uint32 GetSourceBufferSize() const override { return SrcBufferDataSize; }
90
91 virtual bool UsesVorbisChannelOrdering() const override { return true; }
92 virtual int GetStreamBufferSize() const override { return MONO_PCM_BUFFER_SIZE; }
93
94 // Additional overrides for streaming
95 virtual bool SupportsStreaming() const override {return true;}
96 virtual bool StreamCompressedData(uint8* InDestination, bool bLooping, uint32 BufferSize, int32& OutNumBytesStreamed) override;
97 virtual int32 GetCurrentChunkIndex() const override {return CurrentStreamingChunkIndex;}
98 virtual int32 GetCurrentChunkOffset() const override {return BufferOffset % CurrentStreamingChunksSize;}
99 virtual bool HasError() const override;
100 // End of ICompressedAudioInfo Interface
101
102protected:
103 virtual bool StreamCompressedInfoInternal(const FSoundWaveProxyPtr& InWaveProxy, struct FSoundQualityInfo* QualityInfo) override;
104
105 friend class FAudioFormatOgg;
107private:
108 using Super = ICompressedAudioInfo;
109 const uint8* GetLoadedChunk(FSoundWaveProxyPtr InSoundWave, uint32 ChunkIndex, uint32& OutChunkSize);
110
112 const uint8* SrcBufferData;
113 uint32 SrcBufferDataSize;
114 uint32 BufferOffset;
116
117 // In case Ogg Vorbis fails to return any compressed audio for an asset,
118 // we use this counter to exit out of the decoder's while loop early.
120
123
128 bool bHeaderParsed;
129 bool bHasError = false;
131
132 // This handle is used to ensure that a chunk currently being decoded isn't evicted until we are done with it.
133 FAudioChunkHandle CurCompressedChunkHandle;
134};
135#endif
constexpr uint32 MONO_PCM_BUFFER_SIZE
Definition AudioDecompress.h:22
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
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
VORBISAUDIODECODER_API void LoadVorbisLibraries()
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition ContentStreaming.h:110
Definition AudioDecompress.h:31
virtual void SeekToTime(const float SeekTime)=0
virtual bool ReadCompressedData(uint8 *Destination, bool bLooping, uint32 BufferSize)=0
virtual int32 GetCurrentChunkIndex() const
Definition AudioDecompress.h:160
virtual void EnableHalfRate(bool HalfRate)=0
virtual int32 GetCurrentChunkOffset() const
Definition AudioDecompress.h:165
virtual uint32 GetSourceBufferSize() const =0
virtual bool ReadCompressedInfo(const uint8 *InSrcBufferData, uint32 InSrcBufferDataSize, struct FSoundQualityInfo *QualityInfo)=0
ENGINE_API ICompressedAudioInfo()
Definition AudioDecompress.cpp:290
virtual bool SupportsStreaming() const
Definition AudioDecompress.h:111
virtual bool UsesVorbisChannelOrdering() const =0
virtual void SeekToFrame(const uint32 Frame)=0
virtual int GetStreamBufferSize() const =0
virtual ENGINE_API bool HasError() const
Definition AudioDecompress.cpp:296
virtual bool StreamCompressedInfoInternal(const FSoundWaveProxyPtr &InWaveProxy, struct FSoundQualityInfo *QualityInfo)=0
virtual bool StreamCompressedData(uint8 *Destination, bool bLooping, uint32 BufferSize, int32 &OutNumBytesStreamed)
Definition AudioDecompress.h:155
virtual void ExpandFile(uint8 *DstBuffer, struct FSoundQualityInfo *QualityInfo)=0
Definition VorbisAudioInfo.cpp:46
const int32 Order[8][8]
Definition VorbisAudioInfo.cpp:47
Definition VorbisAudioInfo.cpp:63