UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
TMediaSampleQueue< SampleType, SinkType > Class Template Reference

#include <MediaSampleQueue.h>

+ Inheritance diagram for TMediaSampleQueue< SampleType, SinkType >:

Public Member Functions

 TMediaSampleQueue (int32 InMaxSamplesInQueue=-1)
 
virtual ~TMediaSampleQueue ()
 
int32 Num () const
 
uint32 GetNumDroppedSamples (bool bInClearToZero)
 
virtual bool Dequeue (TSharedPtr< SampleType, ESPMode::ThreadSafe > &OutSample) override
 
virtual bool Peek (TSharedPtr< SampleType, ESPMode::ThreadSafe > &OutSample) override
 
virtual void GetSampleTimes (TArray< TRange< FMediaTimeStamp > > &OutSampleTimeRanges) override
 
virtual bool Pop () override
 
bool Discard (const TRange< FMediaTimeStamp > &TimeRange, bool bReverse)
 
EMediaSampleQueueFetchResult FetchBestSampleForTimeRange (const TRange< FMediaTimeStamp > &TimeRange, TSharedPtr< SampleType, ESPMode::ThreadSafe > &OutSample, bool bReverse, bool bConsistentResult)
 
uint32 PurgeOutdatedSamples (const FMediaTimeStamp &ReferenceTime, bool bReversed, FTimespan MaxAge)
 
void PurgeUntilSequenceIndex (int32 InUntilIndex)
 
virtual bool Enqueue (const TSharedRef< SampleType, ESPMode::ThreadSafe > &Sample) override
 
virtual void RequestFlush () override
 
virtual uint32 GetFlushCount () const
 
virtual bool CanAcceptSamples (int32 NumSamples) const override
 
- Public Member Functions inherited from TMediaSampleSink< SampleType >
void ReceiveEvent (EMediaSampleSinkEvent Event, const FMediaSampleSinkEventData &Data)
 
 DECLARE_EVENT_TwoParams (TMediaSampleSink< SampleType >, FOnMediaSampleSinkEvent, EMediaSampleSinkEvent, const FMediaSampleSinkEventData &) FOnMediaSampleSinkEvent &OnMediaSampleSinkEvent()
 
virtual ~TMediaSampleSink ()
 
- Public Member Functions inherited from TMediaSampleSource< SampleType >
virtual ~TMediaSampleSource ()
 

Protected Member Functions

void FindRangeInQueue (const TRange< FMediaTimeStamp > &TimeRange, bool bReverse, int32 &FirstPossibleIndex, int32 &LastPossibleIndex, int32 &NumOldSamplesAtBegin)
 

Protected Attributes

FCriticalSection CriticalSection
 
TArray< TSharedPtr< SampleType, ESPMode::ThreadSafe > > Samples
 
int32 MaxSamplesInQueue
 
uint32 FlushCount = 0
 
uint32 NumDroppedSamples = 0
 

Detailed Description

template<typename SampleType, typename SinkType = TMediaSampleSink<SampleType>>
class TMediaSampleQueue< SampleType, SinkType >

Template for media sample queues.

Constructor & Destructor Documentation

◆ TMediaSampleQueue()

template<typename SampleType , typename SinkType = TMediaSampleSink<SampleType>>
TMediaSampleQueue< SampleType, SinkType >::TMediaSampleQueue ( int32  InMaxSamplesInQueue = -1)
inline

◆ ~TMediaSampleQueue()

template<typename SampleType , typename SinkType = TMediaSampleSink<SampleType>>
virtual TMediaSampleQueue< SampleType, SinkType >::~TMediaSampleQueue ( )
inlinevirtual

Virtual destructor.

Member Function Documentation

◆ CanAcceptSamples()

template<typename SampleType , typename SinkType = TMediaSampleSink<SampleType>>
virtual bool TMediaSampleQueue< SampleType, SinkType >::CanAcceptSamples ( int32  NumSamples) const
inlineoverridevirtual

Check if sink can accept new samples

Parameters
NumSamplesHow many samples we would like the sink to accept
Returns
True if samples could be accepted, false otherwise
Note
Override in implementation as needed

Reimplemented from TMediaSampleSink< SampleType >.

◆ Dequeue()

template<typename SampleType , typename SinkType = TMediaSampleSink<SampleType>>
virtual bool TMediaSampleQueue< SampleType, SinkType >::Dequeue ( TSharedPtr< SampleType, ESPMode::ThreadSafe > &  OutSample)
inlineoverridevirtual

Remove and return the next sample in the queue.

Parameters
OutSampleWill contain the sample if the queue is not empty.
Returns
true if a sample has been returned, false if the queue was empty.
See also
Peek, Pop

Implements TMediaSampleSource< SampleType >.

◆ Discard()

template<typename SampleType , typename SinkType = TMediaSampleSink<SampleType>>
bool TMediaSampleQueue< SampleType, SinkType >::Discard ( const TRange< FMediaTimeStamp > &  TimeRange,
bool  bReverse 
)
inline

◆ Enqueue()

template<typename SampleType , typename SinkType = TMediaSampleSink<SampleType>>
virtual bool TMediaSampleQueue< SampleType, SinkType >::Enqueue ( const TSharedRef< SampleType, ESPMode::ThreadSafe > &  Sample)
inlineoverridevirtual

Add a sample to the head of the queue.

Parameters
SampleThe sample to add.
Returns
true if the item was added, false otherwise.
See also
Num, RequestFlush

Implements TMediaSampleSink< SampleType >.

◆ FetchBestSampleForTimeRange()

template<typename SampleType , typename SinkType = TMediaSampleSink<SampleType>>
EMediaSampleQueueFetchResult TMediaSampleQueue< SampleType, SinkType >::FetchBestSampleForTimeRange ( const TRange< FMediaTimeStamp > &  TimeRange,
TSharedPtr< SampleType, ESPMode::ThreadSafe > &  OutSample,
bool  bReverse,
bool  bConsistentResult 
)
inline

◆ FindRangeInQueue()

template<typename SampleType , typename SinkType = TMediaSampleSink<SampleType>>
void TMediaSampleQueue< SampleType, SinkType >::FindRangeInQueue ( const TRange< FMediaTimeStamp > &  TimeRange,
bool  bReverse,
int32 FirstPossibleIndex,
int32 LastPossibleIndex,
int32 NumOldSamplesAtBegin 
)
inlineprotected

◆ GetFlushCount()

template<typename SampleType , typename SinkType = TMediaSampleSink<SampleType>>
virtual uint32 TMediaSampleQueue< SampleType, SinkType >::GetFlushCount ( ) const
inlinevirtual

Returns the number of times the queue has been requested to flush already.

Returns
Number of times RequestFlush() was called.

Implements TMediaSampleSink< SampleType >.

◆ GetNumDroppedSamples()

template<typename SampleType , typename SinkType = TMediaSampleSink<SampleType>>
uint32 TMediaSampleQueue< SampleType, SinkType >::GetNumDroppedSamples ( bool  bInClearToZero)
inline

Returns the number of samples that were dropped in any of the member functions. This is only for tracking statistics and may not necessarily be accurate. The count is never implicitly cleared by any member function. To clear it call with bInClearToZero set to true.

Returns
Number of samples that were dropped.

◆ GetSampleTimes()

template<typename SampleType , typename SinkType = TMediaSampleSink<SampleType>>
virtual void TMediaSampleQueue< SampleType, SinkType >::GetSampleTimes ( TArray< TRange< FMediaTimeStamp > > &  OutSampleTimeRanges)
inlineoverridevirtual

Returns the sample start and end times of all samples currently in the queue.

Parameters
OutSampleTimeRangesWill contain the sample time ranges.

Implements TMediaSampleSource< SampleType >.

◆ Num()

template<typename SampleType , typename SinkType = TMediaSampleSink<SampleType>>
int32 TMediaSampleQueue< SampleType, SinkType >::Num ( ) const
inlinevirtual

Get the number of samples in the queue.

Note: The value returned by this function is only eventually consistent. It can be called by both consumer and producer threads, but it should not be used to query the actual state of the queue. Always use Dequeue and Peek instead!

Returns
Number of samples.
See also
Enqueue, Dequeue, Peek

Implements TMediaSampleSink< SampleType >.

◆ Peek()

template<typename SampleType , typename SinkType = TMediaSampleSink<SampleType>>
virtual bool TMediaSampleQueue< SampleType, SinkType >::Peek ( TSharedPtr< SampleType, ESPMode::ThreadSafe > &  OutSample)
inlineoverridevirtual

Peek at the next sample in the queue without removing it.

Parameters
OutSampleWill contain the sample if the queue is not empty.
Returns
true if a sample has been returned, false if the queue was empty.
See also
Dequeue, Pop

Implements TMediaSampleSource< SampleType >.

◆ Pop()

template<typename SampleType , typename SinkType = TMediaSampleSink<SampleType>>
virtual bool TMediaSampleQueue< SampleType, SinkType >::Pop ( )
inlineoverridevirtual

Remove the next sample from the queue.

Returns
true if a sample was removed, false otherwise.
See also
Dequeue, Peek

Implements TMediaSampleSource< SampleType >.

◆ PurgeOutdatedSamples()

template<typename SampleType , typename SinkType = TMediaSampleSink<SampleType>>
uint32 TMediaSampleQueue< SampleType, SinkType >::PurgeOutdatedSamples ( const FMediaTimeStamp ReferenceTime,
bool  bReversed,
FTimespan  MaxAge 
)
inline

◆ PurgeUntilSequenceIndex()

template<typename SampleType , typename SinkType = TMediaSampleSink<SampleType>>
void TMediaSampleQueue< SampleType, SinkType >::PurgeUntilSequenceIndex ( int32  InUntilIndex)
inline

◆ RequestFlush()

template<typename SampleType , typename SinkType = TMediaSampleSink<SampleType>>
virtual void TMediaSampleQueue< SampleType, SinkType >::RequestFlush ( )
inlineoverridevirtual

Request to flush the queue.

Note
To be called only from producer thread.
See also
Enqueue, Num

Implements TMediaSampleSink< SampleType >.

Reimplemented in FMediaAudioSampleQueue.

Member Data Documentation

◆ CriticalSection

template<typename SampleType , typename SinkType = TMediaSampleSink<SampleType>>
FCriticalSection TMediaSampleQueue< SampleType, SinkType >::CriticalSection
mutableprotected

◆ FlushCount

template<typename SampleType , typename SinkType = TMediaSampleSink<SampleType>>
uint32 TMediaSampleQueue< SampleType, SinkType >::FlushCount = 0
protected

◆ MaxSamplesInQueue

template<typename SampleType , typename SinkType = TMediaSampleSink<SampleType>>
int32 TMediaSampleQueue< SampleType, SinkType >::MaxSamplesInQueue
protected

◆ NumDroppedSamples

template<typename SampleType , typename SinkType = TMediaSampleSink<SampleType>>
uint32 TMediaSampleQueue< SampleType, SinkType >::NumDroppedSamples = 0
protected

◆ Samples

template<typename SampleType , typename SinkType = TMediaSampleSink<SampleType>>
TArray<TSharedPtr<SampleType, ESPMode::ThreadSafe> > TMediaSampleQueue< SampleType, SinkType >::Samples
protected

The documentation for this class was generated from the following file: