45 lines
1.1 KiB
C++
45 lines
1.1 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "CoreTypes.h"
|
|
#include "PlayerTime.h"
|
|
|
|
namespace Electra
|
|
{
|
|
class IMediaRenderClock
|
|
{
|
|
public:
|
|
virtual ~IMediaRenderClock() = default;
|
|
|
|
enum class ERendererType
|
|
{
|
|
Video,
|
|
Audio,
|
|
Subtitles,
|
|
};
|
|
|
|
/**
|
|
* Called by the renderer to set the time of the most sample that has been output most recently.
|
|
*
|
|
* @param ForRenderer
|
|
* Identifies the type of renderer from which the time is set.
|
|
* @param CurrentRenderTime
|
|
* The time of the sample most recently output.
|
|
*/
|
|
virtual void SetCurrentTime(ERendererType ForRenderer, const FTimeValue& CurrentRenderTime) = 0;
|
|
|
|
/**
|
|
* Gets the current _interpolated_ sample output time from the last
|
|
* time SetCurrentTime() was called plus the elapsed time since then.
|
|
*
|
|
* @param FromRenderer
|
|
* Identifies the type of renderer for which to get the time.
|
|
*
|
|
* @return Interpolated render time
|
|
*/
|
|
virtual FTimeValue GetInterpolatedRenderTime(ERendererType FromRenderer) = 0;
|
|
};
|
|
|
|
} // namespace Electra
|