UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
PcmAudioInfoHybrid.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "AudioDecompress.h"
7
9{
10public:
12 virtual ~FPcmAudioInfoHybrid() override = default;
13
15 {
16 public:
18
24
25 virtual ~FHybridImpl() = default;
26 virtual void PrepareToLoop() {}
27 virtual bool ParseWaveHeader(const FWaveModInfo& WaveInfo, const WaveFormatHeader* FormatHeader, const uint32 HeaderSize) = 0;
28 virtual int32 GetFrameSize() = 0;
29 virtual uint32 GetMaxFrameSizeSamples() const = 0;
30 virtual void SeekToFrame(const uint32 InSeekFrame) = 0;
31 virtual void SeekToTime(const float InSeekTime);
32 virtual FDecodeResult Decode(const uint8* CompressedData, const int32 CompressedDataSize, uint8* OutPCMData, const int32 OutputPCMDataSize) = 0;
33
36
37 protected:
42 uint32 TotalSamplesPerChannel = 0; // Number of samples per channel, used to detect when an audio waveform has ended
43 };
44
45protected:
46
48 virtual bool ParseHeader(const uint8* InSrcBufferData, uint32 InSrcBufferDataSize, FSoundQualityInfo* QualityInfo) override;
49
51 virtual bool CreateDecoder() override { return true; }
52
53 virtual void PrepareToLoop() override
54 {
55 Impl->PrepareToLoop();
56 }
57 virtual int32 GetFrameSize() override
58 {
59 return Impl->GetFrameSize();
60 }
61 virtual uint32 GetMaxFrameSizeSamples() const override
62 {
63 return Impl->GetMaxFrameSizeSamples();
64 }
65 virtual void SeekToFrame(const uint32 InSeekFrame) override
66 {
67 return Impl->SeekToFrame(InSeekFrame);
68 }
69 virtual void SeekToTime(const float InSeekTime) override
70 {
71 return Impl->SeekToTime(InSeekTime);
72 }
73 virtual FDecodeResult Decode(const uint8* CompressedData, const int32 CompressedDataSize, uint8* OutPCMData, const int32 OutputPCMDataSize) override
74 {
75 return Impl->Decode(CompressedData, CompressedDataSize, OutPCMData, OutputPCMDataSize);
76 }
77
78public:
79 bool IsStreaming() const
80 {
82 }
84 void SetErrorFlag() const { bHasError = true; }
85
89
90private:
92 bool AbsPositionToChunkIndexAndOffset(const uint64 AbsPosition, uint32& ChunkIndex, uint32& ChunkOffset) const;
93
94 void SetSeekBlockIndex(const uint32 InStreamSeekBlockIndex)
95 {
97 && InStreamSeekBlockIndex < GetStreamingSoundWave()->GetNumChunks());
99 };
100 void SetSeekBlockOffset(const int32 InStreamSeekBlockOffset)
101 {
103 };
104 void SetCurrentSampleCount(const uint32 InSampleCount) { CurrentSampleCount = InSampleCount; }
105 void SetSrcBufferOffset(const uint32 InSrcBufferOffset)
106 {
109 }
110
111 friend class FHybridImpl;
113};
#define ensure( InExpression)
Definition AssertionMacros.h:464
#define UE_NONCOPYABLE(TypeName)
Definition CoreMiscDefines.h:457
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition PcmAudioInfoHybrid.h:15
uint32 SampleRate
Definition PcmAudioInfoHybrid.h:41
uint32 TotalSamplesPerChannel
Definition PcmAudioInfoHybrid.h:42
virtual FDecodeResult Decode(const uint8 *CompressedData, const int32 CompressedDataSize, uint8 *OutPCMData, const int32 OutputPCMDataSize)=0
virtual void SeekToFrame(const uint32 InSeekFrame)=0
virtual bool ParseWaveHeader(const FWaveModInfo &WaveInfo, const WaveFormatHeader *FormatHeader, const uint32 HeaderSize)=0
virtual void PrepareToLoop()
Definition PcmAudioInfoHybrid.h:26
uint32 GetTotalDecodedSize() const
Definition PcmAudioInfoHybrid.h:34
uint32 GetTotalSamplesPerChannel() const
Definition PcmAudioInfoHybrid.h:35
virtual void SeekToTime(const float InSeekTime)
Definition PcmAudioInfoHybrid.cpp:474
int32 NumChannels
Definition PcmAudioInfoHybrid.h:39
virtual uint32 GetMaxFrameSizeSamples() const =0
FPcmAudioInfoHybrid * Owner
Definition PcmAudioInfoHybrid.h:38
uint32 TotalDecodedSize
Definition PcmAudioInfoHybrid.h:40
Definition PcmAudioInfoHybrid.h:9
void SeekToAbs(const uint64 InAbsPosition, const uint64 InSeekFrame)
Definition PcmAudioInfoHybrid.cpp:456
bool IsStreaming() const
Definition PcmAudioInfoHybrid.h:79
uint32 GetSrcBufferOffset() const
Definition PcmAudioInfoHybrid.h:87
virtual FDecodeResult Decode(const uint8 *CompressedData, const int32 CompressedDataSize, uint8 *OutPCMData, const int32 OutputPCMDataSize) override
Definition PcmAudioInfoHybrid.h:73
uint32 GetSrcBufferDataSize() const
Definition PcmAudioInfoHybrid.h:88
FPcmAudioInfoHybrid()=default
virtual void SeekToFrame(const uint32 InSeekFrame) override
Definition PcmAudioInfoHybrid.h:65
virtual ~FPcmAudioInfoHybrid() override=default
virtual void PrepareToLoop() override
Definition PcmAudioInfoHybrid.h:53
void SetErrorFlag() const
Definition PcmAudioInfoHybrid.h:84
virtual int32 GetFrameSize() override
Definition PcmAudioInfoHybrid.h:57
virtual bool CreateDecoder() override
Definition PcmAudioInfoHybrid.h:51
virtual uint32 GetMaxFrameSizeSamples() const override
Definition PcmAudioInfoHybrid.h:61
uint32 GetAudioDataOffset() const
Definition PcmAudioInfoHybrid.h:86
virtual bool ParseHeader(const uint8 *InSrcBufferData, uint32 InSrcBufferDataSize, FSoundQualityInfo *QualityInfo) override
Definition PcmAudioInfoHybrid.cpp:364
virtual void SeekToTime(const float InSeekTime) override
Definition PcmAudioInfoHybrid.h:69
ENGINE_API bool IsStreaming() const
Definition SoundWave.cpp:5427
Definition Audio.h:938
virtual const FSoundWaveProxyPtr & GetStreamingSoundWave() const
Definition AudioDecompress.h:168
bool bHasError
Definition AudioDecompress.h:171
Definition AudioDecompress.h:211
uint32 SrcBufferOffset
Definition AudioDecompress.h:318
int32 StreamSeekBlockOffset
Definition AudioDecompress.h:361
std::atomic< int32 > StreamSeekBlockIndex
Definition AudioDecompress.h:359
uint32 CurrentSampleCount
Definition AudioDecompress.h:326
uint32 AudioDataOffset
Definition AudioDecompress.h:320
uint32 SrcBufferDataSize
Definition AudioDecompress.h:316
UE_FORCEINLINE_HINT const bool IsValid() const
Definition SharedPointer.h:1085
Definition UniquePtr.h:107
Definition ExpressionParserTypes.h:21
Definition AudioDecompress.h:190
Definition ADPCMAudioInfo.h:27