Files
UnrealEngineUWP/Engine/Source/Runtime/MediaUtils/Public/MediaSampleSource.h
ryan durand 0f0464a30e Updating copyright for Engine Runtime.
#rnx
#rb none


#ROBOMERGE-OWNER: ryan.durand
#ROBOMERGE-AUTHOR: ryan.durand
#ROBOMERGE-SOURCE: CL 10869210 via CL 10869511 via CL 10869900
#ROBOMERGE-BOT: (v613-10869866)

[CL 10870549 by ryan durand in Main branch]
2019-12-26 14:45:42 -05:00

66 lines
1.7 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreTypes.h"
#include "Misc/Timespan.h"
#include "Templates/SharedPointer.h"
/**
* Interface for media sample sources.
*
* This interface declares the read side of media sample queues.
*
* @see TMediaSampleQueue
*/
template<typename SampleType>
class TMediaSampleSource
{
public:
/**
* Remove and return the next sample in the queue.
*
* @param OutSample Will contain the sample if the queue is not empty.
* @return true if a sample has been returned, false if the queue was empty.
* @see Peek, Pop
*/
virtual bool Dequeue(TSharedPtr<SampleType, ESPMode::ThreadSafe>& OutSample) = 0;
/**
* Peek at the next sample in the queue without removing it.
*
* @param OutSample Will contain the sample if the queue is not empty.
* @return true if a sample has been returned, false if the queue was empty.
* @see Dequeue, Pop
*/
virtual bool Peek(TSharedPtr<SampleType, ESPMode::ThreadSafe>& OutSample) = 0;
/**
* Remove the next sample from the queue.
*
* @return true if a sample was removed, false otherwise.
* @see Dequeue, Peek
*/
virtual bool Pop() = 0;
public:
/** Virtual destructor. */
virtual ~TMediaSampleSource() { }
};
/** Type definition for audio sample source. */
typedef TMediaSampleSource<class IMediaAudioSample> FMediaAudioSampleSource;
/** Type definition for binary sample source. */
typedef TMediaSampleSource<class IMediaBinarySample> FMediaBinarySampleSource;
/** Type definition for overlay sample source. */
typedef TMediaSampleSource<class IMediaOverlaySample> FMediaOverlaySampleSource;
/** Type definition for texture sample source. */
typedef TMediaSampleSource<class IMediaTextureSample> FMediaTextureSampleSource;