first commit
This commit is contained in:
@@ -0,0 +1,129 @@
|
||||
using UnityEngine;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright 2015-2022 RenderHeads Ltd. All rights reserved.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
namespace RenderHeads.Media.AVProVideo
|
||||
{
|
||||
public partial class MediaPlayer : MonoBehaviour
|
||||
{
|
||||
public bool OpenMediaFromBuffer(byte[] buffer, bool autoPlay = true)
|
||||
{
|
||||
_mediaPath = new MediaPath("buffer", MediaPathType.AbsolutePathOrURL);
|
||||
_autoPlayOnStart = autoPlay;
|
||||
|
||||
if (_controlInterface == null)
|
||||
{
|
||||
Initialise();
|
||||
}
|
||||
|
||||
return OpenMediaFromBufferInternal(buffer);
|
||||
}
|
||||
|
||||
public bool StartOpenChunkedMediaFromBuffer(ulong length, bool autoPlay = true)
|
||||
{
|
||||
_mediaPath = new MediaPath("buffer", MediaPathType.AbsolutePathOrURL);
|
||||
_autoPlayOnStart = autoPlay;
|
||||
|
||||
if (_controlInterface == null)
|
||||
{
|
||||
Initialise();
|
||||
}
|
||||
|
||||
return StartOpenMediaFromBufferInternal(length);
|
||||
}
|
||||
|
||||
public bool AddChunkToVideoBuffer(byte[] chunk, ulong offset, ulong chunkSize)
|
||||
{
|
||||
return AddChunkToBufferInternal(chunk, offset, chunkSize);
|
||||
}
|
||||
|
||||
public bool EndOpenChunkedVideoFromBuffer()
|
||||
{
|
||||
return EndOpenMediaFromBufferInternal();
|
||||
}
|
||||
|
||||
private bool OpenMediaFromBufferInternal(byte[] buffer)
|
||||
{
|
||||
bool result = false;
|
||||
// Open the video file
|
||||
if (_controlInterface != null)
|
||||
{
|
||||
CloseMedia();
|
||||
|
||||
_isMediaOpened = true;
|
||||
_autoPlayOnStartTriggered = !_autoPlayOnStart;
|
||||
|
||||
Helper.LogInfo("Opening buffer of length " + buffer.Length, this);
|
||||
|
||||
if (!_controlInterface.OpenMediaFromBuffer(buffer))
|
||||
{
|
||||
Debug.LogError("[AVProVideo] Failed to open buffer", this);
|
||||
if (GetCurrentPlatformOptions() != PlatformOptionsWindows || PlatformOptionsWindows.videoApi != Windows.VideoApi.DirectShow)
|
||||
{
|
||||
Debug.LogError("[AVProVideo] Loading from buffer is currently only supported in Windows when using the DirectShow API");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
SetPlaybackOptions();
|
||||
result = true;
|
||||
StartRenderCoroutine();
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private bool StartOpenMediaFromBufferInternal(ulong length)
|
||||
{
|
||||
bool result = false;
|
||||
// Open the video file
|
||||
if (_controlInterface != null)
|
||||
{
|
||||
CloseMedia();
|
||||
|
||||
_isMediaOpened = true;
|
||||
_autoPlayOnStartTriggered = !_autoPlayOnStart;
|
||||
|
||||
Helper.LogInfo("Starting Opening buffer of length " + length, this);
|
||||
|
||||
if (!_controlInterface.StartOpenMediaFromBuffer(length))
|
||||
{
|
||||
Debug.LogError("[AVProVideo] Failed to start open video from buffer", this);
|
||||
if (GetCurrentPlatformOptions() != PlatformOptionsWindows || PlatformOptionsWindows.videoApi != Windows.VideoApi.DirectShow)
|
||||
{
|
||||
Debug.LogError("[AVProVideo] Loading from buffer is currently only supported in Windows when using the DirectShow API");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
SetPlaybackOptions();
|
||||
result = true;
|
||||
StartRenderCoroutine();
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private bool AddChunkToBufferInternal(byte[] chunk, ulong offset, ulong chunkSize)
|
||||
{
|
||||
if (Control != null)
|
||||
{
|
||||
return Control.AddChunkToMediaBuffer(chunk, offset, chunkSize);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private bool EndOpenMediaFromBufferInternal()
|
||||
{
|
||||
if (Control != null)
|
||||
{
|
||||
return Control.EndOpenMediaFromBuffer();
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user