Files
FunnyGirl/Plugins/AndroidRadioPlayer/Source/AndroidRadioPlayer/Private/AndroidRadioMediaPlayer.h
T
2026-05-19 13:42:41 +07:00

79 lines
3.2 KiB
C++

#pragma once
#include "IMediaCache.h"
#include "IMediaControls.h"
#include "IMediaPlayer.h"
#include "IMediaSamples.h"
#include "IMediaTracks.h"
#include "IMediaView.h"
class IMediaEventSink;
class FAndroidRadioMediaPlayer
: public IMediaPlayer
, protected IMediaCache
, protected IMediaControls
, protected IMediaSamples
, protected IMediaTracks
, protected IMediaView
{
public:
explicit FAndroidRadioMediaPlayer(IMediaEventSink& InEventSink);
virtual ~FAndroidRadioMediaPlayer() override;
virtual void Close() override;
virtual IMediaCache& GetCache() override;
virtual IMediaControls& GetControls() override;
virtual FString GetInfo() const override;
virtual FGuid GetPlayerPluginGUID() const override;
virtual IMediaSamples& GetSamples() override;
virtual FString GetStats() const override;
virtual IMediaTracks& GetTracks() override;
virtual FString GetUrl() const override;
virtual IMediaView& GetView() override;
virtual bool Open(const FString& Url, const IMediaOptions* Options) override;
virtual bool Open(const TSharedRef<FArchive, ESPMode::ThreadSafe>& Archive, const FString& OriginalUrl, const IMediaOptions* Options) override;
virtual void TickInput(FTimespan DeltaTime, FTimespan Timecode) override;
virtual bool SetNativeVolume(float Volume) override;
virtual bool CanControl(EMediaControl Control) const override;
virtual FTimespan GetDuration() const override;
virtual float GetRate() const override;
virtual EMediaState GetState() const override;
virtual EMediaStatus GetStatus() const override;
virtual TRangeSet<float> GetSupportedRates(EMediaRateThinning Thinning) const override;
virtual FTimespan GetTime() const override;
virtual bool IsLooping() const override;
virtual bool Seek(const FTimespan& Time) override;
virtual bool SetLooping(bool Looping) override;
virtual bool SetRate(float Rate) override;
virtual bool GetAudioTrackFormat(int32 TrackIndex, int32 FormatIndex, FMediaAudioTrackFormat& OutFormat) const override;
virtual int32 GetNumTracks(EMediaTrackType TrackType) const override;
virtual int32 GetNumTrackFormats(EMediaTrackType TrackType, int32 TrackIndex) const override;
virtual int32 GetSelectedTrack(EMediaTrackType TrackType) const override;
virtual FText GetTrackDisplayName(EMediaTrackType TrackType, int32 TrackIndex) const override;
virtual int32 GetTrackFormat(EMediaTrackType TrackType, int32 TrackIndex) const override;
virtual FString GetTrackLanguage(EMediaTrackType TrackType, int32 TrackIndex) const override;
virtual FString GetTrackName(EMediaTrackType TrackType, int32 TrackIndex) const override;
virtual bool GetVideoTrackFormat(int32 TrackIndex, int32 FormatIndex, FMediaVideoTrackFormat& OutFormat) const override;
virtual bool SelectTrack(EMediaTrackType TrackType, int32 TrackIndex) override;
virtual bool SetTrackFormat(EMediaTrackType TrackType, int32 TrackIndex, int32 FormatIndex) override;
virtual bool PeekVideoSampleTime(FMediaTimeStamp& TimeStamp) override;
private:
void UpdateStateFromJava();
IMediaEventSink& EventSink;
FString CurrentUrl;
EMediaState CurrentState;
EMediaStatus CurrentStatus;
float CurrentRate;
float CurrentVolume;
bool bLooping;
bool bHasSentOpenEvent;
bool bHasSentBufferingEvent;
bool bHasSentEndEvent;
};