Files
UnrealEngine/Engine/Plugins/Media/ElectraUtil/Source/ElectraBase/Public/MediaMetaDataDecoderOutput.h
2025-05-18 13:04:45 +08:00

56 lines
1.4 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include <CoreMinimal.h>
#include <Misc/Timespan.h>
#include <Templates/SharedPointer.h>
#include "MediaDecoderOutput.h"
class IMetaDataDecoderOutput
{
public:
virtual ~IMetaDataDecoderOutput() = default;
virtual const void* GetData() = 0;
virtual FTimespan GetDuration() const = 0;
virtual uint32 GetSize() const = 0;
virtual FDecoderTimeStamp GetTime() const = 0;
enum class EOrigin
{
EventStream,
InbandEventStream,
TimedMetadata
};
enum class EDispatchedMode
{
OnReceive,
OnStart
};
// Returns where the event originated from.
virtual EOrigin GetOrigin() const = 0;
// Returns the type with which this event was dispatched.
virtual EDispatchedMode GetDispatchedMode() const = 0;
// Returns the event's scheme id URI
virtual const FString& GetSchemeIdUri() const = 0;
// Returns the event's value.
virtual const FString& GetValue() const = 0;
// Returns the event's ID.
virtual const FString& GetID() const = 0;
// Returns the base time (the "zero point") of the track, if available, to calculate the relative time
// of this metadata from GetTime() if this is based on some non-zero anchor.
virtual TOptional<FDecoderTimeStamp> GetTrackBaseTime() const = 0;
virtual void SetTime(FDecoderTimeStamp& InTime) = 0;
};
using IMetaDataDecoderOutputPtr = TSharedPtr<IMetaDataDecoderOutput, ESPMode::ThreadSafe>;