using System;
using UnityEngine;

namespace RenderHeads.Media.AVProVideo
{
	public sealed class NullMediaPlayer : BaseMediaPlayer
	{
		public override string GetVersion()
		{
			return "0.0.0";
		}

		public override bool OpenVideoFromFile(string path, long offset, string httpHeaderJson)
		{
			this._texture_AVPro = (Texture2D)Resources.Load("AVPro");
			this._texture_AVPro1 = (Texture2D)Resources.Load("AVPro1");
			if (this._texture_AVPro)
			{
				this._Width = this._texture_AVPro.width;
				this._height = this._texture_AVPro.height;
			}
			this._texture = this._texture_AVPro;
			this._fakeFlipTime = 0f;
			this._frameCount = 0;
			return true;
		}

		public override void CloseVideo()
		{
			this._frameCount = 0;
			Resources.UnloadAsset(this._texture_AVPro);
			Resources.UnloadAsset(this._texture_AVPro1);
		}

		public override void SetLooping(bool bLooping)
		{
			this._bLoop = bLooping;
		}

		public override bool IsLooping()
		{
			return this._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()
		{
			this._isPlaying = true;
			this._isPaused = false;
			this._fakeFlipTime = 0f;
		}

		public override void Pause()
		{
			this._isPlaying = false;
			this._isPaused = true;
		}

		public override void Stop()
		{
			this._isPlaying = false;
			this._isPaused = false;
		}

		public override bool IsSeeking()
		{
			return false;
		}

		public override bool IsPlaying()
		{
			return this._isPlaying;
		}

		public override bool IsPaused()
		{
			return this._isPaused;
		}

		public override bool IsFinished()
		{
			return this._isPlaying && this._currentTime >= this.GetDurationMs();
		}

		public override bool IsBuffering()
		{
			return false;
		}

		public override float GetDurationMs()
		{
			return 10000f;
		}

		public override int GetVideoWidth()
		{
			return this._Width;
		}

		public override int GetVideoHeight()
		{
			return this._height;
		}

		public override float GetVideoDisplayRate()
		{
			return 10f;
		}

		public override Texture GetTexture(int index)
		{
			return this._texture;
		}

		public override int GetTextureFrameCount()
		{
			return this._frameCount;
		}

		public override bool RequiresVerticalFlip()
		{
			return false;
		}

		public override void Rewind()
		{
			this.Seek(0f);
		}

		public override void Seek(float timeMs)
		{
			this._currentTime = timeMs;
		}

		public override void SeekFast(float timeMs)
		{
			this._currentTime = timeMs;
		}

		public override float GetCurrentTimeMs()
		{
			return this._currentTime;
		}

		public override void SetPlaybackRate(float rate)
		{
			this._playbackRate = rate;
		}

		public override float GetPlaybackRate()
		{
			return this._playbackRate;
		}

		public override float GetBufferingProgress()
		{
			return 0f;
		}

		public override void MuteAudio(bool bMuted)
		{
		}

		public override bool IsMuted()
		{
			return true;
		}

		public override void SetVolume(float volume)
		{
			this._volume = volume;
		}

		public override float GetVolume()
		{
			return this._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()
		{
			return string.Empty;
		}

		public override int GetCurrentAudioTrackBitrate()
		{
			return 0;
		}

		public override void SetVideoTrack(int index)
		{
		}

		public override string GetCurrentVideoTrackId()
		{
			return string.Empty;
		}

		public override int GetCurrentVideoTrackBitrate()
		{
			return 0;
		}

		public override float GetVideoFrameRate()
		{
			return 0f;
		}

		public override void Update()
		{
			this.UpdateSubtitles();
			if (this._isPlaying)
			{
				this._currentTime += Time.deltaTime * 1000f;
				if (this._currentTime >= this.GetDurationMs())
				{
					this._currentTime = this.GetDurationMs();
					if (this._bLoop)
					{
						this.Rewind();
					}
				}
				this._fakeFlipTime += Time.deltaTime;
				if ((double)this._fakeFlipTime >= 0.1)
				{
					this._fakeFlipTime = 0f;
					this._texture = ((!(this._texture == this._texture_AVPro)) ? this._texture_AVPro : this._texture_AVPro1);
					this._frameCount++;
				}
			}
		}

		public override void Render()
		{
		}

		public override void Dispose()
		{
		}

		private bool _isPlaying;

		private bool _isPaused;

		private float _currentTime;

		private float _volume;

		private float _playbackRate = 1f;

		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;
	}
}
