323 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			323 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			C#
		
	
	
	
using System;
 | 
						|
using UnityEngine;
 | 
						|
 | 
						|
//-----------------------------------------------------------------------------
 | 
						|
// Copyright 2015-2018 RenderHeads Ltd.  All rights reserverd.
 | 
						|
//-----------------------------------------------------------------------------
 | 
						|
 | 
						|
namespace RenderHeads.Media.AVProVideo
 | 
						|
{
 | 
						|
	/// <summary>
 | 
						|
	/// This media player fakes video playback for platforms that aren't supported
 | 
						|
	/// </summary>
 | 
						|
	public sealed class NullMediaPlayer : BaseMediaPlayer
 | 
						|
	{
 | 
						|
		private bool		_isPlaying = false;
 | 
						|
		private bool		_isPaused = false;
 | 
						|
		private float		_currentTime = 0.0f;
 | 
						|
//		private bool		_audioMuted = false;
 | 
						|
		private float		_volume = 0.0f;
 | 
						|
		private float		_playbackRate = 1.0f;
 | 
						|
		private bool		_bLoop;
 | 
						|
 | 
						|
		private int			_Width = 256;
 | 
						|
		private int			_height = 256;
 | 
						|
		private Texture2D	_texture;
 | 
						|
		private Texture2D	_texture_AVPro;
 | 
						|
		private Texture2D	_texture_AVPro1;
 | 
						|
		private float		_fakeFlipTime;
 | 
						|
		private int			_frameCount;
 | 
						|
 | 
						|
		private const float FrameRate = 10f;
 | 
						|
 | 
						|
		public override string GetVersion()
 | 
						|
		{
 | 
						|
			return "0.0.0";
 | 
						|
		}
 | 
						|
 | 
						|
		public override bool OpenVideoFromFile(string path, long offset, string httpHeaderJson, uint sourceSamplerate = 0, uint sourceChannels = 0, int forceFileFormat = 0)
 | 
						|
		{
 | 
						|
			_texture_AVPro = (Texture2D)Resources.Load("AVPro");
 | 
						|
			_texture_AVPro1 = (Texture2D)Resources.Load("AVPro1");
 | 
						|
 | 
						|
			if( _texture_AVPro )
 | 
						|
			{
 | 
						|
				_Width = _texture_AVPro.width;
 | 
						|
				_height = _texture_AVPro.height;
 | 
						|
			}
 | 
						|
			
 | 
						|
			_texture = _texture_AVPro;
 | 
						|
 | 
						|
			_fakeFlipTime = 0.0f;
 | 
						|
			_frameCount = 0;
 | 
						|
 | 
						|
			return true;
 | 
						|
		}
 | 
						|
 | 
						|
        public override void CloseVideo()
 | 
						|
        {
 | 
						|
			_frameCount = 0;
 | 
						|
			Resources.UnloadAsset(_texture_AVPro);
 | 
						|
			Resources.UnloadAsset(_texture_AVPro1);
 | 
						|
 | 
						|
			base.CloseVideo();
 | 
						|
        }
 | 
						|
 | 
						|
        public override void SetLooping( bool bLooping )
 | 
						|
		{
 | 
						|
			_bLoop = bLooping;
 | 
						|
		}
 | 
						|
 | 
						|
		public override bool IsLooping()
 | 
						|
		{
 | 
						|
			return _bLoop;
 | 
						|
		}
 | 
						|
 | 
						|
		public override bool HasMetaData()
 | 
						|
		{
 | 
						|
			return true;
 | 
						|
		}
 | 
						|
 | 
						|
		public override bool CanPlay()
 | 
						|
		{
 | 
						|
			return true;
 | 
						|
		}
 | 
						|
 | 
						|
		public override bool HasAudio()
 | 
						|
		{
 | 
						|
			return false;
 | 
						|
		}
 | 
						|
 | 
						|
		public override bool HasVideo()
 | 
						|
		{
 | 
						|
			return false;
 | 
						|
		}
 | 
						|
 | 
						|
		public override void Play()
 | 
						|
		{
 | 
						|
			_isPlaying = true;
 | 
						|
			_isPaused = false;
 | 
						|
			_fakeFlipTime = 0.0f;
 | 
						|
		}
 | 
						|
 | 
						|
		public override void Pause()
 | 
						|
		{
 | 
						|
			_isPlaying = false;
 | 
						|
			_isPaused = true;
 | 
						|
		}
 | 
						|
 | 
						|
		public override void Stop()
 | 
						|
		{
 | 
						|
			_isPlaying = false;
 | 
						|
			_isPaused = false;
 | 
						|
		}
 | 
						|
 | 
						|
		public override bool IsSeeking()
 | 
						|
		{
 | 
						|
			return false;
 | 
						|
		}
 | 
						|
		public override bool IsPlaying()
 | 
						|
		{
 | 
						|
			return _isPlaying;
 | 
						|
		}
 | 
						|
		public override bool IsPaused()
 | 
						|
		{
 | 
						|
			return _isPaused;
 | 
						|
		}
 | 
						|
		public override bool IsFinished()
 | 
						|
		{
 | 
						|
			return _isPlaying && (_currentTime >= GetDurationMs());
 | 
						|
		}
 | 
						|
 | 
						|
		public override bool IsBuffering()
 | 
						|
		{
 | 
						|
			return false;
 | 
						|
		}
 | 
						|
 | 
						|
		public override float GetDurationMs()
 | 
						|
		{
 | 
						|
			return 10.0f * 1000.0f;
 | 
						|
		}
 | 
						|
 | 
						|
		public override int GetVideoWidth()
 | 
						|
		{
 | 
						|
			return _Width;
 | 
						|
		}
 | 
						|
			
 | 
						|
		public override int GetVideoHeight()
 | 
						|
		{
 | 
						|
			return _height;
 | 
						|
		}
 | 
						|
 | 
						|
		public override float GetVideoDisplayRate()
 | 
						|
		{
 | 
						|
			return FrameRate;
 | 
						|
		}
 | 
						|
 | 
						|
		public override Texture GetTexture( int index )
 | 
						|
		{
 | 
						|
//			return _texture ? _texture : Texture2D.whiteTexture;
 | 
						|
			return _texture;
 | 
						|
		}
 | 
						|
 | 
						|
		public override int GetTextureFrameCount()
 | 
						|
		{
 | 
						|
			return _frameCount;
 | 
						|
		}
 | 
						|
 | 
						|
		public override bool RequiresVerticalFlip()
 | 
						|
		{
 | 
						|
			return false;
 | 
						|
		}
 | 
						|
 | 
						|
		public override void Rewind()
 | 
						|
		{
 | 
						|
			Seek( 0.0f );
 | 
						|
		}
 | 
						|
 | 
						|
		public override void Seek(float timeMs)
 | 
						|
		{
 | 
						|
			_currentTime = timeMs;
 | 
						|
		}
 | 
						|
 | 
						|
		public override void SeekFast(float timeMs)
 | 
						|
		{
 | 
						|
			_currentTime = timeMs;
 | 
						|
		}
 | 
						|
 | 
						|
		public override void SeekWithTolerance(float timeMs, float beforeMs, float afterMs)
 | 
						|
		{
 | 
						|
			_currentTime = timeMs;
 | 
						|
		}
 | 
						|
 | 
						|
		public override float GetCurrentTimeMs()
 | 
						|
		{
 | 
						|
			return _currentTime;
 | 
						|
		}
 | 
						|
 | 
						|
		public override void SetPlaybackRate(float rate)
 | 
						|
		{
 | 
						|
			_playbackRate = rate;
 | 
						|
		}
 | 
						|
 | 
						|
		public override float GetPlaybackRate()
 | 
						|
		{
 | 
						|
			return _playbackRate;
 | 
						|
		}
 | 
						|
 | 
						|
		public override float GetBufferingProgress()
 | 
						|
		{
 | 
						|
			return 0f;
 | 
						|
		}
 | 
						|
 | 
						|
		public override void MuteAudio(bool bMuted)
 | 
						|
		{
 | 
						|
//			_audioMuted = bMuted;
 | 
						|
		}
 | 
						|
 | 
						|
		public override bool IsMuted()
 | 
						|
		{
 | 
						|
			return true;
 | 
						|
		}
 | 
						|
 | 
						|
		public override void SetVolume(float volume)
 | 
						|
		{
 | 
						|
			_volume = volume;
 | 
						|
		}
 | 
						|
 | 
						|
		public override float GetVolume()
 | 
						|
		{
 | 
						|
			return _volume;
 | 
						|
		}
 | 
						|
 | 
						|
		public override int GetAudioTrackCount()
 | 
						|
		{
 | 
						|
			return 0;
 | 
						|
		}
 | 
						|
 | 
						|
		public override int GetCurrentAudioTrack()
 | 
						|
		{
 | 
						|
			return 0;
 | 
						|
		}
 | 
						|
 | 
						|
		public override void SetAudioTrack( int index )
 | 
						|
		{
 | 
						|
		}
 | 
						|
 | 
						|
		public override int GetVideoTrackCount()
 | 
						|
		{
 | 
						|
			return 0;
 | 
						|
		}
 | 
						|
 | 
						|
		public override int GetCurrentVideoTrack()
 | 
						|
		{
 | 
						|
			return 0;
 | 
						|
		}
 | 
						|
 | 
						|
		public override string GetCurrentAudioTrackId()
 | 
						|
		{
 | 
						|
			// TODO
 | 
						|
			return "";
 | 
						|
		}
 | 
						|
 | 
						|
		public override int GetCurrentAudioTrackBitrate()
 | 
						|
		{
 | 
						|
			// TODO
 | 
						|
			return 0;
 | 
						|
		}
 | 
						|
		public override void SetVideoTrack( int index )
 | 
						|
		{
 | 
						|
		}
 | 
						|
 | 
						|
		public override string GetCurrentVideoTrackId()
 | 
						|
		{
 | 
						|
			return "";
 | 
						|
		}
 | 
						|
 | 
						|
		public override int GetCurrentVideoTrackBitrate()
 | 
						|
		{
 | 
						|
			return 0;
 | 
						|
		}
 | 
						|
		
 | 
						|
		public override float GetVideoFrameRate()
 | 
						|
		{
 | 
						|
			return 0.0f;
 | 
						|
		}
 | 
						|
 | 
						|
		public override void Update()
 | 
						|
		{
 | 
						|
			UpdateSubtitles();
 | 
						|
 | 
						|
			if (_isPlaying)
 | 
						|
			{
 | 
						|
				_currentTime += Time.deltaTime * 1000.0f;
 | 
						|
				if (_currentTime >= GetDurationMs())
 | 
						|
				{
 | 
						|
					_currentTime = GetDurationMs();
 | 
						|
					if( _bLoop )
 | 
						|
					{
 | 
						|
						Rewind();
 | 
						|
					}
 | 
						|
				}
 | 
						|
 | 
						|
				// 
 | 
						|
 | 
						|
				_fakeFlipTime += Time.deltaTime;
 | 
						|
				if( _fakeFlipTime >= (1.0 / FrameRate))
 | 
						|
				{
 | 
						|
					_fakeFlipTime = 0.0f;
 | 
						|
					_texture = ( _texture == _texture_AVPro ) ? _texture_AVPro1 : _texture_AVPro;
 | 
						|
					_frameCount++;
 | 
						|
				}
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		public override void Render()
 | 
						|
		{
 | 
						|
		}
 | 
						|
 | 
						|
		public override void Dispose()
 | 
						|
		{
 | 
						|
		}
 | 
						|
	}
 | 
						|
} |