Files
2025-08-13 09:26:42 +08:00

277 lines
4.1 KiB
C#

using UnityEngine;
namespace RenderHeads.Media.AVProVideo
{
public sealed class NullMediaPlayer : BaseMediaPlayer
{
private const float FrameRate = 10f;
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;
public override string GetVersion()
{
return "0.0.0";
}
public override bool OpenVideoFromFile(string path)
{
_texture_AVPro = (Texture2D)Resources.Load("AVPro");
_texture_AVPro1 = (Texture2D)Resources.Load("AVPro1");
if ((bool)_texture_AVPro)
{
_Width = _texture_AVPro.width;
_height = _texture_AVPro.height;
}
_texture = _texture_AVPro;
_fakeFlipTime = 0f;
_frameCount = 0;
return true;
}
public override void CloseVideo()
{
_frameCount = 0;
Resources.UnloadAsset(_texture_AVPro);
Resources.UnloadAsset(_texture_AVPro1);
}
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 = 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 10000f;
}
public override int GetVideoWidth()
{
return _Width;
}
public override int GetVideoHeight()
{
return _height;
}
public override float GetVideoDisplayRate()
{
return 10f;
}
public override Texture GetTexture()
{
return _texture;
}
public override int GetTextureFrameCount()
{
return _frameCount;
}
public override bool RequiresVerticalFlip()
{
return false;
}
public override void Rewind()
{
Seek(0f);
}
public override void Seek(float timeMs)
{
_currentTime = timeMs;
}
public override void SeekFast(float timeMs)
{
_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)
{
}
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 float GetVideoFrameRate()
{
return 0f;
}
public override void Update()
{
if (!_isPlaying)
{
return;
}
_currentTime += Time.deltaTime * 1000f;
if (_currentTime >= GetDurationMs())
{
_currentTime = GetDurationMs();
if (_bLoop)
{
Rewind();
}
}
_fakeFlipTime += Time.deltaTime;
if ((double)_fakeFlipTime >= 0.1)
{
_fakeFlipTime = 0f;
_texture = ((!(_texture == _texture_AVPro)) ? _texture_AVPro : _texture_AVPro1);
_frameCount++;
}
}
public override void Render()
{
}
public override void Dispose()
{
}
}
}