void FEditorLiveStreaming::BroadcastEditorVideoFrame()
{
	if( ensure( IsBroadcastingEditor() ) )
	{
		// Check to see if we're streaming live video.  If so, we'll want to push new frames to be broadcast.
		if( LiveStreamer->IsBroadcasting() )
		{
			// Is this live streamer ready to accept new frames?
			if( LiveStreamer->IsReadyForVideoFrames() )
			{
				FSlateRenderer* SlateRenderer = FSlateApplication::Get().GetRenderer().Get();

				const FMappedTextureBuffer& CurrentBuffer = ReadbackBuffers[ReadbackBufferIndex];

				if ( CurrentBuffer.IsValid() )
				{
					//TODO PushVideoFrame Needs to Take Width and Height
					LiveStreamer->PushVideoFrame((FColor*)CurrentBuffer.Data/*, CurrentBuffer.Width, CurrentBuffer.Height*/);
					++SubmittedVideoFrameCount;

					// If this is the first frame we've submitted, then we can fade out our notification UI, since broadcasting is in progress
					if( SubmittedVideoFrameCount == 1 )
					{
						TSharedPtr< SNotificationItem > Notification( NotificationWeakPtr.Pin() );
						if( Notification.IsValid() )
						{
							Notification->ExpireAndFadeout();
						}
					}

					SlateRenderer->UnmapVirtualScreenBuffer();
				}

				TArray<FString> UnusedKeypressBuffer;
				SlateRenderer->CopyWindowsToVirtualScreenBuffer( UnusedKeypressBuffer );
				SlateRenderer->MapVirtualScreenBuffer(&ReadbackBuffers[ReadbackBufferIndex]);

				// Ping pong between buffers
				ReadbackBufferIndex = ( ReadbackBufferIndex + 1 ) % 2;
			}
		}
		else
		{
			// If our streaming service has stopped broadcasting for some reason, then we'll cancel our broadcast
			StopBroadcastingEditor();
		}
	}
}