From 39f6a850f664ed6e931197f1285b2bf2b7af3e74 Mon Sep 17 00:00:00 2001
From: Gerke Max Preussner <info@headcrash.us>
Date: Tue, 25 Oct 2016 18:41:10 -0400
Subject: [PATCH] Added 4.14 sink API changes.

---
 .../Private/Player/VlcMediaOutput.cpp         | 42 ++++++-------------
 .../VlcMedia/Private/Player/VlcMediaOutput.h  | 12 ++----
 Source/VlcMedia/Private/VlcMediaPCH.h         |  2 +-
 3 files changed, 18 insertions(+), 38 deletions(-)

diff --git a/Source/VlcMedia/Private/Player/VlcMediaOutput.cpp b/Source/VlcMedia/Private/Player/VlcMediaOutput.cpp
index d3f46729..a5edef8c 100644
--- a/Source/VlcMedia/Private/Player/VlcMediaOutput.cpp
+++ b/Source/VlcMedia/Private/Player/VlcMediaOutput.cpp
@@ -10,11 +10,10 @@
 
 FVlcMediaOutput::FVlcMediaOutput()
 	: AudioSink(nullptr)
-	, CaptionSink(nullptr)
 	, Player(nullptr)
 	, ResumeOrigin(0)
 	, ResumeTime(FTimespan::Zero())
-	, SubtitleSink(nullptr)
+	, OverlaySink(nullptr)
 	, VideoSink(nullptr)
 { }
 
@@ -81,38 +80,23 @@ void FVlcMediaOutput::SetAudioSink(IMediaAudioSink* Sink)
 }
 
 
-void FVlcMediaOutput::SetCaptionSink(IMediaStringSink* Sink)
+void FVlcMediaOutput::SetOverlaySink(IMediaOverlaySink* Sink)
 {
 	FScopeLock Lock(&CriticalSection);
 
-	if (Sink != CaptionSink)
+	if (Sink != OverlaySink)
 	{
-		if (CaptionSink != nullptr)
+		if (OverlaySink != nullptr)
 		{
-			CaptionSink->ShutdownStringSink();
+			OverlaySink->ShutdownOverlaySink();
 		}
 
-		CaptionSink = Sink;
-		SetupCaptionOutput();
-	}
-}
-
-/*
-void FVlcMediaOutput::SetSubtitleSink(IMediaStringSink* Sink)
-{
-	FScopeLock Lock(&CriticalSection);
+		OverlaySink = Sink;
 
-	if (Sink != SubtitleSink)
-	{
-		if (SubtitleSink != nullptr)
-		{
-			SubtitleSink->ShutdownStringSink();
-		}
-
-		SubtitleSink = Sink;
+		SetupCaptionOutput();
 		SetupSubtitleOutput();
 	}
-}*/
+}
 
 
 void FVlcMediaOutput::SetVideoSink(IMediaTextureSink* Sink)
@@ -487,16 +471,16 @@ unsigned FVlcMediaOutput::StaticVideoSetupCallback(void** Opaque, char* Chroma,
 		Pitches[0] = *Width * 2;
 	}
 	else if ((FCStringAnsi::Stricmp(Chroma, "UYVY") == 0) ||
-			(FCStringAnsi::Stricmp(Chroma, "Y422") == 0) ||
-			(FCStringAnsi::Stricmp(Chroma, "UYNV") == 0) ||
-			(FCStringAnsi::Stricmp(Chroma, "HDYC") == 0))
+		(FCStringAnsi::Stricmp(Chroma, "Y422") == 0) ||
+		(FCStringAnsi::Stricmp(Chroma, "UYNV") == 0) ||
+		(FCStringAnsi::Stricmp(Chroma, "HDYC") == 0))
 	{
 		SinkFormat = EMediaTextureSinkFormat::CharUYVY;
 		Pitches[0] = *Width * 2;
 	}
 	else if ((FCStringAnsi::Stricmp(Chroma, "YUY2") == 0) ||
-			(FCStringAnsi::Stricmp(Chroma, "V422") == 0) ||
-			(FCStringAnsi::Stricmp(Chroma, "YUYV") == 0))
+		(FCStringAnsi::Stricmp(Chroma, "V422") == 0) ||
+		(FCStringAnsi::Stricmp(Chroma, "YUYV") == 0))
 	{
 		SinkFormat = EMediaTextureSinkFormat::CharYUY2;
 		Pitches[0] = *Width * 2;
diff --git a/Source/VlcMedia/Private/Player/VlcMediaOutput.h b/Source/VlcMedia/Private/Player/VlcMediaOutput.h
index eade1de1..9ae5e684 100644
--- a/Source/VlcMedia/Private/Player/VlcMediaOutput.h
+++ b/Source/VlcMedia/Private/Player/VlcMediaOutput.h
@@ -46,8 +46,7 @@ class FVlcMediaOutput
 	//~ IMediaOutput interface
 
 	virtual void SetAudioSink(IMediaAudioSink* Sink) override;
-	virtual void SetCaptionSink(IMediaStringSink* Sink) override;
-//	virtual void SetSubtitleSink(IMediaStringSink* Sink) override;
+	virtual void SetOverlaySink(IMediaOverlaySink* Sink) override;
 	virtual void SetVideoSink(IMediaTextureSink* Sink) override;
 
 protected:
@@ -117,10 +116,7 @@ class FVlcMediaOutput
 
 	/** The audio sink. */
 	IMediaAudioSink* AudioSink;
-
-	/** The caption text sink. */
-	IMediaStringSink* CaptionSink;
-
+	
 	/** Critical section for synchronizing access to sinks. */
 	FCriticalSection CriticalSection;
 
@@ -133,8 +129,8 @@ class FVlcMediaOutput
 	/** The time at which playback resumed. */
 	FTimespan ResumeTime;
 
-	/** The subtitle sink. */
-	IMediaStringSink* SubtitleSink;
+	/** The text overlay sink. */
+	IMediaOverlaySink* OverlaySink;
 
 	/** Dimensions of the current video track. */
 	FIntPoint VideoDimensions;
diff --git a/Source/VlcMedia/Private/VlcMediaPCH.h b/Source/VlcMedia/Private/VlcMediaPCH.h
index eac2ca7d..5af633dc 100644
--- a/Source/VlcMedia/Private/VlcMediaPCH.h
+++ b/Source/VlcMedia/Private/VlcMediaPCH.h
@@ -8,7 +8,7 @@
 #include "Runtime/CoreUObject/Public/CoreUObject.h"
 #include "Runtime/Media/Public/IMediaAudioSink.h"
 #include "Runtime/Media/Public/IMediaOptions.h"
-#include "Runtime/Media/Public/IMediaStringSink.h"
+#include "Runtime/Media/Public/IMediaOverlaySink.h"
 #include "Runtime/Media/Public/IMediaTextureSink.h"
 #include "Runtime/Projects/Public/Interfaces/IPluginManager.h"