Files
UnrealEngineUWP/Engine/Source/Runtime/GameplayMediaEncoder/Public/GameplayMediaEncoderSample.h
Josh Adams d0bf843c9c - Merging Dev-Kairos/Engine/... to Main/Engine/...
- Brings over the necessary engine changes for embedding UE4 mobile as a dylib/so in native mobile app
- Various changes for facial animation, screen recording, others
- ARKit and ARCore plugins were removed, as deemed "not ready"
#rb many people


#ROBOMERGE-OWNER: josh.adams
#ROBOMERGE-AUTHOR: josh.adams
#ROBOMERGE-SOURCE: CL 5201138 via CL 5203024

[CL 5226277 by Josh Adams in Main branch]
2019-02-27 11:57:17 -05:00

82 lines
1.6 KiB
C++

// Copyright 1998-2018 Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "Templates/RefCounting.h"
#if PLATFORM_WINDOWS
#include "Windows/AllowWindowsPlatformTypes.h"
#include "Windows/PreWindowsApi.h"
#include <mftransform.h>
#include "Windows/PostWindowsApi.h"
#include "Windows/HideWindowsPlatformTypes.h"
#elif PLATFORM_XBOXONE
#include "XboxOne/XboxOneAllowPlatformTypes.h"
#include "XboxOne/XboxOnePreApi.h"
#include <mftransform.h>
#include "XboxOne/XboxOnePostApi.h"
#include "XboxOne/XboxOneHidePlatformTypes.h"
#endif
enum class EMediaType { Audio = 0, Video = 1, Invalid = 2 };
inline const TCHAR* MediaTypeStr(EMediaType MediaType)
{
const TCHAR* Str[] = { TEXT("audio"), TEXT("video"), TEXT("invalid media type") };
return Str[static_cast<int>(MediaType)];
}
class GAMEPLAYMEDIAENCODER_API FGameplayMediaEncoderSample
{
public:
FGameplayMediaEncoderSample(EMediaType InMediaType = EMediaType::Invalid, IMFSample* InSample = nullptr) :
MediaType(InMediaType),
Sample(InSample)
{}
EMediaType GetType() const
{
return MediaType;
}
const IMFSample* GetSample() const
{
return Sample;
}
IMFSample* GetSample()
{
return Sample;
}
bool CreateSample();
FTimespan GetTime() const;
void SetTime(FTimespan Time);
FTimespan GetDuration() const;
void SetDuration(FTimespan Duration);
bool IsVideoKeyFrame() const;
bool IsValid() const
{
return Sample.IsValid();
}
void Reset()
{
Sample = nullptr;
}
FGameplayMediaEncoderSample Clone() const;
private:
EMediaType MediaType;
TRefCountPtr<IMFSample> Sample;
};