Files
BH3/Assets/Plugins/Assembly-CSharp-firstpass/RenderHeads/Media/AVProVideo/BaseMediaPlayer.cs
2025-08-13 09:26:42 +08:00

124 lines
2.7 KiB
C#

using System;
using UnityEngine;
namespace RenderHeads.Media.AVProVideo
{
public abstract class BaseMediaPlayer : IMediaPlayer, IMediaControl, IMediaInfo, IMediaProducer, IDisposable
{
protected ErrorCode _lastError;
private FilterMode _defaultTextureFilterMode = FilterMode.Bilinear;
private TextureWrapMode _defaultTextureWrapMode = TextureWrapMode.Clamp;
private int _defaultTextureAnisoLevel = 1;
public abstract string GetVersion();
public abstract bool OpenVideoFromFile(string path);
public abstract void CloseVideo();
public abstract void SetLooping(bool bLooping);
public abstract bool IsLooping();
public abstract bool HasMetaData();
public abstract bool CanPlay();
public abstract void Play();
public abstract void Pause();
public abstract void Stop();
public abstract void Rewind();
public abstract void Seek(float timeMs);
public abstract void SeekFast(float timeMs);
public abstract float GetCurrentTimeMs();
public abstract float GetPlaybackRate();
public abstract void SetPlaybackRate(float rate);
public abstract float GetDurationMs();
public abstract int GetVideoWidth();
public abstract int GetVideoHeight();
public abstract float GetVideoDisplayRate();
public abstract bool HasAudio();
public abstract bool HasVideo();
public abstract bool IsSeeking();
public abstract bool IsPlaying();
public abstract bool IsPaused();
public abstract bool IsFinished();
public abstract bool IsBuffering();
public abstract Texture GetTexture();
public abstract int GetTextureFrameCount();
public abstract bool RequiresVerticalFlip();
public abstract void MuteAudio(bool bMuted);
public abstract bool IsMuted();
public abstract void SetVolume(float volume);
public abstract float GetVolume();
public abstract int GetAudioTrackCount();
public abstract int GetCurrentAudioTrack();
public abstract void SetAudioTrack(int index);
public abstract float GetVideoFrameRate();
public abstract float GetBufferingProgress();
public abstract void Update();
public abstract void Render();
public abstract void Dispose();
public ErrorCode GetLastError()
{
return _lastError;
}
public void SetTextureProperties(FilterMode filterMode = FilterMode.Bilinear, TextureWrapMode wrapMode = TextureWrapMode.Clamp, int anisoLevel = 0)
{
_defaultTextureFilterMode = filterMode;
_defaultTextureWrapMode = wrapMode;
_defaultTextureAnisoLevel = anisoLevel;
ApplyTextureProperties(GetTexture());
}
protected void ApplyTextureProperties(Texture texture)
{
if (texture != null)
{
texture.filterMode = _defaultTextureFilterMode;
texture.wrapMode = _defaultTextureWrapMode;
texture.anisoLevel = _defaultTextureAnisoLevel;
}
}
}
}