diff --git a/flutter_vlc_player/android/build.gradle b/flutter_vlc_player/android/build.gradle index 5af41504..fa3aac7a 100644 --- a/flutter_vlc_player/android/build.gradle +++ b/flutter_vlc_player/android/build.gradle @@ -2,7 +2,7 @@ group 'software.solid.fluttervlcplayer' version '1.0-SNAPSHOT' buildscript { - ext.kotlin_version = "1.8.22" + ext.kotlin_version = "2.1.0" repositories { google() mavenCentral() @@ -50,7 +50,7 @@ android { dependencies { testImplementation("org.jetbrains.kotlin:kotlin-test") testImplementation("org.mockito:mockito-core:5.0.0") - implementation 'org.videolan.android:libvlc-all:3.6.3' + implementation 'org.videolan.android:libvlc-all:4.0.0-eap21' implementation 'androidx.appcompat:appcompat:1.7.0' implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'androidx.annotation:annotation:1.9.1' @@ -62,7 +62,7 @@ android { testLogging { events "passed", "skipped", "failed", "standardOut", "standardError" - outputs.upToDateWhen { false } + outputs.upToDateWhen {false} showStandardStreams = true } } diff --git a/flutter_vlc_player/android/src/main/java/software/solid/fluttervlcplayer/Enums/DataSourceType.java b/flutter_vlc_player/android/src/main/java/software/solid/fluttervlcplayer/Enums/DataSourceType.java index bf566f7b..7cba0ae5 100644 --- a/flutter_vlc_player/android/src/main/java/software/solid/fluttervlcplayer/Enums/DataSourceType.java +++ b/flutter_vlc_player/android/src/main/java/software/solid/fluttervlcplayer/Enums/DataSourceType.java @@ -1,7 +1,19 @@ package software.solid.fluttervlcplayer.Enums; public enum DataSourceType { - ASSET, - NETWORK, - FILE + + ASSET(0), + NETWORK(1), + FILE(2); + + private int mType; + + DataSourceType (int type) { + this.mType = type; + } + + public int getNumericType() { + return mType; + } + } diff --git a/flutter_vlc_player/android/src/main/java/software/solid/fluttervlcplayer/Enums/HwAcc.java b/flutter_vlc_player/android/src/main/java/software/solid/fluttervlcplayer/Enums/HwAcc.java index c688040b..32530f0a 100644 --- a/flutter_vlc_player/android/src/main/java/software/solid/fluttervlcplayer/Enums/HwAcc.java +++ b/flutter_vlc_player/android/src/main/java/software/solid/fluttervlcplayer/Enums/HwAcc.java @@ -1,8 +1,19 @@ package software.solid.fluttervlcplayer.Enums; public enum HwAcc { - AUTOMATIC, - DISABLED, - DECODING, - FULL + + AUTOMATIC(-1), + DISABLED(0), + DECODING(1), + FULL(2); + + private int mType; + + HwAcc (int type) { + this.mType = type; + } + + public int getNumericType() { + return mType; + } } diff --git a/flutter_vlc_player/android/src/main/java/software/solid/fluttervlcplayer/FlutterVlcPlayer.java b/flutter_vlc_player/android/src/main/java/software/solid/fluttervlcplayer/FlutterVlcPlayer.java index 284c30c3..bd61733e 100644 --- a/flutter_vlc_player/android/src/main/java/software/solid/fluttervlcplayer/FlutterVlcPlayer.java +++ b/flutter_vlc_player/android/src/main/java/software/solid/fluttervlcplayer/FlutterVlcPlayer.java @@ -14,6 +14,9 @@ import org.videolan.libvlc.MediaPlayer; import org.videolan.libvlc.RendererDiscoverer; import org.videolan.libvlc.RendererItem; +import org.videolan.libvlc.interfaces.IMedia; +import java.util.Random; +import android.util.Log; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -117,10 +120,6 @@ public void onCancel(Object o) { textureView.setFitsSystemWindows(true); } - // private Uri getStreamUri(String streamPath, boolean isLocal) { - // return isLocal ? Uri.fromFile(new File(streamPath)) : Uri.parse(streamPath); - // } - public void initialize(List options) { this.options = options; libVLC = new LibVLC(context, options); @@ -143,14 +142,9 @@ private void setupVlcMediaPlayer() { public void onEvent(MediaPlayer.Event event) { HashMap eventObject = new HashMap<>(); // - // Current video track is only available when the media is playing - int height = 0; - int width = 0; - Media.VideoTrack currentVideoTrack = mediaPlayer.getCurrentVideoTrack(); - if (currentVideoTrack != null) { - height = currentVideoTrack.height; - width = currentVideoTrack.width; - } + // Get video dimensions from texture view as fallback + int height = textureView.getHeight(); + int width = textureView.getWidth(); // switch (event.type) { @@ -175,15 +169,14 @@ public void onEvent(MediaPlayer.Event event) { eventObject.put("width", width); eventObject.put("speed", mediaPlayer.getRate()); eventObject.put("duration", mediaPlayer.getLength()); - eventObject.put("audioTracksCount", mediaPlayer.getAudioTracksCount()); - eventObject.put("activeAudioTrack", mediaPlayer.getAudioTrack()); - eventObject.put("spuTracksCount", mediaPlayer.getSpuTracksCount()); - eventObject.put("activeSpuTrack", mediaPlayer.getSpuTrack()); + eventObject.put("audioTracksCount", getAudioTracksCount()); + eventObject.put("activeAudioTrack", getAudioTrack()); + eventObject.put("spuTracksCount", getSpuTracksCount()); + eventObject.put("activeSpuTrack", getSpuTrack()); mediaEventSink.success(eventObject.clone()); break; case MediaPlayer.Event.Vout: -// mediaPlayer.getVLCVout().setWindowSize(textureView.getWidth(), textureView.getHeight()); break; case MediaPlayer.Event.EndReached: @@ -201,16 +194,15 @@ public void onEvent(MediaPlayer.Event event) { eventObject.put("position", mediaPlayer.getTime()); eventObject.put("duration", mediaPlayer.getLength()); eventObject.put("buffer", event.getBuffering()); - eventObject.put("audioTracksCount", mediaPlayer.getAudioTracksCount()); - eventObject.put("activeAudioTrack", mediaPlayer.getAudioTrack()); - eventObject.put("spuTracksCount", mediaPlayer.getSpuTracksCount()); - eventObject.put("activeSpuTrack", mediaPlayer.getSpuTrack()); + eventObject.put("audioTracksCount", getAudioTracksCount()); + eventObject.put("activeAudioTrack", getAudioTrack()); + eventObject.put("spuTracksCount", getSpuTracksCount()); + eventObject.put("activeSpuTrack", getSpuTrack()); eventObject.put("isPlaying", mediaPlayer.isPlaying()); mediaEventSink.success(eventObject); break; case MediaPlayer.Event.EncounteredError: - //mediaEventSink.error("500", "Player State got an error.", null); eventObject.put("event", "error"); mediaEventSink.success(eventObject); break; @@ -363,18 +355,18 @@ long getDuration() { int getSpuTracksCount() { if (mediaPlayer == null) return -1; - return mediaPlayer.getSpuTracksCount(); + IMedia.Track[] spuTracks = mediaPlayer.getTracks(IMedia.Track.Type.Text); + return spuTracks != null ? spuTracks.length : 0; } HashMap getSpuTracks() { if (mediaPlayer == null) return new HashMap(); - MediaPlayer.TrackDescription[] spuTracks = mediaPlayer.getSpuTracks(); + IMedia.Track[] spuTracks = mediaPlayer.getTracks(IMedia.Track.Type.Text); HashMap subtitles = new HashMap<>(); if (spuTracks != null) - for (MediaPlayer.TrackDescription trackDescription : spuTracks) { - if (trackDescription.id >= 0) - subtitles.put(trackDescription.id, trackDescription.name); + for (IMedia.Track trackDescription : spuTracks) { + subtitles.put(Integer.parseInt(trackDescription.id.replaceAll("\\D", "")), trackDescription.name); } return subtitles; } @@ -382,13 +374,28 @@ HashMap getSpuTracks() { void setSpuTrack(int index) { if (mediaPlayer == null) return; - mediaPlayer.setSpuTrack(index); + try { + + if ( index >= 0) { + // Select the track by its ID + mediaPlayer.selectTrack("spu/"+index); + } else if (index == -1) { + // Unselect all text tracks + mediaPlayer.unselectTrackType(IMedia.Track.Type.Text); + } + } catch (Exception e) { + Log.e(TAG, "setAudioTrack failed: " + e.getMessage()); + } } int getSpuTrack() { if (mediaPlayer == null) return -1; - return mediaPlayer.getSpuTrack(); + IMedia.Track track = mediaPlayer.getSelectedTrack(IMedia.Track.Type.Text); + if(track == null) { + return -1; + } + return Integer.parseInt(track.id.replaceAll("\\D", "")); } void setSpuDelay(long delay) { @@ -412,18 +419,19 @@ void addSubtitleTrack(String url, boolean isSelected) { int getAudioTracksCount() { if (mediaPlayer == null) return -1; - return mediaPlayer.getAudioTracksCount(); + IMedia.Track[] audioTracks = mediaPlayer.getTracks(IMedia.Track.Type.Audio); + return audioTracks != null ? audioTracks.length : 0; } HashMap getAudioTracks() { if (mediaPlayer == null) return new HashMap(); - MediaPlayer.TrackDescription[] audioTracks = mediaPlayer.getAudioTracks(); + IMedia.Track[] audioTracks = mediaPlayer.getTracks(IMedia.Track.Type.Audio); HashMap audios = new HashMap<>(); + Random random = new Random(); if (audioTracks != null) - for (MediaPlayer.TrackDescription trackDescription : audioTracks) { - if (trackDescription.id >= 0) - audios.put(trackDescription.id, trackDescription.name); + for (IMedia.Track trackDescription : audioTracks) { + audios.put(Integer.parseInt(trackDescription.id.replaceAll("\\D", "")), trackDescription.name); } return audios; } @@ -431,13 +439,28 @@ HashMap getAudioTracks() { void setAudioTrack(int index) { if (mediaPlayer == null) return; - mediaPlayer.setAudioTrack(index); + try { + + if ( index >= 0) { + // Select the track by its ID + mediaPlayer.selectTrack("audio/"+index); + } else if (index == -1) { + // Unselect all audio tracks + mediaPlayer.unselectTrackType(IMedia.Track.Type.Audio); + } + } catch (Exception e) { + Log.e(TAG, "setAudioTrack failed: " + e.getMessage()); + } } int getAudioTrack() { if (mediaPlayer == null) return -1; - return mediaPlayer.getAudioTrack(); + IMedia.Track track = mediaPlayer.getSelectedTrack(IMedia.Track.Type.Audio); + if(track == null) { + return -1; + } + return Integer.parseInt(track.id.replaceAll("\\D", "")); } void setAudioDelay(long delay) { @@ -461,18 +484,19 @@ void addAudioTrack(String url, boolean isSelected) { int getVideoTracksCount() { if (mediaPlayer == null) return -1; - return mediaPlayer.getVideoTracksCount(); + IMedia.Track[] videoTracks = mediaPlayer.getTracks(IMedia.Track.Type.Video); + return videoTracks != null ? videoTracks.length : 0; + } HashMap getVideoTracks() { if (mediaPlayer == null) return new HashMap(); - MediaPlayer.TrackDescription[] videoTracks = mediaPlayer.getVideoTracks(); + IMedia.Track[] videoTracks = mediaPlayer.getTracks(IMedia.Track.Type.Video); HashMap videos = new HashMap<>(); if (videoTracks != null) - for (MediaPlayer.TrackDescription trackDescription : videoTracks) { - if (trackDescription.id >= 0) - videos.put(trackDescription.id, trackDescription.name); + for (IMedia.Track trackDescription : videoTracks) { + videos.put(Integer.parseInt(trackDescription.id.replaceAll("\\D", "")), trackDescription.name); } return videos; } @@ -480,13 +504,29 @@ HashMap getVideoTracks() { void setVideoTrack(int index) { if (mediaPlayer == null) return; - mediaPlayer.setVideoTrack(index); + try { + + if ( index >= 0) { + // Select the track by its ID + mediaPlayer.selectTrack("video/"+index); + } else if (index == -1) { + // Unselect all video tracks + mediaPlayer.unselectTrackType(IMedia.Track.Type.Video); + } + } catch (Exception e) { + Log.e(TAG, "setAudioTrack failed: " + e.getMessage()); + } } int getVideoTrack() { if (mediaPlayer == null) return -1; - return mediaPlayer.getVideoTrack(); + IMedia.Track track = mediaPlayer.getSelectedTrack(IMedia.Track.Type.Video); + if(track == null) { + return -1; + } + return Integer.parseInt(track.id.replaceAll("\\D", "")); + } void setVideoScale(float scale) { @@ -516,14 +556,9 @@ String getVideoAspectRatio() { void startRendererScanning(String rendererService) { if (libVLC == null) return; - // - // android -> chromecast -> "microdns" - // ios -> chromecast -> "Bonjour_renderer" - // rendererDiscoverers = new ArrayList<>(); rendererItems = new ArrayList<>(); // - //todo: check for duplicates RendererDiscoverer.Description[] renderers = RendererDiscoverer.list(libVLC); for (RendererDiscoverer.Description renderer : renderers) { RendererDiscoverer rendererDiscoverer = new RendererDiscoverer(libVLC, renderer.name); @@ -560,9 +595,7 @@ public void onEvent(RendererDiscoverer.Event event) { } catch (Exception ex) { rendererDiscoverer.setEventListener(null); } - } - } void stopRendererScanning() { @@ -578,7 +611,6 @@ void stopRendererScanning() { rendererDiscoverers.clear(); rendererItems.clear(); // - // return back to default output if (mediaPlayer != null) { mediaPlayer.pause(); mediaPlayer.setRenderer(null); @@ -615,7 +647,6 @@ void castToRenderer(String rendererDevice) { if (mediaPlayer.isPlaying()) mediaPlayer.pause(); - // if you set it to null, it will start to render normally (i.e. locally) again RendererItem rendererItem = null; for (RendererItem item : rendererItems) { if (item.name.equals(rendererDevice)) { @@ -625,14 +656,13 @@ void castToRenderer(String rendererDevice) { } mediaPlayer.setRenderer(rendererItem); - // start the playback mediaPlayer.play(); } @Nullable String getSnapshot() { if (textureView == null) return null; - + if (!mediaPlayer.isPlaying()) return null; Bitmap bitmap = textureView.getBitmap(); if (bitmap == null) return null; @@ -642,12 +672,12 @@ String getSnapshot() { } Boolean startRecording(String directory) { - return mediaPlayer.record(directory); + return mediaPlayer.record(directory, false); } Boolean stopRecording() { if (mediaPlayer == null) return true; - return mediaPlayer.record(null); + return mediaPlayer.record(null, false); } private void log(String message) { @@ -655,5 +685,4 @@ private void log(String message) { Log.d(TAG, message); } } - -} +} \ No newline at end of file diff --git a/flutter_vlc_player/android/src/main/java/software/solid/fluttervlcplayer/FlutterVlcPlayerBuilder.java b/flutter_vlc_player/android/src/main/java/software/solid/fluttervlcplayer/FlutterVlcPlayerBuilder.java index 4d83633d..d2cf1a4b 100644 --- a/flutter_vlc_player/android/src/main/java/software/solid/fluttervlcplayer/FlutterVlcPlayerBuilder.java +++ b/flutter_vlc_player/android/src/main/java/software/solid/fluttervlcplayer/FlutterVlcPlayerBuilder.java @@ -1,20 +1,20 @@ package software.solid.fluttervlcplayer; import android.content.Context; +import android.content.res.AssetFileDescriptor; +import android.content.res.AssetManager; +import android.os.Build; import android.util.LongSparseArray; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; +import androidx.annotation.RequiresApi; +import java.io.File; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; import io.flutter.plugin.common.BinaryMessenger; import io.flutter.view.TextureRegistry; import software.solid.fluttervlcplayer.Enums.DataSourceType; -import software.solid.fluttervlcplayer.Enums.HwAcc; public class FlutterVlcPlayerBuilder implements Messages.VlcPlayerApi { @@ -23,12 +23,12 @@ public class FlutterVlcPlayerBuilder implements Messages.VlcPlayerApi { private FlutterVlcPlayerFactory.KeyForAssetAndPackageName keyForAssetAndPackageName; void startListening(BinaryMessenger messenger) { - Messages.VlcPlayerApi.setUp(messenger, this); + Messages.VlcPlayerApi.setup(messenger, this); } void stopListening(BinaryMessenger messenger) { // disposeAllPlayers(); - Messages.VlcPlayerApi.setUp(messenger, null); + Messages.VlcPlayerApi.setup(messenger, null); } FlutterVlcPlayer build(int viewId, Context context, BinaryMessenger binaryMessenger, TextureRegistry textureRegistry, FlutterVlcPlayerFactory.KeyForAssetFn keyForAsset, FlutterVlcPlayerFactory.KeyForAssetAndPackageName keyForAssetAndPackageName) { @@ -45,14 +45,7 @@ private void disposeAllPlayers() { vlcPlayers.valueAt(i).dispose(); } vlcPlayers.clear(); - } - - private FlutterVlcPlayer getPlayer(@NonNull Long playerId) { - if (vlcPlayers.get(playerId) == null) { - throw new Messages.FlutterError("player_not_found", "Player with id " + playerId + " not found", null); - } - return vlcPlayers.get(playerId); } @Override @@ -61,39 +54,45 @@ public void initialize() { } @Override - public void create(@NonNull Messages.CreateMessage arg) { - FlutterVlcPlayer player = getPlayer(arg.getPlayerId()); - - ArrayList options = new ArrayList<>(); - if (!arg.getOptions().isEmpty()) - options.addAll(arg.getOptions()); + public void create(Messages.CreateMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); + // + ArrayList options = new ArrayList(); + if (arg.getOptions().size() > 0) + for (Object option : arg.getOptions()) + options.add((String) option); player.initialize(options); - - var mediaMessage = new Messages.SetMediaMessage(); - mediaMessage.setPlayerId(arg.getPlayerId()); - mediaMessage.setUri(arg.getUri()); - mediaMessage.setType(arg.getType()); - mediaMessage.setAutoPlay(arg.getAutoPlay()); - mediaMessage.setHwAcc(arg.getHwAcc()); - mediaMessage.setPackageName(arg.getPackageName()); - - setStreamUrl(mediaMessage); + // + String mediaUrl; + boolean isAssetUrl; + if (arg.getType() == DataSourceType.ASSET.getNumericType()) { + String assetLookupKey; + if (arg.getPackageName() != null) + assetLookupKey = keyForAssetAndPackageName.get(arg.getUri(), arg.getPackageName()); + else + assetLookupKey = keyForAsset.get(arg.getUri()); + mediaUrl = assetLookupKey; + isAssetUrl = true; + } else { + mediaUrl = arg.getUri(); + isAssetUrl = false; + } + player.setStreamUrl(mediaUrl, isAssetUrl, arg.getAutoPlay(), arg.getHwAcc()); } @Override - public void dispose(@NonNull Long playerId) { - FlutterVlcPlayer player = getPlayer(playerId); - player.dispose(); - vlcPlayers.remove(playerId); + public void dispose(Messages.ViewMessage arg) { + // the player has been already disposed by platform we just remove it from players list + vlcPlayers.remove(arg.getViewId()); } @Override - public void setStreamUrl(@NonNull Messages.SetMediaMessage arg) { - var player = getPlayer(arg.getPlayerId()); - - String mediaUrl; + public void setStreamUrl(Messages.SetMediaMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); + // boolean isAssetUrl; - if (arg.getType() == DataSourceType.ASSET.ordinal()) { + String mediaUrl; + if (arg.getType() == DataSourceType.ASSET.getNumericType()) { String assetLookupKey; if (arg.getPackageName() != null) assetLookupKey = keyForAssetAndPackageName.get(arg.getUri(), arg.getPackageName()); @@ -105,308 +104,314 @@ public void setStreamUrl(@NonNull Messages.SetMediaMessage arg) { mediaUrl = arg.getUri(); isAssetUrl = false; } - - if (arg.getHwAcc() == null) { - arg.setHwAcc((long) HwAcc.AUTOMATIC.ordinal()); - } - player.setStreamUrl(mediaUrl, isAssetUrl, arg.getAutoPlay(), arg.getHwAcc()); } @Override - public void play(@NonNull Long playerId) { - var player = getPlayer(playerId); + public void play(Messages.ViewMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); player.play(); } @Override - public void pause(@NonNull Long playerId) { - var player = getPlayer(playerId); + public void pause(Messages.ViewMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); player.pause(); } @Override - public void stop(@NonNull Long playerId) { - var player = getPlayer(playerId); + public void stop(Messages.ViewMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); player.stop(); } - @NonNull @Override - public Boolean isPlaying(@NonNull Long playerId) { - return getPlayer(playerId).isPlaying(); + public Messages.BooleanMessage isPlaying(Messages.ViewMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); + Messages.BooleanMessage message = new Messages.BooleanMessage(); + message.setResult(player.isPlaying()); + return message; } - @NonNull @Override - public Boolean isSeekable(@NonNull Long playerId) { - return getPlayer(playerId).isSeekable(); + public Messages.BooleanMessage isSeekable(Messages.ViewMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); + Messages.BooleanMessage message = new Messages.BooleanMessage(); + message.setResult(player.isSeekable()); + return message; } @Override - public void setLooping(@NonNull Long playerId, @NonNull Boolean isLooping) { - var player = getPlayer(playerId); - player.setLooping(isLooping); + public void setLooping(Messages.LoopingMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); + player.setLooping(arg.getIsLooping()); } @Override - public void seekTo(@NonNull Long playerId, @NonNull Long position) { - var player = getPlayer(playerId); - player.seekTo(position); + public void seekTo(Messages.PositionMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); + player.seekTo(arg.getPosition().intValue()); } - @NonNull @Override - public Long position(@NonNull Long playerId) { - return getPlayer(playerId).getPosition(); + public Messages.PositionMessage position(Messages.ViewMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); + Messages.PositionMessage message = new Messages.PositionMessage(); + message.setPosition(player.getPosition()); + return message; } - @NonNull @Override - public Long duration(@NonNull Long playerId) { - return getPlayer(playerId).getDuration(); + public Messages.DurationMessage duration(Messages.ViewMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); + Messages.DurationMessage message = new Messages.DurationMessage(); + message.setDuration(player.getDuration()); + return message; } - @NonNull @Override - public Long getVolume(@NonNull Long playerId) { - return (long) getPlayer(playerId).getVolume(); + public void setVolume(Messages.VolumeMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); + player.setVolume(arg.getVolume()); } @Override - public void setVolume(@NonNull Long playerId, @NonNull Long volume) { - var player = getPlayer(playerId); - player.setVolume(volume.intValue()); + public Messages.VolumeMessage getVolume(Messages.ViewMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); + Messages.VolumeMessage message = new Messages.VolumeMessage(); + message.setVolume((long) player.getVolume()); + return message; } @Override - public void setPlaybackSpeed(@NonNull Long playerId, @NonNull Double speed) { - var player = getPlayer(playerId); - player.setPlaybackSpeed(speed); + public void setPlaybackSpeed(Messages.PlaybackSpeedMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); + player.setPlaybackSpeed(arg.getSpeed()); } - @NonNull @Override - public Double getPlaybackSpeed(@NonNull Long playerId) { - return (double) getPlayer(playerId).getPlaybackSpeed(); + public Messages.PlaybackSpeedMessage getPlaybackSpeed(Messages.ViewMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); + Messages.PlaybackSpeedMessage message = new Messages.PlaybackSpeedMessage(); + message.setSpeed((double) player.getPlaybackSpeed()); + return message; } - @Nullable @Override - public String takeSnapshot(@NonNull Long playerId) { - return getPlayer(playerId).getSnapshot(); + public Messages.SnapshotMessage takeSnapshot(Messages.ViewMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); + Messages.SnapshotMessage message = new Messages.SnapshotMessage(); + message.setSnapshot(player.getSnapshot()); + return message; } - // Subtitles - - @NonNull @Override - public Long getSpuTracksCount(@NonNull Long playerId) { - return (long) getPlayer(playerId).getSpuTracksCount(); + public Messages.TrackCountMessage getSpuTracksCount(Messages.ViewMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); + Messages.TrackCountMessage message = new Messages.TrackCountMessage(); + message.setCount((long) player.getSpuTracksCount()); + return message; } - @NonNull @Override - public Map getSpuTracks(@NonNull Long playerId) { - Map tracks = getPlayer(playerId).getSpuTracks(); - - Map convertedTracks = new HashMap<>(); - for (Map.Entry entry : tracks.entrySet()) { - convertedTracks.put(entry.getKey().longValue(), entry.getValue()); - } - - return convertedTracks; + public Messages.SpuTracksMessage getSpuTracks(Messages.ViewMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); + Messages.SpuTracksMessage message = new Messages.SpuTracksMessage(); + message.setSubtitles(player.getSpuTracks()); + return message; } - @NonNull @Override - public Long getSpuTrack(@NonNull Long playerId) { - return (long) getPlayer(playerId).getSpuTrack(); + public void setSpuTrack(Messages.SpuTrackMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); + player.setSpuTrack(arg.getSpuTrackNumber().intValue()); } @Override - public void setSpuTrack(@NonNull Long playerId, @NonNull Long spuTrackNumber) { - var player = getPlayer(playerId); - player.setSpuTrack(spuTrackNumber.intValue()); + public Messages.SpuTrackMessage getSpuTrack(Messages.ViewMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); + Messages.SpuTrackMessage message = new Messages.SpuTrackMessage(); + message.setSpuTrackNumber((long) player.getSpuTrack()); + return message; } @Override - public void setSpuDelay(@NonNull Long playerId, @NonNull Long delay) { - var player = getPlayer(playerId); - player.setSpuDelay(delay.intValue()); + public void setSpuDelay(Messages.DelayMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); + player.setSpuDelay(arg.getDelay()); } - @NonNull @Override - public Long getSpuDelay(@NonNull Long playerId) { - return getPlayer(playerId).getSpuDelay(); + public Messages.DelayMessage getSpuDelay(Messages.ViewMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); + Messages.DelayMessage message = new Messages.DelayMessage(); + message.setDelay(player.getSpuDelay()); + return message; } @Override public void addSubtitleTrack(Messages.AddSubtitleMessage arg) { - var player = getPlayer(arg.getPlayerId()); + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); player.addSubtitleTrack(arg.getUri(), arg.getIsSelected()); } - // Audio tracks - - @NonNull @Override - public Long getAudioTracksCount(@NonNull Long playerId) { - return (long) getPlayer(playerId).getAudioTracksCount(); + public Messages.TrackCountMessage getAudioTracksCount(Messages.ViewMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); + Messages.TrackCountMessage message = new Messages.TrackCountMessage(); + message.setCount((long) player.getAudioTracksCount()); + return message; } - @NonNull @Override - public Map getAudioTracks(@NonNull Long playerId) { - Map tracks = getPlayer(playerId).getAudioTracks(); - - Map convertedTracks = new HashMap<>(); - for (Map.Entry entry : tracks.entrySet()) { - convertedTracks.put(entry.getKey().longValue(), entry.getValue()); - } - - return convertedTracks; + public Messages.AudioTracksMessage getAudioTracks(Messages.ViewMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); + Messages.AudioTracksMessage message = new Messages.AudioTracksMessage(); + message.setAudios(player.getAudioTracks()); + return message; } @Override - public void setAudioTrack(@NonNull Long playerId, @NonNull Long audioTrackNumber) { - var player = getPlayer(playerId); - player.setAudioTrack(audioTrackNumber.intValue()); + public void setAudioTrack(Messages.AudioTrackMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); + player.setAudioTrack(arg.getAudioTrackNumber().intValue()); } - @NonNull @Override - public Long getAudioTrack(@NonNull Long playerId) { - return (long) getPlayer(playerId).getAudioTrack(); + public Messages.AudioTrackMessage getAudioTrack(Messages.ViewMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); + Messages.AudioTrackMessage message = new Messages.AudioTrackMessage(); + message.setAudioTrackNumber((long) player.getAudioTrack()); + return message; } @Override - public void setAudioDelay(@NonNull Long playerId, @NonNull Long delay) { - var player = getPlayer(playerId); - player.setAudioDelay(delay); + public void setAudioDelay(Messages.DelayMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); + player.setAudioDelay(arg.getDelay()); } - @NonNull @Override - public Long getAudioDelay(@NonNull Long playerId) { - return getPlayer(playerId).getAudioDelay(); + public Messages.DelayMessage getAudioDelay(Messages.ViewMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); + Messages.DelayMessage message = new Messages.DelayMessage(); + message.setDelay(player.getAudioDelay()); + return message; } @Override public void addAudioTrack(Messages.AddAudioMessage arg) { - var player = getPlayer(arg.getPlayerId()); + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); player.addAudioTrack(arg.getUri(), arg.getIsSelected()); } - // Video tracks - - - @NonNull @Override - public Long getVideoTracksCount(@NonNull Long playerId) { - return (long) getPlayer(playerId).getVideoTracksCount(); + public Messages.TrackCountMessage getVideoTracksCount(Messages.ViewMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); + Messages.TrackCountMessage message = new Messages.TrackCountMessage(); + message.setCount((long) player.getVideoTracksCount()); + return message; } - @NonNull @Override - public Map getVideoTracks(@NonNull Long playerId) { - Map tracks = getPlayer(playerId).getVideoTracks(); - - Map convertedTracks = new HashMap<>(); - for (Map.Entry entry : tracks.entrySet()) { - convertedTracks.put(entry.getKey().longValue(), entry.getValue()); - } - - return convertedTracks; + public Messages.VideoTracksMessage getVideoTracks(Messages.ViewMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); + Messages.VideoTracksMessage message = new Messages.VideoTracksMessage(); + message.setVideos(player.getVideoTracks()); + return message; } @Override - public void setVideoTrack(@NonNull Long playerId, @NonNull Long videoTrackNumber) { - var player = getPlayer(playerId); - player.setVideoTrack(videoTrackNumber.intValue()); + public void setVideoTrack(Messages.VideoTrackMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); + player.setVideoTrack(arg.getVideoTrackNumber().intValue()); } - @NonNull @Override - public Long getVideoTrack(@NonNull Long playerId) { - return (long) getPlayer(playerId).getVideoTrack(); + public Messages.VideoTrackMessage getVideoTrack(Messages.ViewMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); + Messages.VideoTrackMessage message = new Messages.VideoTrackMessage(); + message.setVideoTrackNumber((long) player.getVideoTrack()); + return null; } - // Video properties - - @Override - public void setVideoScale(@NonNull Long playerId, @NonNull Double scale) { - var player = getPlayer(playerId); - player.setVideoScale(scale.floatValue()); + public void setVideoScale(Messages.VideoScaleMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); + player.setVideoScale(arg.getScale().floatValue()); } - @NonNull @Override - public Double getVideoScale(@NonNull Long playerId) { - return (double) getPlayer(playerId).getVideoScale(); + public Messages.VideoScaleMessage getVideoScale(Messages.ViewMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); + Messages.VideoScaleMessage message = new Messages.VideoScaleMessage(); + message.setScale((double) player.getVideoScale()); + return message; } @Override - public void setVideoAspectRatio(@NonNull Long playerId, @NonNull String aspectRatio) { - var player = getPlayer(playerId); - player.setVideoAspectRatio(aspectRatio); + public void setVideoAspectRatio(Messages.VideoAspectRatioMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); + player.setVideoAspectRatio(arg.getAspectRatio()); } - @NonNull @Override - public String getVideoAspectRatio(@NonNull Long playerId) { - return getPlayer(playerId).getVideoAspectRatio(); + public Messages.VideoAspectRatioMessage getVideoAspectRatio(Messages.ViewMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); + Messages.VideoAspectRatioMessage message = new Messages.VideoAspectRatioMessage(); + message.setAspectRatio(player.getVideoAspectRatio()); + return message; } - // Cast - - - @NonNull @Override - public List getAvailableRendererServices(@NonNull Long playerId) { - return getPlayer(playerId).getAvailableRendererServices(); + public Messages.RendererServicesMessage getAvailableRendererServices(Messages.ViewMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); + Messages.RendererServicesMessage message = new Messages.RendererServicesMessage(); + message.setServices(player.getAvailableRendererServices()); + return message; } @Override - public void startRendererScanning(@NonNull Long playerId, @NonNull String rendererService) { - var player = getPlayer(playerId); - player.startRendererScanning(rendererService); + public void startRendererScanning(Messages.RendererScanningMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); + player.startRendererScanning(arg.getRendererService()); } @Override - public void stopRendererScanning(@NonNull Long playerId) { - var player = getPlayer(playerId); + public void stopRendererScanning(Messages.ViewMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); player.stopRendererScanning(); } - @NonNull @Override - public Map getRendererDevices(@NonNull Long playerId) { - return getPlayer(playerId).getRendererDevices(); + public Messages.RendererDevicesMessage getRendererDevices(Messages.ViewMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); + Messages.RendererDevicesMessage message = new Messages.RendererDevicesMessage(); + message.setRendererDevices(player.getRendererDevices()); + return message; } @Override - public void castToRenderer(@NonNull Long playerId, @NonNull String rendererId) { - var player = getPlayer(playerId); - player.castToRenderer(rendererId); + public void castToRenderer(Messages.RenderDeviceMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); + player.castToRenderer(arg.getRendererDevice()); } - // Recording - - - @NonNull @Override - public Boolean startRecording(@NonNull Long playerId, @NonNull String saveDirectory) { - var player = getPlayer(playerId); - return player.startRecording(saveDirectory); + public Messages.BooleanMessage startRecording(Messages.RecordMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); + Boolean result = player.startRecording(arg.getSaveDirectory()); + Messages.BooleanMessage message = new Messages.BooleanMessage(); + message.setResult(result); + return message; } - @NonNull @Override - public Boolean stopRecording(@NonNull Long playerId) { - var player = getPlayer(playerId); - return player.stopRecording(); + public Messages.BooleanMessage stopRecording(Messages.ViewMessage arg) { + FlutterVlcPlayer player = vlcPlayers.get(arg.getViewId()); + Boolean result = player.stopRecording(); + Messages.BooleanMessage message = new Messages.BooleanMessage(); + message.setResult(result); + return message; } } diff --git a/flutter_vlc_player/android/src/main/java/software/solid/fluttervlcplayer/FlutterVlcPlayerFactory.java b/flutter_vlc_player/android/src/main/java/software/solid/fluttervlcplayer/FlutterVlcPlayerFactory.java index da8b1221..4c7b3904 100644 --- a/flutter_vlc_player/android/src/main/java/software/solid/fluttervlcplayer/FlutterVlcPlayerFactory.java +++ b/flutter_vlc_player/android/src/main/java/software/solid/fluttervlcplayer/FlutterVlcPlayerFactory.java @@ -1,8 +1,9 @@ package software.solid.fluttervlcplayer; import android.content.Context; +import android.util.LongSparseArray; -import androidx.annotation.NonNull; +import java.util.Map; import io.flutter.plugin.common.BinaryMessenger; import io.flutter.plugin.common.StandardMessageCodec; @@ -25,7 +26,7 @@ public interface KeyForAssetAndPackageName { private final KeyForAssetFn keyForAsset; private final KeyForAssetAndPackageName keyForAssetAndPackageName; // - private final FlutterVlcPlayerBuilder flutterVlcPlayerBuilder; + private FlutterVlcPlayerBuilder flutterVlcPlayerBuilder; public FlutterVlcPlayerFactory(BinaryMessenger messenger, TextureRegistry textureRegistry, KeyForAssetFn keyForAsset, KeyForAssetAndPackageName keyForAssetAndPackageName) { super(StandardMessageCodec.INSTANCE); @@ -37,7 +38,6 @@ public FlutterVlcPlayerFactory(BinaryMessenger messenger, TextureRegistry textur flutterVlcPlayerBuilder = new FlutterVlcPlayerBuilder(); } - @NonNull @Override public PlatformView create(Context context, int viewId, Object args) { // Map params = (Map) args; diff --git a/flutter_vlc_player/android/src/main/java/software/solid/fluttervlcplayer/Messages.java b/flutter_vlc_player/android/src/main/java/software/solid/fluttervlcplayer/Messages.java index 67cab626..d4794e2f 100644 --- a/flutter_vlc_player/android/src/main/java/software/solid/fluttervlcplayer/Messages.java +++ b/flutter_vlc_player/android/src/main/java/software/solid/fluttervlcplayer/Messages.java @@ -1,2095 +1,1849 @@ -// Autogenerated from Pigeon (v25.2.0), do not edit directly. +// Autogenerated from Pigeon (v0.2.1), do not edit directly. // See also: https://pub.dev/packages/pigeon package software.solid.fluttervlcplayer; -import static java.lang.annotation.ElementType.METHOD; -import static java.lang.annotation.RetentionPolicy.CLASS; - -import android.util.Log; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; import io.flutter.plugin.common.BasicMessageChannel; import io.flutter.plugin.common.BinaryMessenger; -import io.flutter.plugin.common.MessageCodec; import io.flutter.plugin.common.StandardMessageCodec; -import java.io.ByteArrayOutputStream; -import java.lang.annotation.Retention; -import java.lang.annotation.Target; -import java.nio.ByteBuffer; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Objects; +import java.util.HashMap; /** Generated class from Pigeon. */ -@SuppressWarnings({"unused", "unchecked", "CodeBlock2Expr", "RedundantSuppression", "serial"}) +@SuppressWarnings({"unused", "unchecked", "CodeBlock2Expr", "RedundantSuppression"}) public class Messages { - /** Error class for passing custom error details to Flutter via a thrown PlatformException. */ - public static class FlutterError extends RuntimeException { - - /** The error code. */ - public final String code; - - /** The error details. Must be a datatype supported by the api codec. */ - public final Object details; - - public FlutterError(@NonNull String code, @Nullable String message, @Nullable Object details) - { - super(message); - this.code = code; - this.details = details; + /** Generated class from Pigeon that represents data sent in messages. */ + public static class CreateMessage { + private Long viewId; + public Long getViewId() { return viewId; } + public void setViewId(Long setterArg) { this.viewId = setterArg; } + + private String uri; + public String getUri() { return uri; } + public void setUri(String setterArg) { this.uri = setterArg; } + + private Long type; + public Long getType() { return type; } + public void setType(Long setterArg) { this.type = setterArg; } + + private String packageName; + public String getPackageName() { return packageName; } + public void setPackageName(String setterArg) { this.packageName = setterArg; } + + private Boolean autoPlay; + public Boolean getAutoPlay() { return autoPlay; } + public void setAutoPlay(Boolean setterArg) { this.autoPlay = setterArg; } + + private Long hwAcc; + public Long getHwAcc() { return hwAcc; } + public void setHwAcc(Long setterArg) { this.hwAcc = setterArg; } + + private List options; + public List getOptions() { return options; } + public void setOptions(List setterArg) { this.options = setterArg; } + + Map toMap() { + Map toMapResult = new HashMap<>(); + toMapResult.put("viewId", viewId); + toMapResult.put("uri", uri); + toMapResult.put("type", type); + toMapResult.put("packageName", packageName); + toMapResult.put("autoPlay", autoPlay); + toMapResult.put("hwAcc", hwAcc); + toMapResult.put("options", options); + return toMapResult; + } + static CreateMessage fromMap(Map map) { + CreateMessage fromMapResult = new CreateMessage(); + Object viewId = map.get("viewId"); + fromMapResult.viewId = (viewId == null) ? null : ((viewId instanceof Integer) ? (Integer)viewId : (Long)viewId); + Object uri = map.get("uri"); + fromMapResult.uri = (String)uri; + Object type = map.get("type"); + fromMapResult.type = (type == null) ? null : ((type instanceof Integer) ? (Integer)type : (Long)type); + Object packageName = map.get("packageName"); + fromMapResult.packageName = (String)packageName; + Object autoPlay = map.get("autoPlay"); + fromMapResult.autoPlay = (Boolean)autoPlay; + Object hwAcc = map.get("hwAcc"); + fromMapResult.hwAcc = (hwAcc == null) ? null : ((hwAcc instanceof Integer) ? (Integer)hwAcc : (Long)hwAcc); + Object options = map.get("options"); + fromMapResult.options = (List)options; + return fromMapResult; } } - @NonNull - protected static ArrayList wrapError(@NonNull Throwable exception) { - ArrayList errorList = new ArrayList<>(3); - if (exception instanceof FlutterError) { - FlutterError error = (FlutterError) exception; - errorList.add(error.code); - errorList.add(error.getMessage()); - errorList.add(error.details); - } else { - errorList.add(exception.toString()); - errorList.add(exception.getClass().getSimpleName()); - errorList.add( - "Cause: " + exception.getCause() + ", Stacktrace: " + Log.getStackTraceString(exception)); + /** Generated class from Pigeon that represents data sent in messages. */ + public static class ViewMessage { + private Long viewId; + public Long getViewId() { return viewId; } + public void setViewId(Long setterArg) { this.viewId = setterArg; } + + Map toMap() { + Map toMapResult = new HashMap<>(); + toMapResult.put("viewId", viewId); + return toMapResult; + } + static ViewMessage fromMap(Map map) { + ViewMessage fromMapResult = new ViewMessage(); + Object viewId = map.get("viewId"); + fromMapResult.viewId = (viewId == null) ? null : ((viewId instanceof Integer) ? (Integer)viewId : (Long)viewId); + return fromMapResult; } - return errorList; } - @Target(METHOD) - @Retention(CLASS) - @interface CanIgnoreReturnValue {} - /** Generated class from Pigeon that represents data sent in messages. */ - public static final class CreateMessage { - private @NonNull Long playerId; - - public @NonNull Long getPlayerId() { - return playerId; - } - - public void setPlayerId(@NonNull Long setterArg) { - if (setterArg == null) { - throw new IllegalStateException("Nonnull field \"playerId\" is null."); - } - this.playerId = setterArg; - } - - private @NonNull String uri; - - public @NonNull String getUri() { - return uri; - } - - public void setUri(@NonNull String setterArg) { - if (setterArg == null) { - throw new IllegalStateException("Nonnull field \"uri\" is null."); - } - this.uri = setterArg; - } - - private @NonNull Long type; - - public @NonNull Long getType() { - return type; - } - - public void setType(@NonNull Long setterArg) { - if (setterArg == null) { - throw new IllegalStateException("Nonnull field \"type\" is null."); - } - this.type = setterArg; - } - - private @Nullable String packageName; - - public @Nullable String getPackageName() { - return packageName; - } - - public void setPackageName(@Nullable String setterArg) { - this.packageName = setterArg; - } - - private @NonNull Boolean autoPlay; - - public @NonNull Boolean getAutoPlay() { - return autoPlay; - } - - public void setAutoPlay(@NonNull Boolean setterArg) { - if (setterArg == null) { - throw new IllegalStateException("Nonnull field \"autoPlay\" is null."); - } - this.autoPlay = setterArg; - } - - private @Nullable Long hwAcc; - - public @Nullable Long getHwAcc() { - return hwAcc; - } - - public void setHwAcc(@Nullable Long setterArg) { - this.hwAcc = setterArg; - } - - private @NonNull List options; - - public @NonNull List getOptions() { - return options; - } - - public void setOptions(@NonNull List setterArg) { - if (setterArg == null) { - throw new IllegalStateException("Nonnull field \"options\" is null."); - } - this.options = setterArg; - } - - /** Constructor is non-public to enforce null safety; use Builder. */ - CreateMessage() {} - - @Override - public boolean equals(Object o) { - if (this == o) { return true; } - if (o == null || getClass() != o.getClass()) { return false; } - CreateMessage that = (CreateMessage) o; - return playerId.equals(that.playerId) && uri.equals(that.uri) && type.equals(that.type) && Objects.equals(packageName, that.packageName) && autoPlay.equals(that.autoPlay) && Objects.equals(hwAcc, that.hwAcc) && options.equals(that.options); - } - - @Override - public int hashCode() { - return Objects.hash(playerId, uri, type, packageName, autoPlay, hwAcc, options); - } - - public static final class Builder { - - private @Nullable Long playerId; - - @CanIgnoreReturnValue - public @NonNull Builder setPlayerId(@NonNull Long setterArg) { - this.playerId = setterArg; - return this; - } - - private @Nullable String uri; - - @CanIgnoreReturnValue - public @NonNull Builder setUri(@NonNull String setterArg) { - this.uri = setterArg; - return this; - } - - private @Nullable Long type; - - @CanIgnoreReturnValue - public @NonNull Builder setType(@NonNull Long setterArg) { - this.type = setterArg; - return this; - } - - private @Nullable String packageName; - - @CanIgnoreReturnValue - public @NonNull Builder setPackageName(@Nullable String setterArg) { - this.packageName = setterArg; - return this; - } - - private @Nullable Boolean autoPlay; - - @CanIgnoreReturnValue - public @NonNull Builder setAutoPlay(@NonNull Boolean setterArg) { - this.autoPlay = setterArg; - return this; - } - - private @Nullable Long hwAcc; - - @CanIgnoreReturnValue - public @NonNull Builder setHwAcc(@Nullable Long setterArg) { - this.hwAcc = setterArg; - return this; - } - - private @Nullable List options; - - @CanIgnoreReturnValue - public @NonNull Builder setOptions(@NonNull List setterArg) { - this.options = setterArg; - return this; - } - - public @NonNull CreateMessage build() { - CreateMessage pigeonReturn = new CreateMessage(); - pigeonReturn.setPlayerId(playerId); - pigeonReturn.setUri(uri); - pigeonReturn.setType(type); - pigeonReturn.setPackageName(packageName); - pigeonReturn.setAutoPlay(autoPlay); - pigeonReturn.setHwAcc(hwAcc); - pigeonReturn.setOptions(options); - return pigeonReturn; - } - } - - @NonNull - ArrayList toList() { - ArrayList toListResult = new ArrayList<>(7); - toListResult.add(playerId); - toListResult.add(uri); - toListResult.add(type); - toListResult.add(packageName); - toListResult.add(autoPlay); - toListResult.add(hwAcc); - toListResult.add(options); - return toListResult; - } - - static @NonNull CreateMessage fromList(@NonNull ArrayList pigeonVar_list) { - CreateMessage pigeonResult = new CreateMessage(); - Object playerId = pigeonVar_list.get(0); - pigeonResult.setPlayerId((Long) playerId); - Object uri = pigeonVar_list.get(1); - pigeonResult.setUri((String) uri); - Object type = pigeonVar_list.get(2); - pigeonResult.setType((Long) type); - Object packageName = pigeonVar_list.get(3); - pigeonResult.setPackageName((String) packageName); - Object autoPlay = pigeonVar_list.get(4); - pigeonResult.setAutoPlay((Boolean) autoPlay); - Object hwAcc = pigeonVar_list.get(5); - pigeonResult.setHwAcc((Long) hwAcc); - Object options = pigeonVar_list.get(6); - pigeonResult.setOptions((List) options); - return pigeonResult; + public static class SetMediaMessage { + private Long viewId; + public Long getViewId() { return viewId; } + public void setViewId(Long setterArg) { this.viewId = setterArg; } + + private String uri; + public String getUri() { return uri; } + public void setUri(String setterArg) { this.uri = setterArg; } + + private Long type; + public Long getType() { return type; } + public void setType(Long setterArg) { this.type = setterArg; } + + private String packageName; + public String getPackageName() { return packageName; } + public void setPackageName(String setterArg) { this.packageName = setterArg; } + + private Boolean autoPlay; + public Boolean getAutoPlay() { return autoPlay; } + public void setAutoPlay(Boolean setterArg) { this.autoPlay = setterArg; } + + private Long hwAcc; + public Long getHwAcc() { return hwAcc; } + public void setHwAcc(Long setterArg) { this.hwAcc = setterArg; } + + Map toMap() { + Map toMapResult = new HashMap<>(); + toMapResult.put("viewId", viewId); + toMapResult.put("uri", uri); + toMapResult.put("type", type); + toMapResult.put("packageName", packageName); + toMapResult.put("autoPlay", autoPlay); + toMapResult.put("hwAcc", hwAcc); + return toMapResult; + } + static SetMediaMessage fromMap(Map map) { + SetMediaMessage fromMapResult = new SetMediaMessage(); + Object viewId = map.get("viewId"); + fromMapResult.viewId = (viewId == null) ? null : ((viewId instanceof Integer) ? (Integer)viewId : (Long)viewId); + Object uri = map.get("uri"); + fromMapResult.uri = (String)uri; + Object type = map.get("type"); + fromMapResult.type = (type == null) ? null : ((type instanceof Integer) ? (Integer)type : (Long)type); + Object packageName = map.get("packageName"); + fromMapResult.packageName = (String)packageName; + Object autoPlay = map.get("autoPlay"); + fromMapResult.autoPlay = (Boolean)autoPlay; + Object hwAcc = map.get("hwAcc"); + fromMapResult.hwAcc = (hwAcc == null) ? null : ((hwAcc instanceof Integer) ? (Integer)hwAcc : (Long)hwAcc); + return fromMapResult; } } /** Generated class from Pigeon that represents data sent in messages. */ - public static final class SetMediaMessage { - private @NonNull Long playerId; - - public @NonNull Long getPlayerId() { - return playerId; - } - - public void setPlayerId(@NonNull Long setterArg) { - if (setterArg == null) { - throw new IllegalStateException("Nonnull field \"playerId\" is null."); - } - this.playerId = setterArg; - } - - private @NonNull String uri; - - public @NonNull String getUri() { - return uri; - } - - public void setUri(@NonNull String setterArg) { - if (setterArg == null) { - throw new IllegalStateException("Nonnull field \"uri\" is null."); - } - this.uri = setterArg; - } - - private @NonNull Long type; - - public @NonNull Long getType() { - return type; - } - - public void setType(@NonNull Long setterArg) { - if (setterArg == null) { - throw new IllegalStateException("Nonnull field \"type\" is null."); - } - this.type = setterArg; - } - - private @Nullable String packageName; - - public @Nullable String getPackageName() { - return packageName; - } - - public void setPackageName(@Nullable String setterArg) { - this.packageName = setterArg; - } - - private @NonNull Boolean autoPlay; - - public @NonNull Boolean getAutoPlay() { - return autoPlay; - } - - public void setAutoPlay(@NonNull Boolean setterArg) { - if (setterArg == null) { - throw new IllegalStateException("Nonnull field \"autoPlay\" is null."); - } - this.autoPlay = setterArg; - } - - private @Nullable Long hwAcc; - - public @Nullable Long getHwAcc() { - return hwAcc; - } - - public void setHwAcc(@Nullable Long setterArg) { - this.hwAcc = setterArg; - } - - /** Constructor is non-public to enforce null safety; use Builder. */ - SetMediaMessage() {} - - @Override - public boolean equals(Object o) { - if (this == o) { return true; } - if (o == null || getClass() != o.getClass()) { return false; } - SetMediaMessage that = (SetMediaMessage) o; - return playerId.equals(that.playerId) && uri.equals(that.uri) && type.equals(that.type) && Objects.equals(packageName, that.packageName) && autoPlay.equals(that.autoPlay) && Objects.equals(hwAcc, that.hwAcc); - } - - @Override - public int hashCode() { - return Objects.hash(playerId, uri, type, packageName, autoPlay, hwAcc); - } - - public static final class Builder { - - private @Nullable Long playerId; - - @CanIgnoreReturnValue - public @NonNull Builder setPlayerId(@NonNull Long setterArg) { - this.playerId = setterArg; - return this; - } - - private @Nullable String uri; - - @CanIgnoreReturnValue - public @NonNull Builder setUri(@NonNull String setterArg) { - this.uri = setterArg; - return this; - } - - private @Nullable Long type; - - @CanIgnoreReturnValue - public @NonNull Builder setType(@NonNull Long setterArg) { - this.type = setterArg; - return this; - } - - private @Nullable String packageName; - - @CanIgnoreReturnValue - public @NonNull Builder setPackageName(@Nullable String setterArg) { - this.packageName = setterArg; - return this; - } - - private @Nullable Boolean autoPlay; - - @CanIgnoreReturnValue - public @NonNull Builder setAutoPlay(@NonNull Boolean setterArg) { - this.autoPlay = setterArg; - return this; - } - - private @Nullable Long hwAcc; - - @CanIgnoreReturnValue - public @NonNull Builder setHwAcc(@Nullable Long setterArg) { - this.hwAcc = setterArg; - return this; - } - - public @NonNull SetMediaMessage build() { - SetMediaMessage pigeonReturn = new SetMediaMessage(); - pigeonReturn.setPlayerId(playerId); - pigeonReturn.setUri(uri); - pigeonReturn.setType(type); - pigeonReturn.setPackageName(packageName); - pigeonReturn.setAutoPlay(autoPlay); - pigeonReturn.setHwAcc(hwAcc); - return pigeonReturn; - } - } - - @NonNull - ArrayList toList() { - ArrayList toListResult = new ArrayList<>(6); - toListResult.add(playerId); - toListResult.add(uri); - toListResult.add(type); - toListResult.add(packageName); - toListResult.add(autoPlay); - toListResult.add(hwAcc); - return toListResult; - } - - static @NonNull SetMediaMessage fromList(@NonNull ArrayList pigeonVar_list) { - SetMediaMessage pigeonResult = new SetMediaMessage(); - Object playerId = pigeonVar_list.get(0); - pigeonResult.setPlayerId((Long) playerId); - Object uri = pigeonVar_list.get(1); - pigeonResult.setUri((String) uri); - Object type = pigeonVar_list.get(2); - pigeonResult.setType((Long) type); - Object packageName = pigeonVar_list.get(3); - pigeonResult.setPackageName((String) packageName); - Object autoPlay = pigeonVar_list.get(4); - pigeonResult.setAutoPlay((Boolean) autoPlay); - Object hwAcc = pigeonVar_list.get(5); - pigeonResult.setHwAcc((Long) hwAcc); - return pigeonResult; + public static class BooleanMessage { + private Long viewId; + public Long getViewId() { return viewId; } + public void setViewId(Long setterArg) { this.viewId = setterArg; } + + private Boolean result; + public Boolean getResult() { return result; } + public void setResult(Boolean setterArg) { this.result = setterArg; } + + Map toMap() { + Map toMapResult = new HashMap<>(); + toMapResult.put("viewId", viewId); + toMapResult.put("result", result); + return toMapResult; + } + static BooleanMessage fromMap(Map map) { + BooleanMessage fromMapResult = new BooleanMessage(); + Object viewId = map.get("viewId"); + fromMapResult.viewId = (viewId == null) ? null : ((viewId instanceof Integer) ? (Integer)viewId : (Long)viewId); + Object result = map.get("result"); + fromMapResult.result = (Boolean)result; + return fromMapResult; } } /** Generated class from Pigeon that represents data sent in messages. */ - public static final class SpuTracksMessage { - private @NonNull Long playerId; - - public @NonNull Long getPlayerId() { - return playerId; - } - - public void setPlayerId(@NonNull Long setterArg) { - if (setterArg == null) { - throw new IllegalStateException("Nonnull field \"playerId\" is null."); - } - this.playerId = setterArg; - } - - private @NonNull Map subtitles; - - public @NonNull Map getSubtitles() { - return subtitles; - } - - public void setSubtitles(@NonNull Map setterArg) { - if (setterArg == null) { - throw new IllegalStateException("Nonnull field \"subtitles\" is null."); - } - this.subtitles = setterArg; - } - - /** Constructor is non-public to enforce null safety; use Builder. */ - SpuTracksMessage() {} - - @Override - public boolean equals(Object o) { - if (this == o) { return true; } - if (o == null || getClass() != o.getClass()) { return false; } - SpuTracksMessage that = (SpuTracksMessage) o; - return playerId.equals(that.playerId) && subtitles.equals(that.subtitles); - } - - @Override - public int hashCode() { - return Objects.hash(playerId, subtitles); - } - - public static final class Builder { - - private @Nullable Long playerId; - - @CanIgnoreReturnValue - public @NonNull Builder setPlayerId(@NonNull Long setterArg) { - this.playerId = setterArg; - return this; - } - - private @Nullable Map subtitles; - - @CanIgnoreReturnValue - public @NonNull Builder setSubtitles(@NonNull Map setterArg) { - this.subtitles = setterArg; - return this; - } - - public @NonNull SpuTracksMessage build() { - SpuTracksMessage pigeonReturn = new SpuTracksMessage(); - pigeonReturn.setPlayerId(playerId); - pigeonReturn.setSubtitles(subtitles); - return pigeonReturn; - } - } - - @NonNull - ArrayList toList() { - ArrayList toListResult = new ArrayList<>(2); - toListResult.add(playerId); - toListResult.add(subtitles); - return toListResult; - } - - static @NonNull SpuTracksMessage fromList(@NonNull ArrayList pigeonVar_list) { - SpuTracksMessage pigeonResult = new SpuTracksMessage(); - Object playerId = pigeonVar_list.get(0); - pigeonResult.setPlayerId((Long) playerId); - Object subtitles = pigeonVar_list.get(1); - pigeonResult.setSubtitles((Map) subtitles); - return pigeonResult; + public static class LoopingMessage { + private Long viewId; + public Long getViewId() { return viewId; } + public void setViewId(Long setterArg) { this.viewId = setterArg; } + + private Boolean isLooping; + public Boolean getIsLooping() { return isLooping; } + public void setIsLooping(Boolean setterArg) { this.isLooping = setterArg; } + + Map toMap() { + Map toMapResult = new HashMap<>(); + toMapResult.put("viewId", viewId); + toMapResult.put("isLooping", isLooping); + return toMapResult; + } + static LoopingMessage fromMap(Map map) { + LoopingMessage fromMapResult = new LoopingMessage(); + Object viewId = map.get("viewId"); + fromMapResult.viewId = (viewId == null) ? null : ((viewId instanceof Integer) ? (Integer)viewId : (Long)viewId); + Object isLooping = map.get("isLooping"); + fromMapResult.isLooping = (Boolean)isLooping; + return fromMapResult; } } /** Generated class from Pigeon that represents data sent in messages. */ - public static final class AddSubtitleMessage { - private @NonNull Long playerId; - - public @NonNull Long getPlayerId() { - return playerId; - } - - public void setPlayerId(@NonNull Long setterArg) { - if (setterArg == null) { - throw new IllegalStateException("Nonnull field \"playerId\" is null."); - } - this.playerId = setterArg; - } - - private @NonNull String uri; - - public @NonNull String getUri() { - return uri; - } - - public void setUri(@NonNull String setterArg) { - if (setterArg == null) { - throw new IllegalStateException("Nonnull field \"uri\" is null."); - } - this.uri = setterArg; - } - - private @NonNull Long type; - - public @NonNull Long getType() { - return type; - } - - public void setType(@NonNull Long setterArg) { - if (setterArg == null) { - throw new IllegalStateException("Nonnull field \"type\" is null."); - } - this.type = setterArg; - } - - private @NonNull Boolean isSelected; - - public @NonNull Boolean getIsSelected() { - return isSelected; + public static class PositionMessage { + private Long viewId; + public Long getViewId() { return viewId; } + public void setViewId(Long setterArg) { this.viewId = setterArg; } + + private Long position; + public Long getPosition() { return position; } + public void setPosition(Long setterArg) { this.position = setterArg; } + + Map toMap() { + Map toMapResult = new HashMap<>(); + toMapResult.put("viewId", viewId); + toMapResult.put("position", position); + return toMapResult; + } + static PositionMessage fromMap(Map map) { + PositionMessage fromMapResult = new PositionMessage(); + Object viewId = map.get("viewId"); + fromMapResult.viewId = (viewId == null) ? null : ((viewId instanceof Integer) ? (Integer)viewId : (Long)viewId); + Object position = map.get("position"); + fromMapResult.position = (position == null) ? null : ((position instanceof Integer) ? (Integer)position : (Long)position); + return fromMapResult; } + } - public void setIsSelected(@NonNull Boolean setterArg) { - if (setterArg == null) { - throw new IllegalStateException("Nonnull field \"isSelected\" is null."); - } - this.isSelected = setterArg; + /** Generated class from Pigeon that represents data sent in messages. */ + public static class DurationMessage { + private Long viewId; + public Long getViewId() { return viewId; } + public void setViewId(Long setterArg) { this.viewId = setterArg; } + + private Long duration; + public Long getDuration() { return duration; } + public void setDuration(Long setterArg) { this.duration = setterArg; } + + Map toMap() { + Map toMapResult = new HashMap<>(); + toMapResult.put("viewId", viewId); + toMapResult.put("duration", duration); + return toMapResult; + } + static DurationMessage fromMap(Map map) { + DurationMessage fromMapResult = new DurationMessage(); + Object viewId = map.get("viewId"); + fromMapResult.viewId = (viewId == null) ? null : ((viewId instanceof Integer) ? (Integer)viewId : (Long)viewId); + Object duration = map.get("duration"); + fromMapResult.duration = (duration == null) ? null : ((duration instanceof Integer) ? (Integer)duration : (Long)duration); + return fromMapResult; } + } - /** Constructor is non-public to enforce null safety; use Builder. */ - AddSubtitleMessage() {} - - @Override - public boolean equals(Object o) { - if (this == o) { return true; } - if (o == null || getClass() != o.getClass()) { return false; } - AddSubtitleMessage that = (AddSubtitleMessage) o; - return playerId.equals(that.playerId) && uri.equals(that.uri) && type.equals(that.type) && isSelected.equals(that.isSelected); + /** Generated class from Pigeon that represents data sent in messages. */ + public static class VolumeMessage { + private Long viewId; + public Long getViewId() { return viewId; } + public void setViewId(Long setterArg) { this.viewId = setterArg; } + + private Long volume; + public Long getVolume() { return volume; } + public void setVolume(Long setterArg) { this.volume = setterArg; } + + Map toMap() { + Map toMapResult = new HashMap<>(); + toMapResult.put("viewId", viewId); + toMapResult.put("volume", volume); + return toMapResult; + } + static VolumeMessage fromMap(Map map) { + VolumeMessage fromMapResult = new VolumeMessage(); + Object viewId = map.get("viewId"); + fromMapResult.viewId = (viewId == null) ? null : ((viewId instanceof Integer) ? (Integer)viewId : (Long)viewId); + Object volume = map.get("volume"); + fromMapResult.volume = (volume == null) ? null : ((volume instanceof Integer) ? (Integer)volume : (Long)volume); + return fromMapResult; } + } - @Override - public int hashCode() { - return Objects.hash(playerId, uri, type, isSelected); + /** Generated class from Pigeon that represents data sent in messages. */ + public static class PlaybackSpeedMessage { + private Long viewId; + public Long getViewId() { return viewId; } + public void setViewId(Long setterArg) { this.viewId = setterArg; } + + private Double speed; + public Double getSpeed() { return speed; } + public void setSpeed(Double setterArg) { this.speed = setterArg; } + + Map toMap() { + Map toMapResult = new HashMap<>(); + toMapResult.put("viewId", viewId); + toMapResult.put("speed", speed); + return toMapResult; + } + static PlaybackSpeedMessage fromMap(Map map) { + PlaybackSpeedMessage fromMapResult = new PlaybackSpeedMessage(); + Object viewId = map.get("viewId"); + fromMapResult.viewId = (viewId == null) ? null : ((viewId instanceof Integer) ? (Integer)viewId : (Long)viewId); + Object speed = map.get("speed"); + fromMapResult.speed = (Double)speed; + return fromMapResult; } + } - public static final class Builder { - - private @Nullable Long playerId; - - @CanIgnoreReturnValue - public @NonNull Builder setPlayerId(@NonNull Long setterArg) { - this.playerId = setterArg; - return this; - } - - private @Nullable String uri; - - @CanIgnoreReturnValue - public @NonNull Builder setUri(@NonNull String setterArg) { - this.uri = setterArg; - return this; - } - - private @Nullable Long type; - - @CanIgnoreReturnValue - public @NonNull Builder setType(@NonNull Long setterArg) { - this.type = setterArg; - return this; - } - - private @Nullable Boolean isSelected; - - @CanIgnoreReturnValue - public @NonNull Builder setIsSelected(@NonNull Boolean setterArg) { - this.isSelected = setterArg; - return this; - } - - public @NonNull AddSubtitleMessage build() { - AddSubtitleMessage pigeonReturn = new AddSubtitleMessage(); - pigeonReturn.setPlayerId(playerId); - pigeonReturn.setUri(uri); - pigeonReturn.setType(type); - pigeonReturn.setIsSelected(isSelected); - return pigeonReturn; - } + /** Generated class from Pigeon that represents data sent in messages. */ + public static class SnapshotMessage { + private Long viewId; + public Long getViewId() { return viewId; } + public void setViewId(Long setterArg) { this.viewId = setterArg; } + + private String snapshot; + public String getSnapshot() { return snapshot; } + public void setSnapshot(String setterArg) { this.snapshot = setterArg; } + + Map toMap() { + Map toMapResult = new HashMap<>(); + toMapResult.put("viewId", viewId); + toMapResult.put("snapshot", snapshot); + return toMapResult; + } + static SnapshotMessage fromMap(Map map) { + SnapshotMessage fromMapResult = new SnapshotMessage(); + Object viewId = map.get("viewId"); + fromMapResult.viewId = (viewId == null) ? null : ((viewId instanceof Integer) ? (Integer)viewId : (Long)viewId); + Object snapshot = map.get("snapshot"); + fromMapResult.snapshot = (String)snapshot; + return fromMapResult; } + } - @NonNull - ArrayList toList() { - ArrayList toListResult = new ArrayList<>(4); - toListResult.add(playerId); - toListResult.add(uri); - toListResult.add(type); - toListResult.add(isSelected); - return toListResult; + /** Generated class from Pigeon that represents data sent in messages. */ + public static class TrackCountMessage { + private Long viewId; + public Long getViewId() { return viewId; } + public void setViewId(Long setterArg) { this.viewId = setterArg; } + + private Long count; + public Long getCount() { return count; } + public void setCount(Long setterArg) { this.count = setterArg; } + + Map toMap() { + Map toMapResult = new HashMap<>(); + toMapResult.put("viewId", viewId); + toMapResult.put("count", count); + return toMapResult; + } + static TrackCountMessage fromMap(Map map) { + TrackCountMessage fromMapResult = new TrackCountMessage(); + Object viewId = map.get("viewId"); + fromMapResult.viewId = (viewId == null) ? null : ((viewId instanceof Integer) ? (Integer)viewId : (Long)viewId); + Object count = map.get("count"); + fromMapResult.count = (count == null) ? null : ((count instanceof Integer) ? (Integer)count : (Long)count); + return fromMapResult; } + } - static @NonNull AddSubtitleMessage fromList(@NonNull ArrayList pigeonVar_list) { - AddSubtitleMessage pigeonResult = new AddSubtitleMessage(); - Object playerId = pigeonVar_list.get(0); - pigeonResult.setPlayerId((Long) playerId); - Object uri = pigeonVar_list.get(1); - pigeonResult.setUri((String) uri); - Object type = pigeonVar_list.get(2); - pigeonResult.setType((Long) type); - Object isSelected = pigeonVar_list.get(3); - pigeonResult.setIsSelected((Boolean) isSelected); - return pigeonResult; + /** Generated class from Pigeon that represents data sent in messages. */ + public static class SpuTracksMessage { + private Long viewId; + public Long getViewId() { return viewId; } + public void setViewId(Long setterArg) { this.viewId = setterArg; } + + private Map subtitles; + public Map getSubtitles() { return subtitles; } + public void setSubtitles(Map setterArg) { this.subtitles = setterArg; } + + Map toMap() { + Map toMapResult = new HashMap<>(); + toMapResult.put("viewId", viewId); + toMapResult.put("subtitles", subtitles); + return toMapResult; + } + static SpuTracksMessage fromMap(Map map) { + SpuTracksMessage fromMapResult = new SpuTracksMessage(); + Object viewId = map.get("viewId"); + fromMapResult.viewId = (viewId == null) ? null : ((viewId instanceof Integer) ? (Integer)viewId : (Long)viewId); + Object subtitles = map.get("subtitles"); + fromMapResult.subtitles = (Map)subtitles; + return fromMapResult; } } /** Generated class from Pigeon that represents data sent in messages. */ - public static final class AddAudioMessage { - private @NonNull Long playerId; - - public @NonNull Long getPlayerId() { - return playerId; + public static class SpuTrackMessage { + private Long viewId; + public Long getViewId() { return viewId; } + public void setViewId(Long setterArg) { this.viewId = setterArg; } + + private Long spuTrackNumber; + public Long getSpuTrackNumber() { return spuTrackNumber; } + public void setSpuTrackNumber(Long setterArg) { this.spuTrackNumber = setterArg; } + + Map toMap() { + Map toMapResult = new HashMap<>(); + toMapResult.put("viewId", viewId); + toMapResult.put("spuTrackNumber", spuTrackNumber); + return toMapResult; + } + static SpuTrackMessage fromMap(Map map) { + SpuTrackMessage fromMapResult = new SpuTrackMessage(); + Object viewId = map.get("viewId"); + fromMapResult.viewId = (viewId == null) ? null : ((viewId instanceof Integer) ? (Integer)viewId : (Long)viewId); + Object spuTrackNumber = map.get("spuTrackNumber"); + fromMapResult.spuTrackNumber = (spuTrackNumber == null) ? null : ((spuTrackNumber instanceof Integer) ? (Integer)spuTrackNumber : (Long)spuTrackNumber); + return fromMapResult; } + } - public void setPlayerId(@NonNull Long setterArg) { - if (setterArg == null) { - throw new IllegalStateException("Nonnull field \"playerId\" is null."); - } - this.playerId = setterArg; + /** Generated class from Pigeon that represents data sent in messages. */ + public static class DelayMessage { + private Long viewId; + public Long getViewId() { return viewId; } + public void setViewId(Long setterArg) { this.viewId = setterArg; } + + private Long delay; + public Long getDelay() { return delay; } + public void setDelay(Long setterArg) { this.delay = setterArg; } + + Map toMap() { + Map toMapResult = new HashMap<>(); + toMapResult.put("viewId", viewId); + toMapResult.put("delay", delay); + return toMapResult; + } + static DelayMessage fromMap(Map map) { + DelayMessage fromMapResult = new DelayMessage(); + Object viewId = map.get("viewId"); + fromMapResult.viewId = (viewId == null) ? null : ((viewId instanceof Integer) ? (Integer)viewId : (Long)viewId); + Object delay = map.get("delay"); + fromMapResult.delay = (delay == null) ? null : ((delay instanceof Integer) ? (Integer)delay : (Long)delay); + return fromMapResult; } + } - private @NonNull String uri; - - public @NonNull String getUri() { - return uri; + /** Generated class from Pigeon that represents data sent in messages. */ + public static class AddSubtitleMessage { + private Long viewId; + public Long getViewId() { return viewId; } + public void setViewId(Long setterArg) { this.viewId = setterArg; } + + private String uri; + public String getUri() { return uri; } + public void setUri(String setterArg) { this.uri = setterArg; } + + private Long type; + public Long getType() { return type; } + public void setType(Long setterArg) { this.type = setterArg; } + + private Boolean isSelected; + public Boolean getIsSelected() { return isSelected; } + public void setIsSelected(Boolean setterArg) { this.isSelected = setterArg; } + + Map toMap() { + Map toMapResult = new HashMap<>(); + toMapResult.put("viewId", viewId); + toMapResult.put("uri", uri); + toMapResult.put("type", type); + toMapResult.put("isSelected", isSelected); + return toMapResult; + } + static AddSubtitleMessage fromMap(Map map) { + AddSubtitleMessage fromMapResult = new AddSubtitleMessage(); + Object viewId = map.get("viewId"); + fromMapResult.viewId = (viewId == null) ? null : ((viewId instanceof Integer) ? (Integer)viewId : (Long)viewId); + Object uri = map.get("uri"); + fromMapResult.uri = (String)uri; + Object type = map.get("type"); + fromMapResult.type = (type == null) ? null : ((type instanceof Integer) ? (Integer)type : (Long)type); + Object isSelected = map.get("isSelected"); + fromMapResult.isSelected = (Boolean)isSelected; + return fromMapResult; } + } - public void setUri(@NonNull String setterArg) { - if (setterArg == null) { - throw new IllegalStateException("Nonnull field \"uri\" is null."); - } - this.uri = setterArg; + /** Generated class from Pigeon that represents data sent in messages. */ + public static class AudioTracksMessage { + private Long viewId; + public Long getViewId() { return viewId; } + public void setViewId(Long setterArg) { this.viewId = setterArg; } + + private Map audios; + public Map getAudios() { return audios; } + public void setAudios(Map setterArg) { this.audios = setterArg; } + + Map toMap() { + Map toMapResult = new HashMap<>(); + toMapResult.put("viewId", viewId); + toMapResult.put("audios", audios); + return toMapResult; + } + static AudioTracksMessage fromMap(Map map) { + AudioTracksMessage fromMapResult = new AudioTracksMessage(); + Object viewId = map.get("viewId"); + fromMapResult.viewId = (viewId == null) ? null : ((viewId instanceof Integer) ? (Integer)viewId : (Long)viewId); + Object audios = map.get("audios"); + fromMapResult.audios = (Map)audios; + return fromMapResult; } + } - private @NonNull Long type; - - public @NonNull Long getType() { - return type; + /** Generated class from Pigeon that represents data sent in messages. */ + public static class AudioTrackMessage { + private Long viewId; + public Long getViewId() { return viewId; } + public void setViewId(Long setterArg) { this.viewId = setterArg; } + + private Long audioTrackNumber; + public Long getAudioTrackNumber() { return audioTrackNumber; } + public void setAudioTrackNumber(Long setterArg) { this.audioTrackNumber = setterArg; } + + Map toMap() { + Map toMapResult = new HashMap<>(); + toMapResult.put("viewId", viewId); + toMapResult.put("audioTrackNumber", audioTrackNumber); + return toMapResult; + } + static AudioTrackMessage fromMap(Map map) { + AudioTrackMessage fromMapResult = new AudioTrackMessage(); + Object viewId = map.get("viewId"); + fromMapResult.viewId = (viewId == null) ? null : ((viewId instanceof Integer) ? (Integer)viewId : (Long)viewId); + Object audioTrackNumber = map.get("audioTrackNumber"); + fromMapResult.audioTrackNumber = (audioTrackNumber == null) ? null : ((audioTrackNumber instanceof Integer) ? (Integer)audioTrackNumber : (Long)audioTrackNumber); + return fromMapResult; } + } - public void setType(@NonNull Long setterArg) { - if (setterArg == null) { - throw new IllegalStateException("Nonnull field \"type\" is null."); - } - this.type = setterArg; + /** Generated class from Pigeon that represents data sent in messages. */ + public static class AddAudioMessage { + private Long viewId; + public Long getViewId() { return viewId; } + public void setViewId(Long setterArg) { this.viewId = setterArg; } + + private String uri; + public String getUri() { return uri; } + public void setUri(String setterArg) { this.uri = setterArg; } + + private Long type; + public Long getType() { return type; } + public void setType(Long setterArg) { this.type = setterArg; } + + private Boolean isSelected; + public Boolean getIsSelected() { return isSelected; } + public void setIsSelected(Boolean setterArg) { this.isSelected = setterArg; } + + Map toMap() { + Map toMapResult = new HashMap<>(); + toMapResult.put("viewId", viewId); + toMapResult.put("uri", uri); + toMapResult.put("type", type); + toMapResult.put("isSelected", isSelected); + return toMapResult; + } + static AddAudioMessage fromMap(Map map) { + AddAudioMessage fromMapResult = new AddAudioMessage(); + Object viewId = map.get("viewId"); + fromMapResult.viewId = (viewId == null) ? null : ((viewId instanceof Integer) ? (Integer)viewId : (Long)viewId); + Object uri = map.get("uri"); + fromMapResult.uri = (String)uri; + Object type = map.get("type"); + fromMapResult.type = (type == null) ? null : ((type instanceof Integer) ? (Integer)type : (Long)type); + Object isSelected = map.get("isSelected"); + fromMapResult.isSelected = (Boolean)isSelected; + return fromMapResult; } + } - private @NonNull Boolean isSelected; - - public @NonNull Boolean getIsSelected() { - return isSelected; + /** Generated class from Pigeon that represents data sent in messages. */ + public static class VideoTracksMessage { + private Long viewId; + public Long getViewId() { return viewId; } + public void setViewId(Long setterArg) { this.viewId = setterArg; } + + private Map videos; + public Map getVideos() { return videos; } + public void setVideos(Map setterArg) { this.videos = setterArg; } + + Map toMap() { + Map toMapResult = new HashMap<>(); + toMapResult.put("viewId", viewId); + toMapResult.put("videos", videos); + return toMapResult; + } + static VideoTracksMessage fromMap(Map map) { + VideoTracksMessage fromMapResult = new VideoTracksMessage(); + Object viewId = map.get("viewId"); + fromMapResult.viewId = (viewId == null) ? null : ((viewId instanceof Integer) ? (Integer)viewId : (Long)viewId); + Object videos = map.get("videos"); + fromMapResult.videos = (Map)videos; + return fromMapResult; } + } - public void setIsSelected(@NonNull Boolean setterArg) { - if (setterArg == null) { - throw new IllegalStateException("Nonnull field \"isSelected\" is null."); - } - this.isSelected = setterArg; + /** Generated class from Pigeon that represents data sent in messages. */ + public static class VideoTrackMessage { + private Long viewId; + public Long getViewId() { return viewId; } + public void setViewId(Long setterArg) { this.viewId = setterArg; } + + private Long videoTrackNumber; + public Long getVideoTrackNumber() { return videoTrackNumber; } + public void setVideoTrackNumber(Long setterArg) { this.videoTrackNumber = setterArg; } + + Map toMap() { + Map toMapResult = new HashMap<>(); + toMapResult.put("viewId", viewId); + toMapResult.put("videoTrackNumber", videoTrackNumber); + return toMapResult; + } + static VideoTrackMessage fromMap(Map map) { + VideoTrackMessage fromMapResult = new VideoTrackMessage(); + Object viewId = map.get("viewId"); + fromMapResult.viewId = (viewId == null) ? null : ((viewId instanceof Integer) ? (Integer)viewId : (Long)viewId); + Object videoTrackNumber = map.get("videoTrackNumber"); + fromMapResult.videoTrackNumber = (videoTrackNumber == null) ? null : ((videoTrackNumber instanceof Integer) ? (Integer)videoTrackNumber : (Long)videoTrackNumber); + return fromMapResult; } + } - /** Constructor is non-public to enforce null safety; use Builder. */ - AddAudioMessage() {} - - @Override - public boolean equals(Object o) { - if (this == o) { return true; } - if (o == null || getClass() != o.getClass()) { return false; } - AddAudioMessage that = (AddAudioMessage) o; - return playerId.equals(that.playerId) && uri.equals(that.uri) && type.equals(that.type) && isSelected.equals(that.isSelected); + /** Generated class from Pigeon that represents data sent in messages. */ + public static class VideoScaleMessage { + private Long viewId; + public Long getViewId() { return viewId; } + public void setViewId(Long setterArg) { this.viewId = setterArg; } + + private Double scale; + public Double getScale() { return scale; } + public void setScale(Double setterArg) { this.scale = setterArg; } + + Map toMap() { + Map toMapResult = new HashMap<>(); + toMapResult.put("viewId", viewId); + toMapResult.put("scale", scale); + return toMapResult; + } + static VideoScaleMessage fromMap(Map map) { + VideoScaleMessage fromMapResult = new VideoScaleMessage(); + Object viewId = map.get("viewId"); + fromMapResult.viewId = (viewId == null) ? null : ((viewId instanceof Integer) ? (Integer)viewId : (Long)viewId); + Object scale = map.get("scale"); + fromMapResult.scale = (Double)scale; + return fromMapResult; } + } - @Override - public int hashCode() { - return Objects.hash(playerId, uri, type, isSelected); + /** Generated class from Pigeon that represents data sent in messages. */ + public static class VideoAspectRatioMessage { + private Long viewId; + public Long getViewId() { return viewId; } + public void setViewId(Long setterArg) { this.viewId = setterArg; } + + private String aspectRatio; + public String getAspectRatio() { return aspectRatio; } + public void setAspectRatio(String setterArg) { this.aspectRatio = setterArg; } + + Map toMap() { + Map toMapResult = new HashMap<>(); + toMapResult.put("viewId", viewId); + toMapResult.put("aspectRatio", aspectRatio); + return toMapResult; + } + static VideoAspectRatioMessage fromMap(Map map) { + VideoAspectRatioMessage fromMapResult = new VideoAspectRatioMessage(); + Object viewId = map.get("viewId"); + fromMapResult.viewId = (viewId == null) ? null : ((viewId instanceof Integer) ? (Integer)viewId : (Long)viewId); + Object aspectRatio = map.get("aspectRatio"); + fromMapResult.aspectRatio = (String)aspectRatio; + return fromMapResult; } + } - public static final class Builder { - - private @Nullable Long playerId; - - @CanIgnoreReturnValue - public @NonNull Builder setPlayerId(@NonNull Long setterArg) { - this.playerId = setterArg; - return this; - } - - private @Nullable String uri; - - @CanIgnoreReturnValue - public @NonNull Builder setUri(@NonNull String setterArg) { - this.uri = setterArg; - return this; - } - - private @Nullable Long type; - - @CanIgnoreReturnValue - public @NonNull Builder setType(@NonNull Long setterArg) { - this.type = setterArg; - return this; - } - - private @Nullable Boolean isSelected; - - @CanIgnoreReturnValue - public @NonNull Builder setIsSelected(@NonNull Boolean setterArg) { - this.isSelected = setterArg; - return this; - } - - public @NonNull AddAudioMessage build() { - AddAudioMessage pigeonReturn = new AddAudioMessage(); - pigeonReturn.setPlayerId(playerId); - pigeonReturn.setUri(uri); - pigeonReturn.setType(type); - pigeonReturn.setIsSelected(isSelected); - return pigeonReturn; - } + /** Generated class from Pigeon that represents data sent in messages. */ + public static class RendererServicesMessage { + private Long viewId; + public Long getViewId() { return viewId; } + public void setViewId(Long setterArg) { this.viewId = setterArg; } + + private List services; + public List getServices() { return services; } + public void setServices(List setterArg) { this.services = setterArg; } + + Map toMap() { + Map toMapResult = new HashMap<>(); + toMapResult.put("viewId", viewId); + toMapResult.put("services", services); + return toMapResult; + } + static RendererServicesMessage fromMap(Map map) { + RendererServicesMessage fromMapResult = new RendererServicesMessage(); + Object viewId = map.get("viewId"); + fromMapResult.viewId = (viewId == null) ? null : ((viewId instanceof Integer) ? (Integer)viewId : (Long)viewId); + Object services = map.get("services"); + fromMapResult.services = (List)services; + return fromMapResult; } + } - @NonNull - ArrayList toList() { - ArrayList toListResult = new ArrayList<>(4); - toListResult.add(playerId); - toListResult.add(uri); - toListResult.add(type); - toListResult.add(isSelected); - return toListResult; + /** Generated class from Pigeon that represents data sent in messages. */ + public static class RendererScanningMessage { + private Long viewId; + public Long getViewId() { return viewId; } + public void setViewId(Long setterArg) { this.viewId = setterArg; } + + private String rendererService; + public String getRendererService() { return rendererService; } + public void setRendererService(String setterArg) { this.rendererService = setterArg; } + + Map toMap() { + Map toMapResult = new HashMap<>(); + toMapResult.put("viewId", viewId); + toMapResult.put("rendererService", rendererService); + return toMapResult; + } + static RendererScanningMessage fromMap(Map map) { + RendererScanningMessage fromMapResult = new RendererScanningMessage(); + Object viewId = map.get("viewId"); + fromMapResult.viewId = (viewId == null) ? null : ((viewId instanceof Integer) ? (Integer)viewId : (Long)viewId); + Object rendererService = map.get("rendererService"); + fromMapResult.rendererService = (String)rendererService; + return fromMapResult; } + } - static @NonNull AddAudioMessage fromList(@NonNull ArrayList pigeonVar_list) { - AddAudioMessage pigeonResult = new AddAudioMessage(); - Object playerId = pigeonVar_list.get(0); - pigeonResult.setPlayerId((Long) playerId); - Object uri = pigeonVar_list.get(1); - pigeonResult.setUri((String) uri); - Object type = pigeonVar_list.get(2); - pigeonResult.setType((Long) type); - Object isSelected = pigeonVar_list.get(3); - pigeonResult.setIsSelected((Boolean) isSelected); - return pigeonResult; + /** Generated class from Pigeon that represents data sent in messages. */ + public static class RendererDevicesMessage { + private Long viewId; + public Long getViewId() { return viewId; } + public void setViewId(Long setterArg) { this.viewId = setterArg; } + + private Map rendererDevices; + public Map getRendererDevices() { return rendererDevices; } + public void setRendererDevices(Map setterArg) { this.rendererDevices = setterArg; } + + Map toMap() { + Map toMapResult = new HashMap<>(); + toMapResult.put("viewId", viewId); + toMapResult.put("rendererDevices", rendererDevices); + return toMapResult; + } + static RendererDevicesMessage fromMap(Map map) { + RendererDevicesMessage fromMapResult = new RendererDevicesMessage(); + Object viewId = map.get("viewId"); + fromMapResult.viewId = (viewId == null) ? null : ((viewId instanceof Integer) ? (Integer)viewId : (Long)viewId); + Object rendererDevices = map.get("rendererDevices"); + fromMapResult.rendererDevices = (Map)rendererDevices; + return fromMapResult; } } - private static class PigeonCodec extends StandardMessageCodec { - public static final PigeonCodec INSTANCE = new PigeonCodec(); - - private PigeonCodec() {} - - @Override - protected Object readValueOfType(byte type, @NonNull ByteBuffer buffer) { - switch (type) { - case (byte) 129: - return CreateMessage.fromList((ArrayList) readValue(buffer)); - case (byte) 130: - return SetMediaMessage.fromList((ArrayList) readValue(buffer)); - case (byte) 131: - return SpuTracksMessage.fromList((ArrayList) readValue(buffer)); - case (byte) 132: - return AddSubtitleMessage.fromList((ArrayList) readValue(buffer)); - case (byte) 133: - return AddAudioMessage.fromList((ArrayList) readValue(buffer)); - default: - return super.readValueOfType(type, buffer); - } + /** Generated class from Pigeon that represents data sent in messages. */ + public static class RenderDeviceMessage { + private Long viewId; + public Long getViewId() { return viewId; } + public void setViewId(Long setterArg) { this.viewId = setterArg; } + + private String rendererDevice; + public String getRendererDevice() { return rendererDevice; } + public void setRendererDevice(String setterArg) { this.rendererDevice = setterArg; } + + Map toMap() { + Map toMapResult = new HashMap<>(); + toMapResult.put("viewId", viewId); + toMapResult.put("rendererDevice", rendererDevice); + return toMapResult; + } + static RenderDeviceMessage fromMap(Map map) { + RenderDeviceMessage fromMapResult = new RenderDeviceMessage(); + Object viewId = map.get("viewId"); + fromMapResult.viewId = (viewId == null) ? null : ((viewId instanceof Integer) ? (Integer)viewId : (Long)viewId); + Object rendererDevice = map.get("rendererDevice"); + fromMapResult.rendererDevice = (String)rendererDevice; + return fromMapResult; } + } - @Override - protected void writeValue(@NonNull ByteArrayOutputStream stream, Object value) { - if (value instanceof CreateMessage) { - stream.write(129); - writeValue(stream, ((CreateMessage) value).toList()); - } else if (value instanceof SetMediaMessage) { - stream.write(130); - writeValue(stream, ((SetMediaMessage) value).toList()); - } else if (value instanceof SpuTracksMessage) { - stream.write(131); - writeValue(stream, ((SpuTracksMessage) value).toList()); - } else if (value instanceof AddSubtitleMessage) { - stream.write(132); - writeValue(stream, ((AddSubtitleMessage) value).toList()); - } else if (value instanceof AddAudioMessage) { - stream.write(133); - writeValue(stream, ((AddAudioMessage) value).toList()); - } else { - super.writeValue(stream, value); - } + /** Generated class from Pigeon that represents data sent in messages. */ + public static class RecordMessage { + private Long viewId; + public Long getViewId() { return viewId; } + public void setViewId(Long setterArg) { this.viewId = setterArg; } + + private String saveDirectory; + public String getSaveDirectory() { return saveDirectory; } + public void setSaveDirectory(String setterArg) { this.saveDirectory = setterArg; } + + Map toMap() { + Map toMapResult = new HashMap<>(); + toMapResult.put("viewId", viewId); + toMapResult.put("saveDirectory", saveDirectory); + return toMapResult; + } + static RecordMessage fromMap(Map map) { + RecordMessage fromMapResult = new RecordMessage(); + Object viewId = map.get("viewId"); + fromMapResult.viewId = (viewId == null) ? null : ((viewId instanceof Integer) ? (Integer)viewId : (Long)viewId); + Object saveDirectory = map.get("saveDirectory"); + fromMapResult.saveDirectory = (String)saveDirectory; + return fromMapResult; } } - /** Generated interface from Pigeon that represents a handler of messages from Flutter. */ + /** Generated interface from Pigeon that represents a handler of messages from Flutter.*/ public interface VlcPlayerApi { - void initialize(); - - void create(@NonNull CreateMessage msg); - - void dispose(@NonNull Long playerId); - - void setStreamUrl(@NonNull SetMediaMessage msg); - - void play(@NonNull Long playerId); - - void pause(@NonNull Long playerId); - - void stop(@NonNull Long playerId); - - @NonNull - Boolean isPlaying(@NonNull Long playerId); - - @NonNull - Boolean isSeekable(@NonNull Long playerId); - - void setLooping(@NonNull Long playerId, @NonNull Boolean isLooping); - - void seekTo(@NonNull Long playerId, @NonNull Long position); - - @NonNull - Long position(@NonNull Long playerId); - - @NonNull - Long duration(@NonNull Long playerId); - - void setVolume(@NonNull Long playerId, @NonNull Long volume); - - @NonNull - Long getVolume(@NonNull Long playerId); - - void setPlaybackSpeed(@NonNull Long playerId, @NonNull Double speed); - - @NonNull - Double getPlaybackSpeed(@NonNull Long playerId); - - @Nullable - String takeSnapshot(@NonNull Long playerId); - - @NonNull - Long getSpuTracksCount(@NonNull Long playerId); - - @NonNull - Map getSpuTracks(@NonNull Long playerId); - - void setSpuTrack(@NonNull Long playerId, @NonNull Long spuTrackNumber); - - @NonNull - Long getSpuTrack(@NonNull Long playerId); - - void setSpuDelay(@NonNull Long playerId, @NonNull Long delay); - - @NonNull - Long getSpuDelay(@NonNull Long playerId); - - void addSubtitleTrack(@NonNull AddSubtitleMessage msg); - - @NonNull - Long getAudioTracksCount(@NonNull Long playerId); - - @NonNull - Map getAudioTracks(@NonNull Long playerId); - - void setAudioTrack(@NonNull Long playerId, @NonNull Long audioTrackNumber); - - @NonNull - Long getAudioTrack(@NonNull Long playerId); - - void setAudioDelay(@NonNull Long playerId, @NonNull Long delay); - - @NonNull - Long getAudioDelay(@NonNull Long playerId); - - void addAudioTrack(@NonNull AddAudioMessage msg); - - @NonNull - Long getVideoTracksCount(@NonNull Long playerId); - - @NonNull - Map getVideoTracks(@NonNull Long playerId); - - void setVideoTrack(@NonNull Long playerId, @NonNull Long videoTrackNumber); - - @NonNull - Long getVideoTrack(@NonNull Long playerId); - - void setVideoScale(@NonNull Long playerId, @NonNull Double scale); - - @NonNull - Double getVideoScale(@NonNull Long playerId); - - void setVideoAspectRatio(@NonNull Long playerId, @NonNull String aspectRatio); - - @NonNull - String getVideoAspectRatio(@NonNull Long playerId); - - @NonNull - List getAvailableRendererServices(@NonNull Long playerId); - - void startRendererScanning(@NonNull Long playerId, @NonNull String rendererService); - - void stopRendererScanning(@NonNull Long playerId); - - @NonNull - Map getRendererDevices(@NonNull Long playerId); - - void castToRenderer(@NonNull Long playerId, @NonNull String rendererId); - - @NonNull - Boolean startRecording(@NonNull Long playerId, @NonNull String saveDirectory); - - @NonNull - Boolean stopRecording(@NonNull Long playerId); - - /** The codec used by VlcPlayerApi. */ - static @NonNull MessageCodec getCodec() { - return PigeonCodec.INSTANCE; - } - /**Sets up an instance of `VlcPlayerApi` to handle messages through the `binaryMessenger`. */ - static void setUp(@NonNull BinaryMessenger binaryMessenger, @Nullable VlcPlayerApi api) { - setUp(binaryMessenger, "", api); - } - static void setUp(@NonNull BinaryMessenger binaryMessenger, @NonNull String messageChannelSuffix, @Nullable VlcPlayerApi api) { - messageChannelSuffix = messageChannelSuffix.isEmpty() ? "" : "." + messageChannelSuffix; + void create(CreateMessage arg); + void dispose(ViewMessage arg); + void setStreamUrl(SetMediaMessage arg); + void play(ViewMessage arg); + void pause(ViewMessage arg); + void stop(ViewMessage arg); + BooleanMessage isPlaying(ViewMessage arg); + BooleanMessage isSeekable(ViewMessage arg); + void setLooping(LoopingMessage arg); + void seekTo(PositionMessage arg); + PositionMessage position(ViewMessage arg); + DurationMessage duration(ViewMessage arg); + void setVolume(VolumeMessage arg); + VolumeMessage getVolume(ViewMessage arg); + void setPlaybackSpeed(PlaybackSpeedMessage arg); + PlaybackSpeedMessage getPlaybackSpeed(ViewMessage arg); + SnapshotMessage takeSnapshot(ViewMessage arg); + TrackCountMessage getSpuTracksCount(ViewMessage arg); + SpuTracksMessage getSpuTracks(ViewMessage arg); + void setSpuTrack(SpuTrackMessage arg); + SpuTrackMessage getSpuTrack(ViewMessage arg); + void setSpuDelay(DelayMessage arg); + DelayMessage getSpuDelay(ViewMessage arg); + void addSubtitleTrack(AddSubtitleMessage arg); + TrackCountMessage getAudioTracksCount(ViewMessage arg); + AudioTracksMessage getAudioTracks(ViewMessage arg); + void setAudioTrack(AudioTrackMessage arg); + AudioTrackMessage getAudioTrack(ViewMessage arg); + void setAudioDelay(DelayMessage arg); + DelayMessage getAudioDelay(ViewMessage arg); + void addAudioTrack(AddAudioMessage arg); + TrackCountMessage getVideoTracksCount(ViewMessage arg); + VideoTracksMessage getVideoTracks(ViewMessage arg); + void setVideoTrack(VideoTrackMessage arg); + VideoTrackMessage getVideoTrack(ViewMessage arg); + void setVideoScale(VideoScaleMessage arg); + VideoScaleMessage getVideoScale(ViewMessage arg); + void setVideoAspectRatio(VideoAspectRatioMessage arg); + VideoAspectRatioMessage getVideoAspectRatio(ViewMessage arg); + RendererServicesMessage getAvailableRendererServices(ViewMessage arg); + void startRendererScanning(RendererScanningMessage arg); + void stopRendererScanning(ViewMessage arg); + RendererDevicesMessage getRendererDevices(ViewMessage arg); + void castToRenderer(RenderDeviceMessage arg); + BooleanMessage startRecording(RecordMessage arg); + BooleanMessage stopRecording(ViewMessage arg); + + /** Sets up an instance of `VlcPlayerApi` to handle messages through the `binaryMessenger`. */ + static void setup(BinaryMessenger binaryMessenger, VlcPlayerApi api) { { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.initialize" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.initialize", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - try { - api.initialize(); - wrapped.add(0, null); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + api.initialize(); + wrapped.put("result", null); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.create" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.create", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - CreateMessage msgArg = (CreateMessage) args.get(0); - try { - api.create(msgArg); - wrapped.add(0, null); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + CreateMessage input = CreateMessage.fromMap((Map)message); + api.create(input); + wrapped.put("result", null); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.dispose" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.dispose", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - try { - api.dispose(playerIdArg); - wrapped.add(0, null); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + ViewMessage input = ViewMessage.fromMap((Map)message); + api.dispose(input); + wrapped.put("result", null); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.setStreamUrl" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.setStreamUrl", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - SetMediaMessage msgArg = (SetMediaMessage) args.get(0); - try { - api.setStreamUrl(msgArg); - wrapped.add(0, null); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + SetMediaMessage input = SetMediaMessage.fromMap((Map)message); + api.setStreamUrl(input); + wrapped.put("result", null); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.play" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.play", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - try { - api.play(playerIdArg); - wrapped.add(0, null); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + ViewMessage input = ViewMessage.fromMap((Map)message); + api.play(input); + wrapped.put("result", null); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.pause" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.pause", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - try { - api.pause(playerIdArg); - wrapped.add(0, null); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + ViewMessage input = ViewMessage.fromMap((Map)message); + api.pause(input); + wrapped.put("result", null); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.stop" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.stop", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - try { - api.stop(playerIdArg); - wrapped.add(0, null); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + ViewMessage input = ViewMessage.fromMap((Map)message); + api.stop(input); + wrapped.put("result", null); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.isPlaying" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.isPlaying", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - try { - Boolean output = api.isPlaying(playerIdArg); - wrapped.add(0, output); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + ViewMessage input = ViewMessage.fromMap((Map)message); + BooleanMessage output = api.isPlaying(input); + wrapped.put("result", output.toMap()); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.isSeekable" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.isSeekable", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - try { - Boolean output = api.isSeekable(playerIdArg); - wrapped.add(0, output); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + ViewMessage input = ViewMessage.fromMap((Map)message); + BooleanMessage output = api.isSeekable(input); + wrapped.put("result", output.toMap()); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.setLooping" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.setLooping", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - Boolean isLoopingArg = (Boolean) args.get(1); - try { - api.setLooping(playerIdArg, isLoopingArg); - wrapped.add(0, null); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + LoopingMessage input = LoopingMessage.fromMap((Map)message); + api.setLooping(input); + wrapped.put("result", null); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.seekTo" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.seekTo", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - Long positionArg = (Long) args.get(1); - try { - api.seekTo(playerIdArg, positionArg); - wrapped.add(0, null); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + PositionMessage input = PositionMessage.fromMap((Map)message); + api.seekTo(input); + wrapped.put("result", null); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.position" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.position", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - try { - Long output = api.position(playerIdArg); - wrapped.add(0, output); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + ViewMessage input = ViewMessage.fromMap((Map)message); + PositionMessage output = api.position(input); + wrapped.put("result", output.toMap()); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.duration" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.duration", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - try { - Long output = api.duration(playerIdArg); - wrapped.add(0, output); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + ViewMessage input = ViewMessage.fromMap((Map)message); + DurationMessage output = api.duration(input); + wrapped.put("result", output.toMap()); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.setVolume" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.setVolume", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - Long volumeArg = (Long) args.get(1); - try { - api.setVolume(playerIdArg, volumeArg); - wrapped.add(0, null); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + VolumeMessage input = VolumeMessage.fromMap((Map)message); + api.setVolume(input); + wrapped.put("result", null); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.getVolume" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.getVolume", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - try { - Long output = api.getVolume(playerIdArg); - wrapped.add(0, output); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + ViewMessage input = ViewMessage.fromMap((Map)message); + VolumeMessage output = api.getVolume(input); + wrapped.put("result", output.toMap()); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.setPlaybackSpeed" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.setPlaybackSpeed", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - Double speedArg = (Double) args.get(1); - try { - api.setPlaybackSpeed(playerIdArg, speedArg); - wrapped.add(0, null); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + PlaybackSpeedMessage input = PlaybackSpeedMessage.fromMap((Map)message); + api.setPlaybackSpeed(input); + wrapped.put("result", null); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.getPlaybackSpeed" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.getPlaybackSpeed", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - try { - Double output = api.getPlaybackSpeed(playerIdArg); - wrapped.add(0, output); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + ViewMessage input = ViewMessage.fromMap((Map)message); + PlaybackSpeedMessage output = api.getPlaybackSpeed(input); + wrapped.put("result", output.toMap()); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.takeSnapshot" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.takeSnapshot", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - try { - String output = api.takeSnapshot(playerIdArg); - wrapped.add(0, output); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + ViewMessage input = ViewMessage.fromMap((Map)message); + SnapshotMessage output = api.takeSnapshot(input); + wrapped.put("result", output.toMap()); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.getSpuTracksCount" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.getSpuTracksCount", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - try { - Long output = api.getSpuTracksCount(playerIdArg); - wrapped.add(0, output); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + ViewMessage input = ViewMessage.fromMap((Map)message); + TrackCountMessage output = api.getSpuTracksCount(input); + wrapped.put("result", output.toMap()); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.getSpuTracks" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.getSpuTracks", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - try { - Map output = api.getSpuTracks(playerIdArg); - wrapped.add(0, output); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + ViewMessage input = ViewMessage.fromMap((Map)message); + SpuTracksMessage output = api.getSpuTracks(input); + wrapped.put("result", output.toMap()); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.setSpuTrack" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.setSpuTrack", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - Long spuTrackNumberArg = (Long) args.get(1); - try { - api.setSpuTrack(playerIdArg, spuTrackNumberArg); - wrapped.add(0, null); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + SpuTrackMessage input = SpuTrackMessage.fromMap((Map)message); + api.setSpuTrack(input); + wrapped.put("result", null); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.getSpuTrack" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.getSpuTrack", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - try { - Long output = api.getSpuTrack(playerIdArg); - wrapped.add(0, output); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + ViewMessage input = ViewMessage.fromMap((Map)message); + SpuTrackMessage output = api.getSpuTrack(input); + wrapped.put("result", output.toMap()); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.setSpuDelay" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.setSpuDelay", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - Long delayArg = (Long) args.get(1); - try { - api.setSpuDelay(playerIdArg, delayArg); - wrapped.add(0, null); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + DelayMessage input = DelayMessage.fromMap((Map)message); + api.setSpuDelay(input); + wrapped.put("result", null); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.getSpuDelay" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.getSpuDelay", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - try { - Long output = api.getSpuDelay(playerIdArg); - wrapped.add(0, output); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + ViewMessage input = ViewMessage.fromMap((Map)message); + DelayMessage output = api.getSpuDelay(input); + wrapped.put("result", output.toMap()); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.addSubtitleTrack" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.addSubtitleTrack", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - AddSubtitleMessage msgArg = (AddSubtitleMessage) args.get(0); - try { - api.addSubtitleTrack(msgArg); - wrapped.add(0, null); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + AddSubtitleMessage input = AddSubtitleMessage.fromMap((Map)message); + api.addSubtitleTrack(input); + wrapped.put("result", null); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.getAudioTracksCount" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.getAudioTracksCount", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - try { - Long output = api.getAudioTracksCount(playerIdArg); - wrapped.add(0, output); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + ViewMessage input = ViewMessage.fromMap((Map)message); + TrackCountMessage output = api.getAudioTracksCount(input); + wrapped.put("result", output.toMap()); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.getAudioTracks" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.getAudioTracks", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - try { - Map output = api.getAudioTracks(playerIdArg); - wrapped.add(0, output); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + ViewMessage input = ViewMessage.fromMap((Map)message); + AudioTracksMessage output = api.getAudioTracks(input); + wrapped.put("result", output.toMap()); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.setAudioTrack" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.setAudioTrack", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - Long audioTrackNumberArg = (Long) args.get(1); - try { - api.setAudioTrack(playerIdArg, audioTrackNumberArg); - wrapped.add(0, null); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + AudioTrackMessage input = AudioTrackMessage.fromMap((Map)message); + api.setAudioTrack(input); + wrapped.put("result", null); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.getAudioTrack" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.getAudioTrack", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - try { - Long output = api.getAudioTrack(playerIdArg); - wrapped.add(0, output); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + ViewMessage input = ViewMessage.fromMap((Map)message); + AudioTrackMessage output = api.getAudioTrack(input); + wrapped.put("result", output.toMap()); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.setAudioDelay" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.setAudioDelay", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - Long delayArg = (Long) args.get(1); - try { - api.setAudioDelay(playerIdArg, delayArg); - wrapped.add(0, null); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + DelayMessage input = DelayMessage.fromMap((Map)message); + api.setAudioDelay(input); + wrapped.put("result", null); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.getAudioDelay" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.getAudioDelay", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - try { - Long output = api.getAudioDelay(playerIdArg); - wrapped.add(0, output); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + ViewMessage input = ViewMessage.fromMap((Map)message); + DelayMessage output = api.getAudioDelay(input); + wrapped.put("result", output.toMap()); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.addAudioTrack" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.addAudioTrack", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - AddAudioMessage msgArg = (AddAudioMessage) args.get(0); - try { - api.addAudioTrack(msgArg); - wrapped.add(0, null); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + AddAudioMessage input = AddAudioMessage.fromMap((Map)message); + api.addAudioTrack(input); + wrapped.put("result", null); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.getVideoTracksCount" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.getVideoTracksCount", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - try { - Long output = api.getVideoTracksCount(playerIdArg); - wrapped.add(0, output); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + ViewMessage input = ViewMessage.fromMap((Map)message); + TrackCountMessage output = api.getVideoTracksCount(input); + wrapped.put("result", output.toMap()); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.getVideoTracks" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.getVideoTracks", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - try { - Map output = api.getVideoTracks(playerIdArg); - wrapped.add(0, output); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + ViewMessage input = ViewMessage.fromMap((Map)message); + VideoTracksMessage output = api.getVideoTracks(input); + wrapped.put("result", output.toMap()); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.setVideoTrack" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.setVideoTrack", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - Long videoTrackNumberArg = (Long) args.get(1); - try { - api.setVideoTrack(playerIdArg, videoTrackNumberArg); - wrapped.add(0, null); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + VideoTrackMessage input = VideoTrackMessage.fromMap((Map)message); + api.setVideoTrack(input); + wrapped.put("result", null); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.getVideoTrack" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.getVideoTrack", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - try { - Long output = api.getVideoTrack(playerIdArg); - wrapped.add(0, output); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + ViewMessage input = ViewMessage.fromMap((Map)message); + VideoTrackMessage output = api.getVideoTrack(input); + wrapped.put("result", output.toMap()); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.setVideoScale" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.setVideoScale", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - Double scaleArg = (Double) args.get(1); - try { - api.setVideoScale(playerIdArg, scaleArg); - wrapped.add(0, null); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + VideoScaleMessage input = VideoScaleMessage.fromMap((Map)message); + api.setVideoScale(input); + wrapped.put("result", null); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.getVideoScale" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.getVideoScale", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - try { - Double output = api.getVideoScale(playerIdArg); - wrapped.add(0, output); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + ViewMessage input = ViewMessage.fromMap((Map)message); + VideoScaleMessage output = api.getVideoScale(input); + wrapped.put("result", output.toMap()); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.setVideoAspectRatio" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.setVideoAspectRatio", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - String aspectRatioArg = (String) args.get(1); - try { - api.setVideoAspectRatio(playerIdArg, aspectRatioArg); - wrapped.add(0, null); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + VideoAspectRatioMessage input = VideoAspectRatioMessage.fromMap((Map)message); + api.setVideoAspectRatio(input); + wrapped.put("result", null); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.getVideoAspectRatio" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.getVideoAspectRatio", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - try { - String output = api.getVideoAspectRatio(playerIdArg); - wrapped.add(0, output); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + ViewMessage input = ViewMessage.fromMap((Map)message); + VideoAspectRatioMessage output = api.getVideoAspectRatio(input); + wrapped.put("result", output.toMap()); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.getAvailableRendererServices" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.getAvailableRendererServices", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - try { - List output = api.getAvailableRendererServices(playerIdArg); - wrapped.add(0, output); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + ViewMessage input = ViewMessage.fromMap((Map)message); + RendererServicesMessage output = api.getAvailableRendererServices(input); + wrapped.put("result", output.toMap()); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.startRendererScanning" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.startRendererScanning", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - String rendererServiceArg = (String) args.get(1); - try { - api.startRendererScanning(playerIdArg, rendererServiceArg); - wrapped.add(0, null); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + RendererScanningMessage input = RendererScanningMessage.fromMap((Map)message); + api.startRendererScanning(input); + wrapped.put("result", null); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.stopRendererScanning" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.stopRendererScanning", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - try { - api.stopRendererScanning(playerIdArg); - wrapped.add(0, null); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + ViewMessage input = ViewMessage.fromMap((Map)message); + api.stopRendererScanning(input); + wrapped.put("result", null); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.getRendererDevices" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.getRendererDevices", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - try { - Map output = api.getRendererDevices(playerIdArg); - wrapped.add(0, output); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + ViewMessage input = ViewMessage.fromMap((Map)message); + RendererDevicesMessage output = api.getRendererDevices(input); + wrapped.put("result", output.toMap()); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.castToRenderer" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.castToRenderer", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - String rendererIdArg = (String) args.get(1); - try { - api.castToRenderer(playerIdArg, rendererIdArg); - wrapped.add(0, null); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + RenderDeviceMessage input = RenderDeviceMessage.fromMap((Map)message); + api.castToRenderer(input); + wrapped.put("result", null); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.startRecording" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.startRecording", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - String saveDirectoryArg = (String) args.get(1); - try { - Boolean output = api.startRecording(playerIdArg, saveDirectoryArg); - wrapped.add(0, output); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + RecordMessage input = RecordMessage.fromMap((Map)message); + BooleanMessage output = api.startRecording(input); + wrapped.put("result", output.toMap()); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } { BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.stopRecording" + messageChannelSuffix, getCodec()); + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.VlcPlayerApi.stopRecording", new StandardMessageCodec()); if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - Long playerIdArg = (Long) args.get(0); - try { - Boolean output = api.stopRecording(playerIdArg); - wrapped.add(0, output); - } - catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); + channel.setMessageHandler((message, reply) -> { + Map wrapped = new HashMap<>(); + try { + @SuppressWarnings("ConstantConditions") + ViewMessage input = ViewMessage.fromMap((Map)message); + BooleanMessage output = api.stopRecording(input); + wrapped.put("result", output.toMap()); + } + catch (Error | RuntimeException exception) { + wrapped.put("error", wrapError(exception)); + } + reply.reply(wrapped); + }); } else { channel.setMessageHandler(null); } } } } + private static Map wrapError(Throwable exception) { + Map errorMap = new HashMap<>(); + errorMap.put("message", exception.toString()); + errorMap.put("code", exception.getClass().getSimpleName()); + errorMap.put("details", null); + return errorMap; + } } diff --git a/flutter_vlc_player/android/src/main/java/software/solid/fluttervlcplayer/QueuingEventSink.java b/flutter_vlc_player/android/src/main/java/software/solid/fluttervlcplayer/QueuingEventSink.java index 2e2e078f..20ad3cb3 100644 --- a/flutter_vlc_player/android/src/main/java/software/solid/fluttervlcplayer/QueuingEventSink.java +++ b/flutter_vlc_player/android/src/main/java/software/solid/fluttervlcplayer/QueuingEventSink.java @@ -15,7 +15,7 @@ */ final class QueuingEventSink implements EventChannel.EventSink { private EventChannel.EventSink delegate; - private final ArrayList eventQueue = new ArrayList<>(); + private ArrayList eventQueue = new ArrayList<>(); private boolean done = false; public void setDelegate(EventChannel.EventSink delegate) { @@ -66,8 +66,7 @@ private void maybeFlush() { eventQueue.clear(); } - private static class EndOfStreamEvent { - } + private static class EndOfStreamEvent {} private static class ErrorEvent { String code; diff --git a/flutter_vlc_player/android/src/main/java/software/solid/fluttervlcplayer/VLCTextureView.java b/flutter_vlc_player/android/src/main/java/software/solid/fluttervlcplayer/VLCTextureView.java index 8a1fd50b..520aa011 100644 --- a/flutter_vlc_player/android/src/main/java/software/solid/fluttervlcplayer/VLCTextureView.java +++ b/flutter_vlc_player/android/src/main/java/software/solid/fluttervlcplayer/VLCTextureView.java @@ -1,19 +1,17 @@ package software.solid.fluttervlcplayer; +import org.videolan.libvlc.MediaPlayer; +import org.videolan.libvlc.interfaces.IVLCVout; + import android.content.Context; import android.graphics.SurfaceTexture; +import android.view.TextureView; +import android.view.View; import android.os.Handler; import android.os.Looper; import android.util.AttributeSet; -import android.view.TextureView; -import android.view.View; import android.view.ViewGroup; -import androidx.annotation.NonNull; - -import org.videolan.libvlc.MediaPlayer; -import org.videolan.libvlc.interfaces.IVLCVout; - import io.flutter.view.TextureRegistry; public class VLCTextureView extends TextureView implements TextureView.SurfaceTextureListener, View.OnLayoutChangeListener, IVLCVout.OnNewVideoLayoutListener { @@ -100,7 +98,7 @@ private void updateSurfaceTexture() { } @Override - public void onSurfaceTextureAvailable(@NonNull SurfaceTexture surface, int width, int height) { + public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) { if (mSurfaceTexture == null || mSurfaceTexture.isReleased()) { mSurfaceTexture = surface; @@ -129,12 +127,12 @@ public void onSurfaceTextureAvailable(@NonNull SurfaceTexture surface, int width } @Override - public void onSurfaceTextureSizeChanged(@NonNull SurfaceTexture surface, int width, int height) { + public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) { setSize(width, height); } @Override - public boolean onSurfaceTextureDestroyed(@NonNull SurfaceTexture surface) { + public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) { if (mMediaPlayer != null) { wasPlaying = mMediaPlayer.isPlaying(); } @@ -152,14 +150,14 @@ public boolean onSurfaceTextureDestroyed(@NonNull SurfaceTexture surface) { } @Override - public void onSurfaceTextureUpdated(@NonNull SurfaceTexture surface) { + public void onSurfaceTextureUpdated(SurfaceTexture surface) { } @Override public void onNewVideoLayout(IVLCVout vlcVout, int width, int height, int visibleWidth, int visibleHeight, int sarNum, int sarDen) { if (width * height == 0) return; - + setSize(width, height); } @@ -178,21 +176,24 @@ public void updateLayoutSize(View view) { } private void setSize(int width, int height) { - if (width * height <= 1) return; + int mVideoWidth = 0; + int mVideoHeight = 0; + mVideoWidth = width; + mVideoHeight = height; + if (mVideoWidth * mVideoHeight <= 1) return; // Screen size int w = this.getWidth(); int h = this.getHeight(); // Size - // TODO: fix this always false condition, it seems to reverse the width and height if (w > h && w < h) { int i = w; w = h; h = i; } - float videoAR = (float) width / (float) height; + float videoAR = (float) mVideoWidth / (float) mVideoHeight; float screenAR = (float) w / (float) h; if (screenAR < videoAR) { diff --git a/flutter_vlc_player/example/android/settings.gradle.kts b/flutter_vlc_player/example/android/settings.gradle.kts index a439442c..11662c30 100644 --- a/flutter_vlc_player/example/android/settings.gradle.kts +++ b/flutter_vlc_player/example/android/settings.gradle.kts @@ -19,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" id("com.android.application") version "8.7.0" apply false - id("org.jetbrains.kotlin.android") version "1.8.22" apply false + id("org.jetbrains.kotlin.android") version "2.1.0" apply false } include(":app") diff --git a/flutter_vlc_player/example/ios/Flutter/AppFrameworkInfo.plist b/flutter_vlc_player/example/ios/Flutter/AppFrameworkInfo.plist index 8c6e5614..d57061dd 100644 --- a/flutter_vlc_player/example/ios/Flutter/AppFrameworkInfo.plist +++ b/flutter_vlc_player/example/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/flutter_vlc_player/example/ios/Flutter/ephemeral/flutter_lldb_helper.py b/flutter_vlc_player/example/ios/Flutter/ephemeral/flutter_lldb_helper.py new file mode 100644 index 00000000..a88caf99 --- /dev/null +++ b/flutter_vlc_player/example/ios/Flutter/ephemeral/flutter_lldb_helper.py @@ -0,0 +1,32 @@ +# +# Generated file, do not edit. +# + +import lldb + +def handle_new_rx_page(frame: lldb.SBFrame, bp_loc, extra_args, intern_dict): + """Intercept NOTIFY_DEBUGGER_ABOUT_RX_PAGES and touch the pages.""" + base = frame.register["x0"].GetValueAsAddress() + page_len = frame.register["x1"].GetValueAsUnsigned() + + # Note: NOTIFY_DEBUGGER_ABOUT_RX_PAGES will check contents of the + # first page to see if handled it correctly. This makes diagnosing + # misconfiguration (e.g. missing breakpoint) easier. + data = bytearray(page_len) + data[0:8] = b'IHELPED!' + + error = lldb.SBError() + frame.GetThread().GetProcess().WriteMemory(base, data, error) + if not error.Success(): + print(f'Failed to write into {base}[+{page_len}]', error) + return + +def __lldb_init_module(debugger: lldb.SBDebugger, _): + target = debugger.GetDummyTarget() + # Caveat: must use BreakpointCreateByRegEx here and not + # BreakpointCreateByName. For some reasons callback function does not + # get carried over from dummy target for the later. + bp = target.BreakpointCreateByRegex("^NOTIFY_DEBUGGER_ABOUT_RX_PAGES$") + bp.SetScriptCallbackFunction('{}.handle_new_rx_page'.format(__name__)) + bp.SetAutoContinue(True) + print("-- LLDB integration loaded --") diff --git a/flutter_vlc_player/example/ios/Flutter/ephemeral/flutter_lldbinit b/flutter_vlc_player/example/ios/Flutter/ephemeral/flutter_lldbinit new file mode 100644 index 00000000..e3ba6fbe --- /dev/null +++ b/flutter_vlc_player/example/ios/Flutter/ephemeral/flutter_lldbinit @@ -0,0 +1,5 @@ +# +# Generated file, do not edit. +# + +command script import --relative-to-command-file flutter_lldb_helper.py diff --git a/flutter_vlc_player/example/ios/Runner.xcodeproj/project.pbxproj b/flutter_vlc_player/example/ios/Runner.xcodeproj/project.pbxproj index dd25dceb..b08bb085 100644 --- a/flutter_vlc_player/example/ios/Runner.xcodeproj/project.pbxproj +++ b/flutter_vlc_player/example/ios/Runner.xcodeproj/project.pbxproj @@ -355,7 +355,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -442,7 +442,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -492,7 +492,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/flutter_vlc_player/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/flutter_vlc_player/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index c53e2b31..9c12df59 100644 --- a/flutter_vlc_player/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/flutter_vlc_player/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -26,6 +26,7 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + customLLDBInitFile = "$(SRCROOT)/Flutter/ephemeral/flutter_lldbinit" shouldUseLaunchSchemeArgsEnv = "YES"> =2.18.0 <4.0.0" + sdk: '>=3.8.0 <4.0.0' dependencies: cupertino_icons: ^1.0.8 diff --git a/flutter_vlc_player/ios/Classes/Messages.swift b/flutter_vlc_player/ios/Classes/Messages.swift deleted file mode 100644 index 38bacdc4..00000000 --- a/flutter_vlc_player/ios/Classes/Messages.swift +++ /dev/null @@ -1,1070 +0,0 @@ -// Autogenerated from Pigeon (v25.2.0), do not edit directly. -// See also: https://pub.dev/packages/pigeon - -import Foundation - -#if os(iOS) - import Flutter -#elseif os(macOS) - import FlutterMacOS -#else - #error("Unsupported platform.") -#endif - -/// Error class for passing custom error details to Dart side. -final class PigeonError: Error { - let code: String - let message: String? - let details: Sendable? - - init(code: String, message: String?, details: Sendable?) { - self.code = code - self.message = message - self.details = details - } - - var localizedDescription: String { - return - "PigeonError(code: \(code), message: \(message ?? ""), details: \(details ?? "")" - } -} - -private func wrapResult(_ result: Any?) -> [Any?] { - return [result] -} - -private func wrapError(_ error: Any) -> [Any?] { - if let pigeonError = error as? PigeonError { - return [ - pigeonError.code, - pigeonError.message, - pigeonError.details, - ] - } - if let flutterError = error as? FlutterError { - return [ - flutterError.code, - flutterError.message, - flutterError.details, - ] - } - return [ - "\(error)", - "\(type(of: error))", - "Stacktrace: \(Thread.callStackSymbols)", - ] -} - -private func isNullish(_ value: Any?) -> Bool { - return value is NSNull || value == nil -} - -private func nilOrValue(_ value: Any?) -> T? { - if value is NSNull { return nil } - return value as! T? -} - -/// Generated class from Pigeon that represents data sent in messages. -struct CreateMessage { - var playerId: Int64 - var uri: String - var type: Int64 - var packageName: String? = nil - var autoPlay: Bool - var hwAcc: Int64? = nil - var options: [String] - - - // swift-format-ignore: AlwaysUseLowerCamelCase - static func fromList(_ pigeonVar_list: [Any?]) -> CreateMessage? { - let playerId = pigeonVar_list[0] as! Int64 - let uri = pigeonVar_list[1] as! String - let type = pigeonVar_list[2] as! Int64 - let packageName: String? = nilOrValue(pigeonVar_list[3]) - let autoPlay = pigeonVar_list[4] as! Bool - let hwAcc: Int64? = nilOrValue(pigeonVar_list[5]) - let options = pigeonVar_list[6] as! [String] - - return CreateMessage( - playerId: playerId, - uri: uri, - type: type, - packageName: packageName, - autoPlay: autoPlay, - hwAcc: hwAcc, - options: options - ) - } - func toList() -> [Any?] { - return [ - playerId, - uri, - type, - packageName, - autoPlay, - hwAcc, - options, - ] - } -} - -/// Generated class from Pigeon that represents data sent in messages. -struct SetMediaMessage { - var playerId: Int64 - var uri: String - var type: Int64 - var packageName: String? = nil - var autoPlay: Bool - var hwAcc: Int64? = nil - - - // swift-format-ignore: AlwaysUseLowerCamelCase - static func fromList(_ pigeonVar_list: [Any?]) -> SetMediaMessage? { - let playerId = pigeonVar_list[0] as! Int64 - let uri = pigeonVar_list[1] as! String - let type = pigeonVar_list[2] as! Int64 - let packageName: String? = nilOrValue(pigeonVar_list[3]) - let autoPlay = pigeonVar_list[4] as! Bool - let hwAcc: Int64? = nilOrValue(pigeonVar_list[5]) - - return SetMediaMessage( - playerId: playerId, - uri: uri, - type: type, - packageName: packageName, - autoPlay: autoPlay, - hwAcc: hwAcc - ) - } - func toList() -> [Any?] { - return [ - playerId, - uri, - type, - packageName, - autoPlay, - hwAcc, - ] - } -} - -/// Generated class from Pigeon that represents data sent in messages. -struct SpuTracksMessage { - var playerId: Int64 - var subtitles: [AnyHashable: Any] - - - // swift-format-ignore: AlwaysUseLowerCamelCase - static func fromList(_ pigeonVar_list: [Any?]) -> SpuTracksMessage? { - let playerId = pigeonVar_list[0] as! Int64 - let subtitles = pigeonVar_list[1] as! [AnyHashable: Any] - - return SpuTracksMessage( - playerId: playerId, - subtitles: subtitles - ) - } - func toList() -> [Any?] { - return [ - playerId, - subtitles, - ] - } -} - -/// Generated class from Pigeon that represents data sent in messages. -struct AddSubtitleMessage { - var playerId: Int64 - var uri: String - var type: Int64 - var isSelected: Bool - - - // swift-format-ignore: AlwaysUseLowerCamelCase - static func fromList(_ pigeonVar_list: [Any?]) -> AddSubtitleMessage? { - let playerId = pigeonVar_list[0] as! Int64 - let uri = pigeonVar_list[1] as! String - let type = pigeonVar_list[2] as! Int64 - let isSelected = pigeonVar_list[3] as! Bool - - return AddSubtitleMessage( - playerId: playerId, - uri: uri, - type: type, - isSelected: isSelected - ) - } - func toList() -> [Any?] { - return [ - playerId, - uri, - type, - isSelected, - ] - } -} - -/// Generated class from Pigeon that represents data sent in messages. -struct AddAudioMessage { - var playerId: Int64 - var uri: String - var type: Int64 - var isSelected: Bool - - - // swift-format-ignore: AlwaysUseLowerCamelCase - static func fromList(_ pigeonVar_list: [Any?]) -> AddAudioMessage? { - let playerId = pigeonVar_list[0] as! Int64 - let uri = pigeonVar_list[1] as! String - let type = pigeonVar_list[2] as! Int64 - let isSelected = pigeonVar_list[3] as! Bool - - return AddAudioMessage( - playerId: playerId, - uri: uri, - type: type, - isSelected: isSelected - ) - } - func toList() -> [Any?] { - return [ - playerId, - uri, - type, - isSelected, - ] - } -} - -private class MessagesPigeonCodecReader: FlutterStandardReader { - override func readValue(ofType type: UInt8) -> Any? { - switch type { - case 129: - return CreateMessage.fromList(self.readValue() as! [Any?]) - case 130: - return SetMediaMessage.fromList(self.readValue() as! [Any?]) - case 131: - return SpuTracksMessage.fromList(self.readValue() as! [Any?]) - case 132: - return AddSubtitleMessage.fromList(self.readValue() as! [Any?]) - case 133: - return AddAudioMessage.fromList(self.readValue() as! [Any?]) - default: - return super.readValue(ofType: type) - } - } -} - -private class MessagesPigeonCodecWriter: FlutterStandardWriter { - override func writeValue(_ value: Any) { - if let value = value as? CreateMessage { - super.writeByte(129) - super.writeValue(value.toList()) - } else if let value = value as? SetMediaMessage { - super.writeByte(130) - super.writeValue(value.toList()) - } else if let value = value as? SpuTracksMessage { - super.writeByte(131) - super.writeValue(value.toList()) - } else if let value = value as? AddSubtitleMessage { - super.writeByte(132) - super.writeValue(value.toList()) - } else if let value = value as? AddAudioMessage { - super.writeByte(133) - super.writeValue(value.toList()) - } else { - super.writeValue(value) - } - } -} - -private class MessagesPigeonCodecReaderWriter: FlutterStandardReaderWriter { - override func reader(with data: Data) -> FlutterStandardReader { - return MessagesPigeonCodecReader(data: data) - } - - override func writer(with data: NSMutableData) -> FlutterStandardWriter { - return MessagesPigeonCodecWriter(data: data) - } -} - -class MessagesPigeonCodec: FlutterStandardMessageCodec, @unchecked Sendable { - static let shared = MessagesPigeonCodec(readerWriter: MessagesPigeonCodecReaderWriter()) -} - -/// Generated protocol from Pigeon that represents a handler of messages from Flutter. -protocol VlcPlayerApi { - func initialize() throws - func create(msg: CreateMessage) throws - func dispose(playerId: Int64) throws - func setStreamUrl(msg: SetMediaMessage) throws - func play(playerId: Int64) throws - func pause(playerId: Int64) throws - func stop(playerId: Int64) throws - func isPlaying(playerId: Int64) throws -> Bool - func isSeekable(playerId: Int64) throws -> Bool - func setLooping(playerId: Int64, isLooping: Bool) throws - func seekTo(playerId: Int64, position: Int64) throws - func position(playerId: Int64) throws -> Int64 - func duration(playerId: Int64) throws -> Int64 - func setVolume(playerId: Int64, volume: Int64) throws - func getVolume(playerId: Int64) throws -> Int64 - func setPlaybackSpeed(playerId: Int64, speed: Double) throws - func getPlaybackSpeed(playerId: Int64) throws -> Double - func takeSnapshot(playerId: Int64) throws -> String? - func getSpuTracksCount(playerId: Int64) throws -> Int64 - func getSpuTracks(playerId: Int64) throws -> [Int64: String] - func setSpuTrack(playerId: Int64, spuTrackNumber: Int64) throws - func getSpuTrack(playerId: Int64) throws -> Int64 - func setSpuDelay(playerId: Int64, delay: Int64) throws - func getSpuDelay(playerId: Int64) throws -> Int64 - func addSubtitleTrack(msg: AddSubtitleMessage) throws - func getAudioTracksCount(playerId: Int64) throws -> Int64 - func getAudioTracks(playerId: Int64) throws -> [Int64: String] - func setAudioTrack(playerId: Int64, audioTrackNumber: Int64) throws - func getAudioTrack(playerId: Int64) throws -> Int64 - func setAudioDelay(playerId: Int64, delay: Int64) throws - func getAudioDelay(playerId: Int64) throws -> Int64 - func addAudioTrack(msg: AddAudioMessage) throws - func getVideoTracksCount(playerId: Int64) throws -> Int64 - func getVideoTracks(playerId: Int64) throws -> [Int64: String] - func setVideoTrack(playerId: Int64, videoTrackNumber: Int64) throws - func getVideoTrack(playerId: Int64) throws -> Int64 - func setVideoScale(playerId: Int64, scale: Double) throws - func getVideoScale(playerId: Int64) throws -> Double - func setVideoAspectRatio(playerId: Int64, aspectRatio: String) throws - func getVideoAspectRatio(playerId: Int64) throws -> String - func getAvailableRendererServices(playerId: Int64) throws -> [String] - func startRendererScanning(playerId: Int64, rendererService: String) throws - func stopRendererScanning(playerId: Int64) throws - func getRendererDevices(playerId: Int64) throws -> [String: String] - func castToRenderer(playerId: Int64, rendererId: String) throws - func startRecording(playerId: Int64, saveDirectory: String) throws -> Bool - func stopRecording(playerId: Int64) throws -> Bool -} - -/// Generated setup class from Pigeon to handle messages through the `binaryMessenger`. -class VlcPlayerApiSetup { - static var codec: FlutterStandardMessageCodec { MessagesPigeonCodec.shared } - /// Sets up an instance of `VlcPlayerApi` to handle messages through the `binaryMessenger`. - static func setUp(binaryMessenger: FlutterBinaryMessenger, api: VlcPlayerApi?, messageChannelSuffix: String = "") { - let channelSuffix = messageChannelSuffix.count > 0 ? ".\(messageChannelSuffix)" : "" - let initializeChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.initialize\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - initializeChannel.setMessageHandler { _, reply in - do { - try api.initialize() - reply(wrapResult(nil)) - } catch { - reply(wrapError(error)) - } - } - } else { - initializeChannel.setMessageHandler(nil) - } - let createChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.create\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - createChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let msgArg = args[0] as! CreateMessage - do { - try api.create(msg: msgArg) - reply(wrapResult(nil)) - } catch { - reply(wrapError(error)) - } - } - } else { - createChannel.setMessageHandler(nil) - } - let disposeChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.dispose\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - disposeChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - do { - try api.dispose(playerId: playerIdArg) - reply(wrapResult(nil)) - } catch { - reply(wrapError(error)) - } - } - } else { - disposeChannel.setMessageHandler(nil) - } - let setStreamUrlChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.setStreamUrl\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - setStreamUrlChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let msgArg = args[0] as! SetMediaMessage - do { - try api.setStreamUrl(msg: msgArg) - reply(wrapResult(nil)) - } catch { - reply(wrapError(error)) - } - } - } else { - setStreamUrlChannel.setMessageHandler(nil) - } - let playChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.play\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - playChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - do { - try api.play(playerId: playerIdArg) - reply(wrapResult(nil)) - } catch { - reply(wrapError(error)) - } - } - } else { - playChannel.setMessageHandler(nil) - } - let pauseChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.pause\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - pauseChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - do { - try api.pause(playerId: playerIdArg) - reply(wrapResult(nil)) - } catch { - reply(wrapError(error)) - } - } - } else { - pauseChannel.setMessageHandler(nil) - } - let stopChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.stop\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - stopChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - do { - try api.stop(playerId: playerIdArg) - reply(wrapResult(nil)) - } catch { - reply(wrapError(error)) - } - } - } else { - stopChannel.setMessageHandler(nil) - } - let isPlayingChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.isPlaying\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - isPlayingChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - do { - let result = try api.isPlaying(playerId: playerIdArg) - reply(wrapResult(result)) - } catch { - reply(wrapError(error)) - } - } - } else { - isPlayingChannel.setMessageHandler(nil) - } - let isSeekableChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.isSeekable\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - isSeekableChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - do { - let result = try api.isSeekable(playerId: playerIdArg) - reply(wrapResult(result)) - } catch { - reply(wrapError(error)) - } - } - } else { - isSeekableChannel.setMessageHandler(nil) - } - let setLoopingChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.setLooping\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - setLoopingChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - let isLoopingArg = args[1] as! Bool - do { - try api.setLooping(playerId: playerIdArg, isLooping: isLoopingArg) - reply(wrapResult(nil)) - } catch { - reply(wrapError(error)) - } - } - } else { - setLoopingChannel.setMessageHandler(nil) - } - let seekToChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.seekTo\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - seekToChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - let positionArg = args[1] as! Int64 - do { - try api.seekTo(playerId: playerIdArg, position: positionArg) - reply(wrapResult(nil)) - } catch { - reply(wrapError(error)) - } - } - } else { - seekToChannel.setMessageHandler(nil) - } - let positionChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.position\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - positionChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - do { - let result = try api.position(playerId: playerIdArg) - reply(wrapResult(result)) - } catch { - reply(wrapError(error)) - } - } - } else { - positionChannel.setMessageHandler(nil) - } - let durationChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.duration\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - durationChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - do { - let result = try api.duration(playerId: playerIdArg) - reply(wrapResult(result)) - } catch { - reply(wrapError(error)) - } - } - } else { - durationChannel.setMessageHandler(nil) - } - let setVolumeChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.setVolume\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - setVolumeChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - let volumeArg = args[1] as! Int64 - do { - try api.setVolume(playerId: playerIdArg, volume: volumeArg) - reply(wrapResult(nil)) - } catch { - reply(wrapError(error)) - } - } - } else { - setVolumeChannel.setMessageHandler(nil) - } - let getVolumeChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.getVolume\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - getVolumeChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - do { - let result = try api.getVolume(playerId: playerIdArg) - reply(wrapResult(result)) - } catch { - reply(wrapError(error)) - } - } - } else { - getVolumeChannel.setMessageHandler(nil) - } - let setPlaybackSpeedChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.setPlaybackSpeed\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - setPlaybackSpeedChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - let speedArg = args[1] as! Double - do { - try api.setPlaybackSpeed(playerId: playerIdArg, speed: speedArg) - reply(wrapResult(nil)) - } catch { - reply(wrapError(error)) - } - } - } else { - setPlaybackSpeedChannel.setMessageHandler(nil) - } - let getPlaybackSpeedChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.getPlaybackSpeed\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - getPlaybackSpeedChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - do { - let result = try api.getPlaybackSpeed(playerId: playerIdArg) - reply(wrapResult(result)) - } catch { - reply(wrapError(error)) - } - } - } else { - getPlaybackSpeedChannel.setMessageHandler(nil) - } - let takeSnapshotChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.takeSnapshot\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - takeSnapshotChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - do { - let result = try api.takeSnapshot(playerId: playerIdArg) - reply(wrapResult(result)) - } catch { - reply(wrapError(error)) - } - } - } else { - takeSnapshotChannel.setMessageHandler(nil) - } - let getSpuTracksCountChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.getSpuTracksCount\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - getSpuTracksCountChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - do { - let result = try api.getSpuTracksCount(playerId: playerIdArg) - reply(wrapResult(result)) - } catch { - reply(wrapError(error)) - } - } - } else { - getSpuTracksCountChannel.setMessageHandler(nil) - } - let getSpuTracksChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.getSpuTracks\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - getSpuTracksChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - do { - let result = try api.getSpuTracks(playerId: playerIdArg) - reply(wrapResult(result)) - } catch { - reply(wrapError(error)) - } - } - } else { - getSpuTracksChannel.setMessageHandler(nil) - } - let setSpuTrackChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.setSpuTrack\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - setSpuTrackChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - let spuTrackNumberArg = args[1] as! Int64 - do { - try api.setSpuTrack(playerId: playerIdArg, spuTrackNumber: spuTrackNumberArg) - reply(wrapResult(nil)) - } catch { - reply(wrapError(error)) - } - } - } else { - setSpuTrackChannel.setMessageHandler(nil) - } - let getSpuTrackChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.getSpuTrack\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - getSpuTrackChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - do { - let result = try api.getSpuTrack(playerId: playerIdArg) - reply(wrapResult(result)) - } catch { - reply(wrapError(error)) - } - } - } else { - getSpuTrackChannel.setMessageHandler(nil) - } - let setSpuDelayChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.setSpuDelay\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - setSpuDelayChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - let delayArg = args[1] as! Int64 - do { - try api.setSpuDelay(playerId: playerIdArg, delay: delayArg) - reply(wrapResult(nil)) - } catch { - reply(wrapError(error)) - } - } - } else { - setSpuDelayChannel.setMessageHandler(nil) - } - let getSpuDelayChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.getSpuDelay\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - getSpuDelayChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - do { - let result = try api.getSpuDelay(playerId: playerIdArg) - reply(wrapResult(result)) - } catch { - reply(wrapError(error)) - } - } - } else { - getSpuDelayChannel.setMessageHandler(nil) - } - let addSubtitleTrackChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.addSubtitleTrack\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - addSubtitleTrackChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let msgArg = args[0] as! AddSubtitleMessage - do { - try api.addSubtitleTrack(msg: msgArg) - reply(wrapResult(nil)) - } catch { - reply(wrapError(error)) - } - } - } else { - addSubtitleTrackChannel.setMessageHandler(nil) - } - let getAudioTracksCountChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.getAudioTracksCount\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - getAudioTracksCountChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - do { - let result = try api.getAudioTracksCount(playerId: playerIdArg) - reply(wrapResult(result)) - } catch { - reply(wrapError(error)) - } - } - } else { - getAudioTracksCountChannel.setMessageHandler(nil) - } - let getAudioTracksChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.getAudioTracks\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - getAudioTracksChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - do { - let result = try api.getAudioTracks(playerId: playerIdArg) - reply(wrapResult(result)) - } catch { - reply(wrapError(error)) - } - } - } else { - getAudioTracksChannel.setMessageHandler(nil) - } - let setAudioTrackChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.setAudioTrack\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - setAudioTrackChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - let audioTrackNumberArg = args[1] as! Int64 - do { - try api.setAudioTrack(playerId: playerIdArg, audioTrackNumber: audioTrackNumberArg) - reply(wrapResult(nil)) - } catch { - reply(wrapError(error)) - } - } - } else { - setAudioTrackChannel.setMessageHandler(nil) - } - let getAudioTrackChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.getAudioTrack\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - getAudioTrackChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - do { - let result = try api.getAudioTrack(playerId: playerIdArg) - reply(wrapResult(result)) - } catch { - reply(wrapError(error)) - } - } - } else { - getAudioTrackChannel.setMessageHandler(nil) - } - let setAudioDelayChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.setAudioDelay\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - setAudioDelayChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - let delayArg = args[1] as! Int64 - do { - try api.setAudioDelay(playerId: playerIdArg, delay: delayArg) - reply(wrapResult(nil)) - } catch { - reply(wrapError(error)) - } - } - } else { - setAudioDelayChannel.setMessageHandler(nil) - } - let getAudioDelayChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.getAudioDelay\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - getAudioDelayChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - do { - let result = try api.getAudioDelay(playerId: playerIdArg) - reply(wrapResult(result)) - } catch { - reply(wrapError(error)) - } - } - } else { - getAudioDelayChannel.setMessageHandler(nil) - } - let addAudioTrackChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.addAudioTrack\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - addAudioTrackChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let msgArg = args[0] as! AddAudioMessage - do { - try api.addAudioTrack(msg: msgArg) - reply(wrapResult(nil)) - } catch { - reply(wrapError(error)) - } - } - } else { - addAudioTrackChannel.setMessageHandler(nil) - } - let getVideoTracksCountChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.getVideoTracksCount\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - getVideoTracksCountChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - do { - let result = try api.getVideoTracksCount(playerId: playerIdArg) - reply(wrapResult(result)) - } catch { - reply(wrapError(error)) - } - } - } else { - getVideoTracksCountChannel.setMessageHandler(nil) - } - let getVideoTracksChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.getVideoTracks\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - getVideoTracksChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - do { - let result = try api.getVideoTracks(playerId: playerIdArg) - reply(wrapResult(result)) - } catch { - reply(wrapError(error)) - } - } - } else { - getVideoTracksChannel.setMessageHandler(nil) - } - let setVideoTrackChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.setVideoTrack\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - setVideoTrackChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - let videoTrackNumberArg = args[1] as! Int64 - do { - try api.setVideoTrack(playerId: playerIdArg, videoTrackNumber: videoTrackNumberArg) - reply(wrapResult(nil)) - } catch { - reply(wrapError(error)) - } - } - } else { - setVideoTrackChannel.setMessageHandler(nil) - } - let getVideoTrackChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.getVideoTrack\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - getVideoTrackChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - do { - let result = try api.getVideoTrack(playerId: playerIdArg) - reply(wrapResult(result)) - } catch { - reply(wrapError(error)) - } - } - } else { - getVideoTrackChannel.setMessageHandler(nil) - } - let setVideoScaleChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.setVideoScale\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - setVideoScaleChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - let scaleArg = args[1] as! Double - do { - try api.setVideoScale(playerId: playerIdArg, scale: scaleArg) - reply(wrapResult(nil)) - } catch { - reply(wrapError(error)) - } - } - } else { - setVideoScaleChannel.setMessageHandler(nil) - } - let getVideoScaleChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.getVideoScale\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - getVideoScaleChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - do { - let result = try api.getVideoScale(playerId: playerIdArg) - reply(wrapResult(result)) - } catch { - reply(wrapError(error)) - } - } - } else { - getVideoScaleChannel.setMessageHandler(nil) - } - let setVideoAspectRatioChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.setVideoAspectRatio\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - setVideoAspectRatioChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - let aspectRatioArg = args[1] as! String - do { - try api.setVideoAspectRatio(playerId: playerIdArg, aspectRatio: aspectRatioArg) - reply(wrapResult(nil)) - } catch { - reply(wrapError(error)) - } - } - } else { - setVideoAspectRatioChannel.setMessageHandler(nil) - } - let getVideoAspectRatioChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.getVideoAspectRatio\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - getVideoAspectRatioChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - do { - let result = try api.getVideoAspectRatio(playerId: playerIdArg) - reply(wrapResult(result)) - } catch { - reply(wrapError(error)) - } - } - } else { - getVideoAspectRatioChannel.setMessageHandler(nil) - } - let getAvailableRendererServicesChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.getAvailableRendererServices\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - getAvailableRendererServicesChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - do { - let result = try api.getAvailableRendererServices(playerId: playerIdArg) - reply(wrapResult(result)) - } catch { - reply(wrapError(error)) - } - } - } else { - getAvailableRendererServicesChannel.setMessageHandler(nil) - } - let startRendererScanningChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.startRendererScanning\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - startRendererScanningChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - let rendererServiceArg = args[1] as! String - do { - try api.startRendererScanning(playerId: playerIdArg, rendererService: rendererServiceArg) - reply(wrapResult(nil)) - } catch { - reply(wrapError(error)) - } - } - } else { - startRendererScanningChannel.setMessageHandler(nil) - } - let stopRendererScanningChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.stopRendererScanning\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - stopRendererScanningChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - do { - try api.stopRendererScanning(playerId: playerIdArg) - reply(wrapResult(nil)) - } catch { - reply(wrapError(error)) - } - } - } else { - stopRendererScanningChannel.setMessageHandler(nil) - } - let getRendererDevicesChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.getRendererDevices\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - getRendererDevicesChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - do { - let result = try api.getRendererDevices(playerId: playerIdArg) - reply(wrapResult(result)) - } catch { - reply(wrapError(error)) - } - } - } else { - getRendererDevicesChannel.setMessageHandler(nil) - } - let castToRendererChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.castToRenderer\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - castToRendererChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - let rendererIdArg = args[1] as! String - do { - try api.castToRenderer(playerId: playerIdArg, rendererId: rendererIdArg) - reply(wrapResult(nil)) - } catch { - reply(wrapError(error)) - } - } - } else { - castToRendererChannel.setMessageHandler(nil) - } - let startRecordingChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.startRecording\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - startRecordingChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - let saveDirectoryArg = args[1] as! String - do { - let result = try api.startRecording(playerId: playerIdArg, saveDirectory: saveDirectoryArg) - reply(wrapResult(result)) - } catch { - reply(wrapError(error)) - } - } - } else { - startRecordingChannel.setMessageHandler(nil) - } - let stopRecordingChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_vlc_player_platform_interface.VlcPlayerApi.stopRecording\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - stopRecordingChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let playerIdArg = args[0] as! Int64 - do { - let result = try api.stopRecording(playerId: playerIdArg) - reply(wrapResult(result)) - } catch { - reply(wrapError(error)) - } - } - } else { - stopRecordingChannel.setMessageHandler(nil) - } - } -} diff --git a/flutter_vlc_player/ios/Classes/VlcViewBuilder.swift b/flutter_vlc_player/ios/Classes/VlcViewBuilder.swift index 16fddf10..cba07629 100644 --- a/flutter_vlc_player/ios/Classes/VlcViewBuilder.swift +++ b/flutter_vlc_player/ios/Classes/VlcViewBuilder.swift @@ -1,378 +1,456 @@ -import Flutter import Foundation +import Flutter -public class VLCViewBuilder: NSObject, VlcPlayerApi { - var players = [Int: VLCViewController]() +public class VLCViewBuilder: NSObject, VlcPlayerApi{ + var players = [Int:VLCViewController]() private var registrar: FlutterPluginRegistrar private var messenger: FlutterBinaryMessenger private var options: [String] init(registrar: FlutterPluginRegistrar) { self.registrar = registrar - messenger = registrar.messenger() + self.messenger = registrar.messenger() options = [] super.init() // - VlcPlayerApiSetup.setUp(binaryMessenger: messenger, api: self) + VlcPlayerApiSetup(messenger, self) } - public func build(frame: CGRect, viewId: Int64) -> VLCViewController { + public func build(frame: CGRect, viewId: Int64) -> VLCViewController{ // var vlcViewController: VLCViewController vlcViewController = VLCViewController(frame: frame, viewId: viewId, messenger: messenger) - players[viewId.int] = vlcViewController - return vlcViewController + players[Int(viewId)] = vlcViewController + return vlcViewController; } - func getPlayer(id: Int64) throws -> VLCViewController { - guard let player = players[id.int] else { - throw PigeonError(code: "player_not_found", message: "Player with id \(id) not found", details: nil) - } - - return player + public func initialize(_ error: AutoreleasingUnsafeMutablePointer) { + return } - public func initialize() throws {} + func getPlayer(viewId: NSNumber?) -> VLCViewController? { + guard viewId != nil else { + return nil + + } + return players[Int(truncating: viewId! as NSNumber)] + } - func create(msg: CreateMessage) throws { - let player = try getPlayer(id: msg.playerId) + public func create(_ input: CreateMessage, error: AutoreleasingUnsafeMutablePointer) { + + let player = getPlayer(viewId: input.viewId) - var isAssetUrl = false - var mediaUrl = "" + var isAssetUrl: Bool = false + var mediaUrl: String = "" - if DataSourceType(rawValue: msg.type.int) == DataSourceType.ASSET { + if(DataSourceType(rawValue: Int(truncating: input.type!)) == DataSourceType.ASSET){ var assetPath: String - if let packageName = msg.packageName { - assetPath = registrar.lookupKey(forAsset: msg.uri, fromPackage: packageName) + if input.packageName != nil { + assetPath = registrar.lookupKey(forAsset: input.uri ?? "" , fromPackage: input.packageName ?? "") } else { - assetPath = registrar.lookupKey(forAsset: msg.uri) + assetPath = registrar.lookupKey(forAsset: input.uri ?? "") } mediaUrl = assetPath isAssetUrl = true - } else { - mediaUrl = msg.uri + }else{ + mediaUrl = input.uri ?? "" isAssetUrl = false } - options = msg.options + options = input.options as? [String] ?? [] - player.setMediaPlayerUrl( + player?.setMediaPlayerUrl( uri: mediaUrl, isAssetUrl: isAssetUrl, - autoPlay: msg.autoPlay, - hwAcc: msg.hwAcc?.int ?? HWAccellerationType.HW_ACCELERATION_AUTOMATIC.rawValue, + autoPlay: input.autoPlay?.boolValue ?? true, + hwAcc: input.hwAcc?.intValue ?? HWAccellerationType.HW_ACCELERATION_AUTOMATIC.rawValue, options: options ) } - func dispose(playerId: Int64) throws { - let player = try getPlayer(id: playerId) + public func dispose(_ input: ViewMessage, error: AutoreleasingUnsafeMutablePointer) { - player.dispose() - players.removeValue(forKey: playerId.int) + let player = getPlayer(viewId: input.viewId) + + player?.dispose() + players.removeValue(forKey: input.viewId as! Int) } - func setStreamUrl(msg: SetMediaMessage) throws { - let player = try getPlayer(id: msg.playerId) + public func setStreamUrl(_ input: SetMediaMessage, error: AutoreleasingUnsafeMutablePointer) { + + let player = getPlayer(viewId: input.viewId) - var isAssetUrl = false - var mediaUrl = "" + var isAssetUrl: Bool = false + var mediaUrl: String = "" - if DataSourceType(rawValue: msg.type.int) == DataSourceType.ASSET { + if(DataSourceType(rawValue: Int(truncating: input.type!)) == DataSourceType.ASSET){ var assetPath: String - if let packageName = msg.packageName { - assetPath = registrar.lookupKey(forAsset: msg.uri, fromPackage: packageName) + if input.packageName != nil { + assetPath = registrar.lookupKey(forAsset: input.uri ?? "" , fromPackage: input.packageName ?? "") } else { - assetPath = registrar.lookupKey(forAsset: msg.uri) + assetPath = registrar.lookupKey(forAsset: input.uri ?? "") } mediaUrl = assetPath isAssetUrl = true - } else { - mediaUrl = msg.uri + }else{ + mediaUrl = input.uri ?? "" isAssetUrl = false } - - player.setMediaPlayerUrl( + player?.setMediaPlayerUrl( uri: mediaUrl, isAssetUrl: isAssetUrl, - autoPlay: msg.autoPlay, - hwAcc: msg.hwAcc?.int ?? HWAccellerationType.HW_ACCELERATION_AUTOMATIC.rawValue, + autoPlay: input.autoPlay?.boolValue ?? true, + hwAcc: input.hwAcc?.intValue ?? HWAccellerationType.HW_ACCELERATION_AUTOMATIC.rawValue, options: options ) } - func play(playerId: Int64) throws { - let player = try getPlayer(id: playerId) + public func play(_ input: ViewMessage, error: AutoreleasingUnsafeMutablePointer) { + + let player = getPlayer(viewId: input.viewId) - player.play() + player?.play() } - func pause(playerId: Int64) throws { - let player = try getPlayer(id: playerId) + public func pause(_ input: ViewMessage, error: AutoreleasingUnsafeMutablePointer) { - player.pause() + let player = getPlayer(viewId: input.viewId) + + player?.pause() } - func stop(playerId: Int64) throws { - let player = try getPlayer(id: playerId) + public func stop(_ input: ViewMessage, error: AutoreleasingUnsafeMutablePointer) { + + let player = getPlayer(viewId: input.viewId) - player.stop() + player?.stop() } - func isPlaying(playerId: Int64) throws -> Bool { - return try getPlayer(id: playerId).isPlaying + public func isPlaying(_ input: ViewMessage, error: AutoreleasingUnsafeMutablePointer) -> BooleanMessage? { + + let player = getPlayer(viewId: input.viewId) + + let message: BooleanMessage = BooleanMessage() + message.result = player?.isPlaying() + return message } - func isSeekable(playerId: Int64) throws -> Bool { - return try getPlayer(id: playerId).isSeekable + public func isSeekable(_ input: ViewMessage, error: AutoreleasingUnsafeMutablePointer) -> BooleanMessage? { + + let player = getPlayer(viewId: input.viewId) + + let message: BooleanMessage = BooleanMessage() + message.result = player?.isSeekable() + return message } - func setLooping(playerId: Int64, isLooping: Bool) throws { - let player = try getPlayer(id: playerId) + public func setLooping(_ input: LoopingMessage, error: AutoreleasingUnsafeMutablePointer) { + + let player = getPlayer(viewId: input.viewId) - player.setLooping(isLooping: isLooping) + player?.setLooping(isLooping: input.isLooping) } - func seekTo(playerId: Int64, position: Int64) throws { - let player = try getPlayer(id: playerId) + public func seek(to input: PositionMessage, error: AutoreleasingUnsafeMutablePointer) { + + let player = getPlayer(viewId: input.viewId) - player.seek(position: position) - } - - func position(playerId: Int64) throws -> Int64 { - return try getPlayer(id: playerId).position.int64 + player?.seek(position: input.position) } - func duration(playerId: Int64) throws -> Int64 { - return try getPlayer(id: playerId).duration.int64 + public func position(_ input: ViewMessage, error: AutoreleasingUnsafeMutablePointer) -> PositionMessage? { + + let player = getPlayer(viewId: input.viewId) + + let message: PositionMessage = PositionMessage() + message.position = player?.position() + return message } - func setVolume(playerId: Int64, volume: Int64) throws { - let player = try getPlayer(id: playerId) - player.setVolume(volume: volume) + public func duration(_ input: ViewMessage, error: AutoreleasingUnsafeMutablePointer) -> DurationMessage? { + + let player = getPlayer(viewId: input.viewId) + + let message: DurationMessage = DurationMessage() + message.duration = player?.duration() + return message } - func getVolume(playerId: Int64) throws -> Int64 { - return try getPlayer(id: playerId).volume.int64 + public func setVolume(_ input: VolumeMessage, error: AutoreleasingUnsafeMutablePointer) { + + let player = getPlayer(viewId: input.viewId) + + player?.setVolume(volume: input.volume) } - func setPlaybackSpeed(playerId: Int64, speed: Double) throws { - let player = try getPlayer(id: playerId) + public func getVolume(_ input: ViewMessage, error: AutoreleasingUnsafeMutablePointer) -> VolumeMessage? { + + let player = getPlayer(viewId: input.viewId) - player.setPlaybackSpeed(speed: speed.float) - } - - func getPlaybackSpeed(playerId: Int64) throws -> Double { - return try getPlayer(id: playerId).playbackSpeed.double + let message: VolumeMessage = VolumeMessage() + message.volume = player?.getVolume() + return message } - func takeSnapshot(playerId: Int64) throws -> String? { - return try getPlayer(id: playerId).takeSnapshot() + public func setPlaybackSpeed(_ input: PlaybackSpeedMessage, error: AutoreleasingUnsafeMutablePointer) { + + let player = getPlayer(viewId: input.viewId) + + player?.setPlaybackSpeed(speed: input.speed) } - // MARK: - Subtitle Tracks - - func getSpuTracksCount(playerId: Int64) throws -> Int64 { - return try getPlayer(id: playerId).spuTracksCount.int64 + public func getPlaybackSpeed(_ input: ViewMessage, error: AutoreleasingUnsafeMutablePointer) -> PlaybackSpeedMessage? { + + let player = getPlayer(viewId: input.viewId) + + let message: PlaybackSpeedMessage = PlaybackSpeedMessage() + message.speed = player?.getPlaybackSpeed() + return message } - func getSpuTracks(playerId: Int64) throws -> [Int64: String] { - return try getPlayer(id: playerId).spuTracks.int64Dictionary + public func takeSnapshot(_ input: ViewMessage, error: AutoreleasingUnsafeMutablePointer) -> SnapshotMessage? { + + let player = getPlayer(viewId: input.viewId) + + let message: SnapshotMessage = SnapshotMessage() + message.snapshot = player?.takeSnapshot() + return message } - func setSpuTrack(playerId: Int64, spuTrackNumber: Int64) throws { - let player = try getPlayer(id: playerId) + public func getSpuTracksCount(_ input: ViewMessage, error: AutoreleasingUnsafeMutablePointer) -> TrackCountMessage? { + + let player = getPlayer(viewId: input.viewId) - player.setSpuTrack(spuTrackNumber: spuTrackNumber.int32) + let message: TrackCountMessage = TrackCountMessage() + message.count = player?.getSpuTracksCount() + return message } - func getSpuTrack(playerId: Int64) throws -> Int64 { - return try getPlayer(id: playerId).spuTrack.int64 - } - - func setSpuDelay(playerId: Int64, delay: Int64) throws { - let player = try getPlayer(id: playerId) + public func getSpuTracks(_ input: ViewMessage, error: AutoreleasingUnsafeMutablePointer) -> SpuTracksMessage? { + + let player = getPlayer(viewId: input.viewId) - player.setSpuDelay(delay: delay.int) + let message: SpuTracksMessage = SpuTracksMessage() + message.subtitles = player?.getSpuTracks() + return message } - func getSpuDelay(playerId: Int64) throws -> Int64 { - return try getPlayer(id: playerId).spuDelay.int64 - } - - func addSubtitleTrack(msg: AddSubtitleMessage) throws { - let player = try getPlayer(id: msg.playerId) + public func setSpuTrack(_ input: SpuTrackMessage, error: AutoreleasingUnsafeMutablePointer) { - player.addSubtitleTrack(uri: msg.uri, isSelected: msg.isSelected) + let player = getPlayer(viewId: input.viewId) + + player?.setSpuTrack(spuTrackNumber: input.spuTrackNumber) } - // MARK: - Audio Tracks - - func getAudioTracksCount(playerId: Int64) throws -> Int64 { - return try getPlayer(id: playerId).audioTracksCount.int64 + public func getSpuTrack(_ input: ViewMessage, error: AutoreleasingUnsafeMutablePointer) -> SpuTrackMessage? { + + let player = getPlayer(viewId: input.viewId) + + let message: SpuTrackMessage = SpuTrackMessage() + message.spuTrackNumber = player?.getSpuTrack() + return message } - func getAudioTracks(playerId: Int64) throws -> [Int64: String] { - return try getPlayer(id: playerId).audioTracks.int64Dictionary + public func setSpuDelay(_ input: DelayMessage, error: AutoreleasingUnsafeMutablePointer) { + + let player = getPlayer(viewId: input.viewId) + + player?.setSpuDelay(delay: input.delay) } - func setAudioTrack(playerId: Int64, audioTrackNumber: Int64) throws { - let player = try getPlayer(id: playerId) + public func getSpuDelay(_ input: ViewMessage, error: AutoreleasingUnsafeMutablePointer) -> DelayMessage? { + + let player = getPlayer(viewId: input.viewId) - player.setAudioTrack(audioTrackNumber: audioTrackNumber.int32) + let message: DelayMessage = DelayMessage() + message.delay = player?.getSpuDelay() + return message } - func getAudioTrack(playerId: Int64) throws -> Int64 { - return try getPlayer(id: playerId).audioTrack.int64 + public func addSubtitleTrack(_ input: AddSubtitleMessage, error: AutoreleasingUnsafeMutablePointer) { + + let player = getPlayer(viewId: input.viewId) + + player?.addSubtitleTrack(uri: input.uri, isSelected: input.isSelected) } - func getAudioDelay(playerId: Int64) throws -> Int64 { - return try getPlayer(id: playerId).audioDelay.int64 + public func getAudioTracksCount(_ input: ViewMessage, error: AutoreleasingUnsafeMutablePointer) -> TrackCountMessage? { + + let player = getPlayer(viewId: input.viewId) + + let message: TrackCountMessage = TrackCountMessage() + message.count = player?.getAudioTracksCount() + return message } - func setAudioDelay(playerId: Int64, delay: Int64) throws { - let player = try getPlayer(id: playerId) + public func getAudioTracks(_ input: ViewMessage, error: AutoreleasingUnsafeMutablePointer) -> AudioTracksMessage? { - player.setAudioDelay(delay: delay.int) + let player = getPlayer(viewId: input.viewId) + + let message: AudioTracksMessage = AudioTracksMessage() + message.audios = player?.getAudioTracks() + return message } - func addAudioTrack(msg: AddAudioMessage) throws { - let player = try getPlayer(id: msg.playerId) + public func setAudioTrack(_ input: AudioTrackMessage, error: AutoreleasingUnsafeMutablePointer) { + + let player = getPlayer(viewId: input.viewId) - player.addAudioTrack(uri: msg.uri, isSelected: msg.isSelected) + player?.setAudioTrack(audioTrackNumber: input.audioTrackNumber) } - // MARK: - Video Tracks - - func getVideoTracksCount(playerId: Int64) throws -> Int64 { - return try getPlayer(id: playerId).videoTracksCount.int64 + public func getAudioTrack(_ input: ViewMessage, error: AutoreleasingUnsafeMutablePointer) -> AudioTrackMessage? { + + let player = getPlayer(viewId: input.viewId) + + let message: AudioTrackMessage = AudioTrackMessage() + message.audioTrackNumber = player?.getAudioTrack() + return message } - func getVideoTracks(playerId: Int64) throws -> [Int64: String] { - return try getPlayer(id: playerId).videoTracks.int64Dictionary + public func setAudioDelay(_ input: DelayMessage, error: AutoreleasingUnsafeMutablePointer) { + + let player = getPlayer(viewId: input.viewId) + + player?.setAudioDelay(delay: input.delay) } - func setVideoTrack(playerId: Int64, videoTrackNumber: Int64) throws { - let player = try getPlayer(id: playerId) + public func getAudioDelay(_ input: ViewMessage, error: AutoreleasingUnsafeMutablePointer) -> DelayMessage? { - player.setVideoTrack(videoTrackNumber: videoTrackNumber.int32) + let player = getPlayer(viewId: input.viewId) + + let message: DelayMessage = DelayMessage() + message.delay = player?.getAudioDelay() + return message } - func getVideoTrack(playerId: Int64) throws -> Int64 { - return try getPlayer(id: playerId).videoTrack.int64 + public func addAudioTrack(_ input: AddAudioMessage, error: AutoreleasingUnsafeMutablePointer) { + + let player = getPlayer(viewId: input.viewId) + + player?.addAudioTrack(uri: input.uri, isSelected: input.isSelected) } - // MARK: - Video properties - - func setVideoScale(playerId: Int64, scale: Double) throws { - let player = try getPlayer(id: playerId) + public func getVideoTracksCount(_ input: ViewMessage, error: AutoreleasingUnsafeMutablePointer) -> TrackCountMessage? { - player.setVideoScale(scale: scale.float) + let player = getPlayer(viewId: input.viewId) + + let message: TrackCountMessage = TrackCountMessage() + message.count = player?.getVideoTracksCount() + return message } - func getVideoScale(playerId: Int64) throws -> Double { - return try getPlayer(id: playerId).videoScale.double + public func getVideoTracks(_ input: ViewMessage, error: AutoreleasingUnsafeMutablePointer) -> VideoTracksMessage? { + + let player = getPlayer(viewId: input.viewId) + + let message: VideoTracksMessage = VideoTracksMessage() + message.videos = player?.getVideoTracks() + return message } - func setVideoAspectRatio(playerId: Int64, aspectRatio: String) throws { - let player = try getPlayer(id: playerId) - - player.setVideoAspectRatio(aspectRatio: aspectRatio) + public func setVideoTrack(_ input: VideoTrackMessage, error: AutoreleasingUnsafeMutablePointer) { + + let player = getPlayer(viewId: input.viewId) + + player?.setVideoTrack(videoTrackNumber: input.videoTrackNumber) } - func getVideoAspectRatio(playerId: Int64) throws -> String { - return try getPlayer(id: playerId).videoAspectRatio + public func getVideoTrack(_ input: ViewMessage, error: AutoreleasingUnsafeMutablePointer) -> VideoTrackMessage? { + + let player = getPlayer(viewId: input.viewId) + + let message: VideoTrackMessage = VideoTrackMessage() + message.videoTrackNumber = player?.getVideoTrack() + return message } - func getAvailableRendererServices(playerId: Int64) throws -> [String] { - return try getPlayer(id: playerId).availableRendererServices + public func setVideoScale(_ input: VideoScaleMessage, error: AutoreleasingUnsafeMutablePointer) { + + let player = getPlayer(viewId: input.viewId) + + player?.setVideoScale(scale: input.scale) } - // MARK: - Cast - - func startRendererScanning(playerId: Int64, rendererService: String) throws { - let player = try getPlayer(id: playerId) + public func getVideoScale(_ input: ViewMessage, error: AutoreleasingUnsafeMutablePointer) -> VideoScaleMessage? { - player.startRendererScanning() + let player = getPlayer(viewId: input.viewId) + + let message: VideoScaleMessage = VideoScaleMessage() + message.scale = player?.getVideoScale() + return message } - func stopRendererScanning(playerId: Int64) throws { - let player = try getPlayer(id: playerId) + public func setVideoAspectRatio(_ input: VideoAspectRatioMessage, error: AutoreleasingUnsafeMutablePointer) { + + let player = getPlayer(viewId: input.viewId) - player.stopRendererScanning() + player?.setVideoAspectRatio(aspectRatio: input.aspectRatio) } - func getRendererDevices(playerId: Int64) throws -> [String: String] { - return try getPlayer(id: playerId).rendererDevices + public func getVideoAspectRatio(_ input: ViewMessage, error: AutoreleasingUnsafeMutablePointer) -> VideoAspectRatioMessage? { + + let player = getPlayer(viewId: input.viewId) + + let message: VideoAspectRatioMessage = VideoAspectRatioMessage() + message.aspectRatio = player?.getVideoAspectRatio() + return message } - func castToRenderer(playerId: Int64, rendererId: String) throws { - let player = try getPlayer(id: playerId) + public func getAvailableRendererServices(_ input: ViewMessage, error: AutoreleasingUnsafeMutablePointer) -> RendererServicesMessage? { - player.cast(rendererDevice: rendererId) + let player = getPlayer(viewId: input.viewId) + + let message: RendererServicesMessage = RendererServicesMessage() + message.services = player?.getAvailableRendererServices() + return message } - // MARK: - Recording - - func startRecording(playerId: Int64, saveDirectory: String) throws -> Bool { - let player = try getPlayer(id: playerId) + public func startRendererScanning(_ input: RendererScanningMessage, error: AutoreleasingUnsafeMutablePointer) { - return player.startRecording(saveDirectory: saveDirectory) + let player = getPlayer(viewId: input.viewId) + + player?.startRendererScanning() } - func stopRecording(playerId: Int64) throws -> Bool { - let player = try getPlayer(id: playerId) + public func stopRendererScanning(_ input: ViewMessage, error: AutoreleasingUnsafeMutablePointer) { - return player.stopRecording() - } -} + let player = getPlayer(viewId: input.viewId) -extension Int { - var int64: Int64 { - Int64(self) + player?.stopRendererScanning() } - var int32: Int32 { - Int32(self) - } -} - -extension Int64 { - var int: Int { - Int(self) + public func getRendererDevices(_ input: ViewMessage, error: AutoreleasingUnsafeMutablePointer) -> RendererDevicesMessage? { + + let player = getPlayer(viewId: input.viewId) + + let message: RendererDevicesMessage = RendererDevicesMessage() + message.rendererDevices = player?.getRendererDevices() + return message } - var int32: Int32 { - Int32(truncatingIfNeeded: self) - } -} - -extension Int32 { - var int: Int { - Int(self) + public func cast(toRenderer input: RenderDeviceMessage, error: AutoreleasingUnsafeMutablePointer) { + + let player = getPlayer(viewId: input.viewId) + + player?.cast(rendererDevice: input.rendererDevice) } - var int64: Int64 { - Int64(truncatingIfNeeded: self) - } -} - -extension Double { - var float: Float { - Float(self) - } -} - -extension Float { - var double: Double { - Double(self) + public func startRecording(_ input: RecordMessage, error: AutoreleasingUnsafeMutablePointer) -> BooleanMessage? { + + let player = getPlayer(viewId: input.viewId) + + let message: BooleanMessage = BooleanMessage() + message.result = player?.startRecording(saveDirectory: input.saveDirectory!) + return message } -} - -extension Dictionary where Key == Int { - var int64Dictionary: [Int64: Value] { - [Int64: Value](uniqueKeysWithValues: - map { (Int64($0.key), $0.value) } - ) + + public func stopRecording(_ input: ViewMessage, error: AutoreleasingUnsafeMutablePointer) -> BooleanMessage? { + + let player = getPlayer(viewId: input.viewId) + + let message: BooleanMessage = BooleanMessage() + message.result = player?.stopRecording() + return message } } diff --git a/flutter_vlc_player/ios/Classes/VlcViewController.swift b/flutter_vlc_player/ios/Classes/VlcViewController.swift index defd4b47..c7fde719 100644 --- a/flutter_vlc_player/ios/Classes/VlcViewController.swift +++ b/flutter_vlc_player/ios/Classes/VlcViewController.swift @@ -1,22 +1,25 @@ -import Flutter import Foundation +import Flutter import MobileVLCKit import UIKit + public class VLCViewController: NSObject, FlutterPlatformView { + var hostedView: UIView var vlcMediaPlayer: VLCMediaPlayer var mediaEventChannel: FlutterEventChannel let mediaEventChannelHandler: VLCPlayerEventStreamHandler var rendererEventChannel: FlutterEventChannel let rendererEventChannelHandler: VLCRendererEventStreamHandler - var rendererdiscoverers: [VLCRendererDiscoverer] = .init() + var rendererdiscoverers: [VLCRendererDiscoverer] = [VLCRendererDiscoverer]() public func view() -> UIView { - return self.hostedView + return hostedView } - init(frame: CGRect, viewId: Int64, messenger: FlutterBinaryMessenger) { + init(frame: CGRect, viewId: Int64, messenger:FlutterBinaryMessenger) { + let mediaEventChannel = FlutterEventChannel( name: "flutter_video_plugin/getVideoEvents_\(viewId)", binaryMessenger: messenger @@ -35,8 +38,8 @@ public class VLCViewController: NSObject, FlutterPlatformView { self.rendererEventChannel = rendererEventChannel self.rendererEventChannelHandler = VLCRendererEventStreamHandler() // - self.mediaEventChannel.setStreamHandler(self.mediaEventChannelHandler) - self.rendererEventChannel.setStreamHandler(self.rendererEventChannelHandler) + self.mediaEventChannel.setStreamHandler(mediaEventChannelHandler) + self.rendererEventChannel.setStreamHandler(rendererEventChannelHandler) self.vlcMediaPlayer.drawable = self.hostedView self.vlcMediaPlayer.delegate = self.mediaEventChannelHandler } @@ -46,54 +49,69 @@ public class VLCViewController: NSObject, FlutterPlatformView { } public func pause() { + self.vlcMediaPlayer.pause() } public func stop() { + self.vlcMediaPlayer.stop() } - public var isPlaying: Bool { - self.vlcMediaPlayer.isPlaying + public func isPlaying() -> NSNumber?{ + + return self.vlcMediaPlayer.isPlaying as NSNumber } - public var isSeekable: Bool { - self.vlcMediaPlayer.isSeekable + public func isSeekable() -> NSNumber? { + + return self.vlcMediaPlayer.isSeekable as NSNumber } - public func setLooping(isLooping: Bool) { - self.vlcMediaPlayer.media?.addOption(isLooping ? "--loop" : "--no-loop") + public func setLooping(isLooping: NSNumber?) { + + let enableLooping = isLooping?.boolValue ?? false; + self.vlcMediaPlayer.media?.addOption(enableLooping ? "--loop" : "--no-loop") } - public func seek(position: Int64) { - self.vlcMediaPlayer.time = VLCTime(number: position as NSNumber) + public func seek(position: NSNumber?) { + + self.vlcMediaPlayer.time = VLCTime(number: position ?? 0) } - public var position: Int32 { - self.vlcMediaPlayer.time.intValue + public func position() -> NSNumber? { + + return self.vlcMediaPlayer.time.value } - public var duration: Int32 { - self.vlcMediaPlayer.media?.length.intValue ?? 0 + public func duration() -> NSNumber? { + + return self.vlcMediaPlayer.media?.length.value ?? 0 + } - public func setVolume(volume: Int64) { - self.vlcMediaPlayer.audio?.volume = volume.int32 + public func setVolume(volume: NSNumber?) { + + self.vlcMediaPlayer.audio?.volume = volume?.int32Value ?? 100 } - public var volume: Int32 { - self.vlcMediaPlayer.audio?.volume ?? 100 + public func getVolume() -> NSNumber? { + + return NSNumber(value: self.vlcMediaPlayer.audio?.volume ?? 100) } - public func setPlaybackSpeed(speed: Float) { - self.vlcMediaPlayer.rate = speed + public func setPlaybackSpeed(speed: NSNumber?) { + + self.vlcMediaPlayer.rate = speed?.floatValue ?? 1 } - public var playbackSpeed: Float { - self.vlcMediaPlayer.rate + public func getPlaybackSpeed() -> NSNumber? { + + return NSNumber(value: self.vlcMediaPlayer.rate) } public func takeSnapshot() -> String? { + let drawable: UIView = self.vlcMediaPlayer.drawable as! UIView let size = drawable.frame.size UIGraphicsBeginImageContextWithOptions(size, _: false, _: 0.0) @@ -106,204 +124,228 @@ public class VLCViewController: NSObject, FlutterPlatformView { return byteArray?.base64EncodedString() } - public var spuTracksCount: Int32 { - return self.vlcMediaPlayer.numberOfSubtitlesTracks + public func getSpuTracksCount() -> NSNumber? { + + return NSNumber(value: self.vlcMediaPlayer.numberOfSubtitlesTracks) } - public var spuTracks: [Int: String] { - self.vlcMediaPlayer.subtitles() + public func getSpuTracks() -> [Int:String]? { + + return self.vlcMediaPlayer.subtitles() } - public func setSpuTrack(spuTrackNumber: Int32) { - self.vlcMediaPlayer.currentVideoSubTitleIndex = spuTrackNumber + public func setSpuTrack(spuTrackNumber: NSNumber?) { + + self.vlcMediaPlayer.currentVideoSubTitleIndex = spuTrackNumber?.int32Value ?? 0 } - public var spuTrack: Int32 { - self.vlcMediaPlayer.currentVideoSubTitleIndex + public func getSpuTrack() -> NSNumber? { + + return NSNumber(value: self.vlcMediaPlayer.currentVideoSubTitleIndex) } - public func setSpuDelay(delay: Int) { - self.vlcMediaPlayer.currentVideoSubTitleDelay = delay + public func setSpuDelay(delay: NSNumber?) { + + self.vlcMediaPlayer.currentVideoSubTitleDelay = delay?.intValue ?? 0 } - public var spuDelay: Int { - self.vlcMediaPlayer.currentVideoSubTitleDelay + public func getSpuDelay() -> NSNumber? { + + return NSNumber(value: self.vlcMediaPlayer.currentVideoSubTitleDelay) } - public func addSubtitleTrack(uri: String, isSelected: Bool) { - // TODO: check for file type - guard - let url = URL(string: uri) + public func addSubtitleTrack(uri: String?, isSelected: NSNumber?) { + + // todo: check for file type + guard let urlString = uri, + let url = URL(string: urlString) else { return } - self.vlcMediaPlayer.addPlaybackSlave( url, type: VLCMediaPlaybackSlaveType.subtitle, - enforce: isSelected + enforce: isSelected?.boolValue ?? true ) } - public var audioTracksCount: Int32 { - self.vlcMediaPlayer.numberOfAudioTracks + public func getAudioTracksCount() -> NSNumber? { + + return NSNumber(value: self.vlcMediaPlayer.numberOfAudioTracks) } - public var audioTracks: [Int: String] { - self.vlcMediaPlayer.audioTracks() + public func getAudioTracks() -> [Int:String]? { + + return self.vlcMediaPlayer.audioTracks() } - public func setAudioTrack(audioTrackNumber: Int32) { - self.vlcMediaPlayer.currentAudioTrackIndex = audioTrackNumber + public func setAudioTrack(audioTrackNumber: NSNumber?) { + + self.vlcMediaPlayer.currentAudioTrackIndex = audioTrackNumber?.int32Value ?? 0 } - public var audioTrack: Int32 { - self.vlcMediaPlayer.currentAudioTrackIndex + public func getAudioTrack() -> NSNumber? { + + return NSNumber(value: self.vlcMediaPlayer.currentAudioTrackIndex) } - public func setAudioDelay(delay: Int) { - self.vlcMediaPlayer.currentAudioPlaybackDelay = delay + public func setAudioDelay(delay: NSNumber?) { + + self.vlcMediaPlayer.currentAudioPlaybackDelay = delay?.intValue ?? 0 } - public var audioDelay: Int { - self.vlcMediaPlayer.currentAudioPlaybackDelay + public func getAudioDelay() -> NSNumber? { + + return NSNumber(value: self.vlcMediaPlayer.currentAudioPlaybackDelay) } - public func addAudioTrack(uri: String, isSelected: Bool) { - // TODO: check for file type - guard let url = URL(string: uri) + public func addAudioTrack(uri: String?, isSelected: NSNumber?) { + + // todo: check for file type + guard let urlString = uri, + let url = URL(string: urlString) else { return } self.vlcMediaPlayer.addPlaybackSlave( url, type: VLCMediaPlaybackSlaveType.audio, - enforce: isSelected + enforce: isSelected?.boolValue ?? true ) } - public var videoTracksCount: Int32 { - self.vlcMediaPlayer.numberOfVideoTracks + public func getVideoTracksCount() -> NSNumber? { + + return NSNumber(value: self.vlcMediaPlayer.numberOfVideoTracks) } - public var videoTracks: [Int: String] { - self.vlcMediaPlayer.videoTracks() + public func getVideoTracks() -> [Int:String]? { + + return self.vlcMediaPlayer.videoTracks() } - public func setVideoTrack(videoTrackNumber: Int32) { - self.vlcMediaPlayer.currentVideoTrackIndex = videoTrackNumber + public func setVideoTrack(videoTrackNumber: NSNumber?) { + + self.vlcMediaPlayer.currentVideoTrackIndex = videoTrackNumber?.int32Value ?? 0 } - public var videoTrack: Int32 { - self.vlcMediaPlayer.currentVideoTrackIndex + public func getVideoTrack() -> NSNumber? { + + return NSNumber(value: self.vlcMediaPlayer.currentVideoTrackIndex) } - public func setVideoScale(scale: Float) { - self.vlcMediaPlayer.scaleFactor = scale + public func setVideoScale(scale: NSNumber?) { + + self.vlcMediaPlayer.scaleFactor = scale?.floatValue ?? 1 } - public var videoScale: Float { - self.vlcMediaPlayer.scaleFactor + public func getVideoScale() -> NSNumber? { + + return NSNumber(value: self.vlcMediaPlayer.scaleFactor) } - public func setVideoAspectRatio(aspectRatio: String) { + public func setVideoAspectRatio(aspectRatio: String?) { + let aspectRatio = UnsafeMutablePointer( - mutating: (aspectRatio as NSString).utf8String + mutating: (aspectRatio as NSString?)?.utf8String! ) self.vlcMediaPlayer.videoAspectRatio = aspectRatio } - public var videoAspectRatio: String { - guard let aspectRatio = self.vlcMediaPlayer.videoAspectRatio else { - return "1" - } + public func getVideoAspectRatio() -> String? { + + guard let aspectRatio = self.vlcMediaPlayer.videoAspectRatio else { return "1"}; return String(cString: aspectRatio) } - public var availableRendererServices: [String] { - self.vlcMediaPlayer.rendererServices() + public func getAvailableRendererServices() -> [String]? { + + return self.vlcMediaPlayer.rendererServices() } public func startRendererScanning() { - self.rendererdiscoverers.removeAll() - self.rendererEventChannelHandler.renderItems.removeAll() + + rendererdiscoverers.removeAll() + rendererEventChannelHandler.renderItems.removeAll() // chromecast service name: "Bonjour_renderer" let rendererServices = self.vlcMediaPlayer.rendererServices() - for rendererService in rendererServices { + for rendererService in rendererServices{ guard let rendererDiscoverer - = VLCRendererDiscoverer(name: rendererService) - else { + = VLCRendererDiscoverer(name: rendererService) else { continue } rendererDiscoverer.delegate = self.rendererEventChannelHandler rendererDiscoverer.start() - self.rendererdiscoverers.append(rendererDiscoverer) + rendererdiscoverers.append(rendererDiscoverer) } } public func stopRendererScanning() { - for rendererDiscoverer in self.rendererdiscoverers { + + for rendererDiscoverer in rendererdiscoverers { rendererDiscoverer.stop() rendererDiscoverer.delegate = nil } - self.rendererdiscoverers.removeAll() - self.rendererEventChannelHandler.renderItems.removeAll() - if self.vlcMediaPlayer.isPlaying { + rendererdiscoverers.removeAll() + rendererEventChannelHandler.renderItems.removeAll() + if(self.vlcMediaPlayer.isPlaying){ self.vlcMediaPlayer.pause() } self.vlcMediaPlayer.setRendererItem(nil) } - public var rendererDevices: [String: String] { + public func getRendererDevices() -> [String: String]? { + var rendererDevices: [String: String] = [:] - let rendererItems = self.rendererEventChannelHandler.renderItems + let rendererItems = rendererEventChannelHandler.renderItems for (_, item) in rendererItems.enumerated() { rendererDevices[item.name] = item.name } return rendererDevices } - public func cast(rendererDevice: String) { - if self.vlcMediaPlayer.isPlaying { + public func cast(rendererDevice: String?) { + + if (self.vlcMediaPlayer.isPlaying){ self.vlcMediaPlayer.pause() } let rendererItems = self.rendererEventChannelHandler.renderItems - let rendererItem = rendererItems.first { - $0.name.contains(rendererDevice) + let rendererItem = rendererItems.first{ + $0.name.contains(rendererDevice ?? "") } self.vlcMediaPlayer.setRendererItem(rendererItem) self.vlcMediaPlayer.play() } - public func startRecording(saveDirectory: String) -> Bool { - return !self.vlcMediaPlayer.startRecording(atPath: saveDirectory) + public func startRecording(saveDirectory: String) -> NSNumber{ + return (!self.vlcMediaPlayer.startRecording(atPath: saveDirectory)) as NSNumber } - public func stopRecording() -> Bool { - return !self.vlcMediaPlayer.stopRecording() + public func stopRecording() -> NSNumber{ + return (!self.vlcMediaPlayer.stopRecording()) as NSNumber } - public func dispose() { - self.mediaEventChannel.setStreamHandler(nil) - self.rendererEventChannel.setStreamHandler(nil) + public func dispose(){ + self.mediaEventChannel.setStreamHandler(nil); + self.rendererEventChannel.setStreamHandler(nil); self.rendererdiscoverers.removeAll() self.rendererEventChannelHandler.renderItems.removeAll() self.vlcMediaPlayer.stop() } - func setMediaPlayerUrl(uri: String, isAssetUrl: Bool, autoPlay: Bool, hwAcc: Int, options: [String]) { + func setMediaPlayerUrl(uri: String, isAssetUrl: Bool, autoPlay: Bool, hwAcc: Int, options: [String]){ self.vlcMediaPlayer.stop() var media: VLCMedia - if isAssetUrl { + if(isAssetUrl){ guard let path = Bundle.main.path(forResource: uri, ofType: nil) else { return } media = VLCMedia(path: path) } - else { + else{ guard let url = URL(string: uri) else { return @@ -311,23 +353,27 @@ public class VLCViewController: NSObject, FlutterPlatformView { media = VLCMedia(url: url) } - if !options.isEmpty { + if(!options.isEmpty){ for option in options { media.addOption(option) } } - switch HWAccellerationType(rawValue: hwAcc) { + switch HWAccellerationType.init(rawValue: hwAcc) + { case .HW_ACCELERATION_DISABLED: media.addOption("--codec=avcodec") + break case .HW_ACCELERATION_DECODING: media.addOption("--codec=all") media.addOption(":no-mediacodec-dr") media.addOption(":no-omxil-dr") + break case .HW_ACCELERATION_FULL: media.addOption("--codec=all") + break case .HW_ACCELERATION_AUTOMATIC: break @@ -339,61 +385,70 @@ public class VLCViewController: NSObject, FlutterPlatformView { self.vlcMediaPlayer.media = media // self.vlcMediaPlayer.media.parse(withOptions: VLCMediaParsingOptions(VLCMediaParseLocal | VLCMediaFetchLocal | VLCMediaParseNetwork | VLCMediaFetchNetwork)) self.vlcMediaPlayer.play() - if !autoPlay { + if(!autoPlay){ self.vlcMediaPlayer.stop() } } } class VLCRendererEventStreamHandler: NSObject, FlutterStreamHandler, VLCRendererDiscovererDelegate { + private var rendererEventSink: FlutterEventSink? - var renderItems: [VLCRendererItem] = .init() + var renderItems:[VLCRendererItem] = [VLCRendererItem]() + func onListen(withArguments arguments: Any?, eventSink events: @escaping FlutterEventSink) -> FlutterError? { - self.rendererEventSink = events + + rendererEventSink = events return nil } func onCancel(withArguments arguments: Any?) -> FlutterError? { - self.rendererEventSink = nil + + rendererEventSink = nil return nil } func rendererDiscovererItemAdded(_ rendererDiscoverer: VLCRendererDiscoverer, item: VLCRendererItem) { + self.renderItems.append(item) guard let rendererEventSink = self.rendererEventSink else { return } rendererEventSink([ "event": "attached", "id": item.name, - "name": item.name, + "name" : item.name, ]) } func rendererDiscovererItemDeleted(_ rendererDiscoverer: VLCRendererDiscoverer, item: VLCRendererItem) { + if let index = renderItems.firstIndex(of: item) { - self.renderItems.remove(at: index) + renderItems.remove(at: index) } guard let rendererEventSink = self.rendererEventSink else { return } rendererEventSink([ "event": "detached", "id": item.name, - "name": item.name, + "name" : item.name, ]) } } -class VLCPlayerEventStreamHandler: NSObject, FlutterStreamHandler, VLCMediaPlayerDelegate, VLCMediaDelegate { +class VLCPlayerEventStreamHandler: NSObject, FlutterStreamHandler, VLCMediaPlayerDelegate, VLCMediaDelegate { + private var mediaEventSink: FlutterEventSink? func onListen(withArguments _: Any?, eventSink events: @escaping FlutterEventSink) -> FlutterError? { - self.mediaEventSink = events + + mediaEventSink = events return nil } func onCancel(withArguments _: Any?) -> FlutterError? { - self.mediaEventSink = nil + + mediaEventSink = nil return nil } @@ -408,33 +463,37 @@ class VLCPlayerEventStreamHandler: NSObject, FlutterStreamHandler, VLCMediaPlaye let activeAudioTrack = player?.currentAudioTrackIndex ?? 0 let spuTracksCount = player?.numberOfSubtitlesTracks ?? 0 let activeSpuTrack = player?.currentVideoSubTitleIndex ?? 0 - let duration = media?.length.value ?? 0 + let duration = media?.length.value ?? 0 let speed = player?.rate ?? 1 let position = player?.time.value?.intValue ?? 0 let buffering = 100.0 let isPlaying = player?.isPlaying ?? false - switch player?.state { + switch player?.state + { case .opening: mediaEventSink([ - "event": "opening", + "event":"opening", ]) + break case .paused: mediaEventSink([ - "event": "paused", + "event":"paused", ]) + break case .stopped: mediaEventSink([ "event": "stopped", ]) + break case .playing: mediaEventSink([ "event": "playing", "height": height, - "width": width, + "width": width, "speed": speed, "duration": duration, "audioTracksCount": audioTracksCount, @@ -442,18 +501,20 @@ class VLCPlayerEventStreamHandler: NSObject, FlutterStreamHandler, VLCMediaPlaye "spuTracksCount": spuTracksCount, "activeSpuTrack": activeSpuTrack, ]) + break case .ended: mediaEventSink([ "event": "ended", - "position": position, + "position": position ]) + break case .buffering: mediaEventSink([ "event": "timeChanged", "height": height, - "width": width, + "width": width, "speed": speed, "duration": duration, "position": position, @@ -464,17 +525,19 @@ class VLCPlayerEventStreamHandler: NSObject, FlutterStreamHandler, VLCMediaPlaye "activeSpuTrack": activeSpuTrack, "isPlaying": isPlaying, ]) + break case .error: - /* mediaEventSink( + /*mediaEventSink( FlutterError( code: "500", message: "Player State got an error", details: nil) - ) */ + )*/ mediaEventSink([ "event": "error", ]) + break case .esAdded: break @@ -500,7 +563,7 @@ class VLCPlayerEventStreamHandler: NSObject, FlutterStreamHandler, VLCMediaPlaye mediaEventSink([ "event": "recording", "isRecording": false, - "recordPath": path, + "recordPath": path , ]) } @@ -524,7 +587,7 @@ class VLCPlayerEventStreamHandler: NSObject, FlutterStreamHandler, VLCMediaPlaye mediaEventSink([ "event": "timeChanged", "height": height, - "width": width, + "width": width, "speed": speed, "duration": duration, "position": position, @@ -539,20 +602,24 @@ class VLCPlayerEventStreamHandler: NSObject, FlutterStreamHandler, VLCMediaPlaye } } -enum DataSourceType: Int { +enum DataSourceType: Int +{ case ASSET = 0 case NETWORK = 1 case FILE = 2 } -enum HWAccellerationType: Int { +enum HWAccellerationType: Int +{ case HW_ACCELERATION_AUTOMATIC = 0 case HW_ACCELERATION_DISABLED = 1 case HW_ACCELERATION_DECODING = 2 case HW_ACCELERATION_FULL = 3 } + extension VLCMediaPlayer { + func subtitles() -> [Int: String] { guard let indexs = videoSubTitlesIndexes as? [Int], let names = videoSubTitlesNames as? [String], @@ -597,7 +664,8 @@ extension VLCMediaPlayer { return audios } - func videoTracks() -> [Int: String] { + func videoTracks() -> [Int: String]{ + guard let indexs = videoTrackIndexes as? [Int], let names = videoTrackNames as? [String], indexs.count == names.count @@ -619,13 +687,16 @@ extension VLCMediaPlayer { return videos } - func rendererServices() -> [String] { + func rendererServices() -> [String]{ + let renderers = VLCRendererDiscoverer.list() - var services: [String] = [] + var services : [String] = [] - renderers?.forEach { VLCRendererDiscovererDescription in + renderers?.forEach({ (VLCRendererDiscovererDescription) in services.append(VLCRendererDiscovererDescription.name) - } + }) return services } + } + diff --git a/flutter_vlc_player/ios/Classes/flutter_vlc_player.h b/flutter_vlc_player/ios/Classes/flutter_vlc_player.h new file mode 100644 index 00000000..bba7e114 --- /dev/null +++ b/flutter_vlc_player/ios/Classes/flutter_vlc_player.h @@ -0,0 +1 @@ +#import "messages.h" diff --git a/flutter_vlc_player/ios/Classes/messages.h b/flutter_vlc_player/ios/Classes/messages.h new file mode 100644 index 00000000..4c2bec13 --- /dev/null +++ b/flutter_vlc_player/ios/Classes/messages.h @@ -0,0 +1,237 @@ +// Autogenerated from Pigeon (v0.2.1), do not edit directly. +// See also: https://pub.dev/packages/pigeon +#import +@protocol FlutterBinaryMessenger; +@class FlutterError; +@class FlutterStandardTypedData; + +NS_ASSUME_NONNULL_BEGIN + +@class CreateMessage; +@class ViewMessage; +@class SetMediaMessage; +@class BooleanMessage; +@class LoopingMessage; +@class PositionMessage; +@class DurationMessage; +@class VolumeMessage; +@class PlaybackSpeedMessage; +@class SnapshotMessage; +@class TrackCountMessage; +@class SpuTracksMessage; +@class SpuTrackMessage; +@class DelayMessage; +@class AddSubtitleMessage; +@class AudioTracksMessage; +@class AudioTrackMessage; +@class AddAudioMessage; +@class VideoTracksMessage; +@class VideoTrackMessage; +@class VideoScaleMessage; +@class VideoAspectRatioMessage; +@class RendererServicesMessage; +@class RendererScanningMessage; +@class RendererDevicesMessage; +@class RenderDeviceMessage; +@class RecordMessage; + +@interface CreateMessage : NSObject +@property(nonatomic, strong, nullable) NSNumber * viewId; +@property(nonatomic, copy, nullable) NSString * uri; +@property(nonatomic, strong, nullable) NSNumber * type; +@property(nonatomic, copy, nullable) NSString * packageName; +@property(nonatomic, strong, nullable) NSNumber * autoPlay; +@property(nonatomic, strong, nullable) NSNumber * hwAcc; +@property(nonatomic, strong, nullable) NSArray * options; +@end + +@interface ViewMessage : NSObject +@property(nonatomic, strong, nullable) NSNumber * viewId; +@end + +@interface SetMediaMessage : NSObject +@property(nonatomic, strong, nullable) NSNumber * viewId; +@property(nonatomic, copy, nullable) NSString * uri; +@property(nonatomic, strong, nullable) NSNumber * type; +@property(nonatomic, copy, nullable) NSString * packageName; +@property(nonatomic, strong, nullable) NSNumber * autoPlay; +@property(nonatomic, strong, nullable) NSNumber * hwAcc; +@end + +@interface BooleanMessage : NSObject +@property(nonatomic, strong, nullable) NSNumber * viewId; +@property(nonatomic, strong, nullable) NSNumber * result; +@end + +@interface LoopingMessage : NSObject +@property(nonatomic, strong, nullable) NSNumber * viewId; +@property(nonatomic, strong, nullable) NSNumber * isLooping; +@end + +@interface PositionMessage : NSObject +@property(nonatomic, strong, nullable) NSNumber * viewId; +@property(nonatomic, strong, nullable) NSNumber * position; +@end + +@interface DurationMessage : NSObject +@property(nonatomic, strong, nullable) NSNumber * viewId; +@property(nonatomic, strong, nullable) NSNumber * duration; +@end + +@interface VolumeMessage : NSObject +@property(nonatomic, strong, nullable) NSNumber * viewId; +@property(nonatomic, strong, nullable) NSNumber * volume; +@end + +@interface PlaybackSpeedMessage : NSObject +@property(nonatomic, strong, nullable) NSNumber * viewId; +@property(nonatomic, strong, nullable) NSNumber * speed; +@end + +@interface SnapshotMessage : NSObject +@property(nonatomic, strong, nullable) NSNumber * viewId; +@property(nonatomic, copy, nullable) NSString * snapshot; +@end + +@interface TrackCountMessage : NSObject +@property(nonatomic, strong, nullable) NSNumber * viewId; +@property(nonatomic, strong, nullable) NSNumber * count; +@end + +@interface SpuTracksMessage : NSObject +@property(nonatomic, strong, nullable) NSNumber * viewId; +@property(nonatomic, strong, nullable) NSDictionary * subtitles; +@end + +@interface SpuTrackMessage : NSObject +@property(nonatomic, strong, nullable) NSNumber * viewId; +@property(nonatomic, strong, nullable) NSNumber * spuTrackNumber; +@end + +@interface DelayMessage : NSObject +@property(nonatomic, strong, nullable) NSNumber * viewId; +@property(nonatomic, strong, nullable) NSNumber * delay; +@end + +@interface AddSubtitleMessage : NSObject +@property(nonatomic, strong, nullable) NSNumber * viewId; +@property(nonatomic, copy, nullable) NSString * uri; +@property(nonatomic, strong, nullable) NSNumber * type; +@property(nonatomic, strong, nullable) NSNumber * isSelected; +@end + +@interface AudioTracksMessage : NSObject +@property(nonatomic, strong, nullable) NSNumber * viewId; +@property(nonatomic, strong, nullable) NSDictionary * audios; +@end + +@interface AudioTrackMessage : NSObject +@property(nonatomic, strong, nullable) NSNumber * viewId; +@property(nonatomic, strong, nullable) NSNumber * audioTrackNumber; +@end + +@interface AddAudioMessage : NSObject +@property(nonatomic, strong, nullable) NSNumber * viewId; +@property(nonatomic, copy, nullable) NSString * uri; +@property(nonatomic, strong, nullable) NSNumber * type; +@property(nonatomic, strong, nullable) NSNumber * isSelected; +@end + +@interface VideoTracksMessage : NSObject +@property(nonatomic, strong, nullable) NSNumber * viewId; +@property(nonatomic, strong, nullable) NSDictionary * videos; +@end + +@interface VideoTrackMessage : NSObject +@property(nonatomic, strong, nullable) NSNumber * viewId; +@property(nonatomic, strong, nullable) NSNumber * videoTrackNumber; +@end + +@interface VideoScaleMessage : NSObject +@property(nonatomic, strong, nullable) NSNumber * viewId; +@property(nonatomic, strong, nullable) NSNumber * scale; +@end + +@interface VideoAspectRatioMessage : NSObject +@property(nonatomic, strong, nullable) NSNumber * viewId; +@property(nonatomic, copy, nullable) NSString * aspectRatio; +@end + +@interface RendererServicesMessage : NSObject +@property(nonatomic, strong, nullable) NSNumber * viewId; +@property(nonatomic, strong, nullable) NSArray * services; +@end + +@interface RendererScanningMessage : NSObject +@property(nonatomic, strong, nullable) NSNumber * viewId; +@property(nonatomic, copy, nullable) NSString * rendererService; +@end + +@interface RendererDevicesMessage : NSObject +@property(nonatomic, strong, nullable) NSNumber * viewId; +@property(nonatomic, strong, nullable) NSDictionary * rendererDevices; +@end + +@interface RenderDeviceMessage : NSObject +@property(nonatomic, strong, nullable) NSNumber * viewId; +@property(nonatomic, copy, nullable) NSString * rendererDevice; +@end + +@interface RecordMessage : NSObject +@property(nonatomic, strong, nullable) NSNumber * viewId; +@property(nonatomic, copy, nullable) NSString * saveDirectory; +@end + +@protocol VlcPlayerApi +-(void)initialize:(FlutterError *_Nullable *_Nonnull)error; +-(void)create:(CreateMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(void)dispose:(ViewMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(void)setStreamUrl:(SetMediaMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(void)play:(ViewMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(void)pause:(ViewMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(void)stop:(ViewMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(nullable BooleanMessage *)isPlaying:(ViewMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(nullable BooleanMessage *)isSeekable:(ViewMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(void)setLooping:(LoopingMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(void)seekTo:(PositionMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(nullable PositionMessage *)position:(ViewMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(nullable DurationMessage *)duration:(ViewMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(void)setVolume:(VolumeMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(nullable VolumeMessage *)getVolume:(ViewMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(void)setPlaybackSpeed:(PlaybackSpeedMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(nullable PlaybackSpeedMessage *)getPlaybackSpeed:(ViewMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(nullable SnapshotMessage *)takeSnapshot:(ViewMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(nullable TrackCountMessage *)getSpuTracksCount:(ViewMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(nullable SpuTracksMessage *)getSpuTracks:(ViewMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(void)setSpuTrack:(SpuTrackMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(nullable SpuTrackMessage *)getSpuTrack:(ViewMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(void)setSpuDelay:(DelayMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(nullable DelayMessage *)getSpuDelay:(ViewMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(void)addSubtitleTrack:(AddSubtitleMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(nullable TrackCountMessage *)getAudioTracksCount:(ViewMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(nullable AudioTracksMessage *)getAudioTracks:(ViewMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(void)setAudioTrack:(AudioTrackMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(nullable AudioTrackMessage *)getAudioTrack:(ViewMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(void)setAudioDelay:(DelayMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(nullable DelayMessage *)getAudioDelay:(ViewMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(void)addAudioTrack:(AddAudioMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(nullable TrackCountMessage *)getVideoTracksCount:(ViewMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(nullable VideoTracksMessage *)getVideoTracks:(ViewMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(void)setVideoTrack:(VideoTrackMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(nullable VideoTrackMessage *)getVideoTrack:(ViewMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(void)setVideoScale:(VideoScaleMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(nullable VideoScaleMessage *)getVideoScale:(ViewMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(void)setVideoAspectRatio:(VideoAspectRatioMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(nullable VideoAspectRatioMessage *)getVideoAspectRatio:(ViewMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(nullable RendererServicesMessage *)getAvailableRendererServices:(ViewMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(void)startRendererScanning:(RendererScanningMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(void)stopRendererScanning:(ViewMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(nullable RendererDevicesMessage *)getRendererDevices:(ViewMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(void)castToRenderer:(RenderDeviceMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(nullable BooleanMessage *)startRecording:(RecordMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +-(nullable BooleanMessage *)stopRecording:(ViewMessage*)input error:(FlutterError *_Nullable *_Nonnull)error; +@end + +extern void VlcPlayerApiSetup(id binaryMessenger, id _Nullable api); + +NS_ASSUME_NONNULL_END diff --git a/flutter_vlc_player/ios/Classes/messages.m b/flutter_vlc_player/ios/Classes/messages.m new file mode 100644 index 00000000..edbd6941 --- /dev/null +++ b/flutter_vlc_player/ios/Classes/messages.m @@ -0,0 +1,1467 @@ +// Autogenerated from Pigeon (v0.2.1), do not edit directly. +// See also: https://pub.dev/packages/pigeon +#import "messages.h" +#import + +#if !__has_feature(objc_arc) +#error File requires ARC to be enabled. +#endif + +static NSDictionary* wrapResult(NSDictionary *result, FlutterError *error) { + NSDictionary *errorDict = (NSDictionary *)[NSNull null]; + if (error) { + errorDict = @{ + @"code": (error.code ? error.code : [NSNull null]), + @"message": (error.message ? error.message : [NSNull null]), + @"details": (error.details ? error.details : [NSNull null]), + }; + } + return @{ + @"result": (result ? result : [NSNull null]), + @"error": errorDict, + }; +} + +@interface CreateMessage () ++(CreateMessage*)fromMap:(NSDictionary*)dict; +-(NSDictionary*)toMap; +@end +@interface ViewMessage () ++(ViewMessage*)fromMap:(NSDictionary*)dict; +-(NSDictionary*)toMap; +@end +@interface SetMediaMessage () ++(SetMediaMessage*)fromMap:(NSDictionary*)dict; +-(NSDictionary*)toMap; +@end +@interface BooleanMessage () ++(BooleanMessage*)fromMap:(NSDictionary*)dict; +-(NSDictionary*)toMap; +@end +@interface LoopingMessage () ++(LoopingMessage*)fromMap:(NSDictionary*)dict; +-(NSDictionary*)toMap; +@end +@interface PositionMessage () ++(PositionMessage*)fromMap:(NSDictionary*)dict; +-(NSDictionary*)toMap; +@end +@interface DurationMessage () ++(DurationMessage*)fromMap:(NSDictionary*)dict; +-(NSDictionary*)toMap; +@end +@interface VolumeMessage () ++(VolumeMessage*)fromMap:(NSDictionary*)dict; +-(NSDictionary*)toMap; +@end +@interface PlaybackSpeedMessage () ++(PlaybackSpeedMessage*)fromMap:(NSDictionary*)dict; +-(NSDictionary*)toMap; +@end +@interface SnapshotMessage () ++(SnapshotMessage*)fromMap:(NSDictionary*)dict; +-(NSDictionary*)toMap; +@end +@interface TrackCountMessage () ++(TrackCountMessage*)fromMap:(NSDictionary*)dict; +-(NSDictionary*)toMap; +@end +@interface SpuTracksMessage () ++(SpuTracksMessage*)fromMap:(NSDictionary*)dict; +-(NSDictionary*)toMap; +@end +@interface SpuTrackMessage () ++(SpuTrackMessage*)fromMap:(NSDictionary*)dict; +-(NSDictionary*)toMap; +@end +@interface DelayMessage () ++(DelayMessage*)fromMap:(NSDictionary*)dict; +-(NSDictionary*)toMap; +@end +@interface AddSubtitleMessage () ++(AddSubtitleMessage*)fromMap:(NSDictionary*)dict; +-(NSDictionary*)toMap; +@end +@interface AudioTracksMessage () ++(AudioTracksMessage*)fromMap:(NSDictionary*)dict; +-(NSDictionary*)toMap; +@end +@interface AudioTrackMessage () ++(AudioTrackMessage*)fromMap:(NSDictionary*)dict; +-(NSDictionary*)toMap; +@end +@interface AddAudioMessage () ++(AddAudioMessage*)fromMap:(NSDictionary*)dict; +-(NSDictionary*)toMap; +@end +@interface VideoTracksMessage () ++(VideoTracksMessage*)fromMap:(NSDictionary*)dict; +-(NSDictionary*)toMap; +@end +@interface VideoTrackMessage () ++(VideoTrackMessage*)fromMap:(NSDictionary*)dict; +-(NSDictionary*)toMap; +@end +@interface VideoScaleMessage () ++(VideoScaleMessage*)fromMap:(NSDictionary*)dict; +-(NSDictionary*)toMap; +@end +@interface VideoAspectRatioMessage () ++(VideoAspectRatioMessage*)fromMap:(NSDictionary*)dict; +-(NSDictionary*)toMap; +@end +@interface RendererServicesMessage () ++(RendererServicesMessage*)fromMap:(NSDictionary*)dict; +-(NSDictionary*)toMap; +@end +@interface RendererScanningMessage () ++(RendererScanningMessage*)fromMap:(NSDictionary*)dict; +-(NSDictionary*)toMap; +@end +@interface RendererDevicesMessage () ++(RendererDevicesMessage*)fromMap:(NSDictionary*)dict; +-(NSDictionary*)toMap; +@end +@interface RenderDeviceMessage () ++(RenderDeviceMessage*)fromMap:(NSDictionary*)dict; +-(NSDictionary*)toMap; +@end +@interface RecordMessage () ++(RecordMessage*)fromMap:(NSDictionary*)dict; +-(NSDictionary*)toMap; +@end + +@implementation CreateMessage ++(CreateMessage*)fromMap:(NSDictionary*)dict { + CreateMessage* result = [[CreateMessage alloc] init]; + result.viewId = dict[@"viewId"]; + if ((NSNull *)result.viewId == [NSNull null]) { + result.viewId = nil; + } + result.uri = dict[@"uri"]; + if ((NSNull *)result.uri == [NSNull null]) { + result.uri = nil; + } + result.type = dict[@"type"]; + if ((NSNull *)result.type == [NSNull null]) { + result.type = nil; + } + result.packageName = dict[@"packageName"]; + if ((NSNull *)result.packageName == [NSNull null]) { + result.packageName = nil; + } + result.autoPlay = dict[@"autoPlay"]; + if ((NSNull *)result.autoPlay == [NSNull null]) { + result.autoPlay = nil; + } + result.hwAcc = dict[@"hwAcc"]; + if ((NSNull *)result.hwAcc == [NSNull null]) { + result.hwAcc = nil; + } + result.options = dict[@"options"]; + if ((NSNull *)result.options == [NSNull null]) { + result.options = nil; + } + return result; +} +-(NSDictionary*)toMap { + return [NSDictionary dictionaryWithObjectsAndKeys:(self.viewId ? self.viewId : [NSNull null]), @"viewId", (self.uri ? self.uri : [NSNull null]), @"uri", (self.type ? self.type : [NSNull null]), @"type", (self.packageName ? self.packageName : [NSNull null]), @"packageName", (self.autoPlay ? self.autoPlay : [NSNull null]), @"autoPlay", (self.hwAcc ? self.hwAcc : [NSNull null]), @"hwAcc", (self.options ? self.options : [NSNull null]), @"options", nil]; +} +@end + +@implementation ViewMessage ++(ViewMessage*)fromMap:(NSDictionary*)dict { + ViewMessage* result = [[ViewMessage alloc] init]; + result.viewId = dict[@"viewId"]; + if ((NSNull *)result.viewId == [NSNull null]) { + result.viewId = nil; + } + return result; +} +-(NSDictionary*)toMap { + return [NSDictionary dictionaryWithObjectsAndKeys:(self.viewId ? self.viewId : [NSNull null]), @"viewId", nil]; +} +@end + +@implementation SetMediaMessage ++(SetMediaMessage*)fromMap:(NSDictionary*)dict { + SetMediaMessage* result = [[SetMediaMessage alloc] init]; + result.viewId = dict[@"viewId"]; + if ((NSNull *)result.viewId == [NSNull null]) { + result.viewId = nil; + } + result.uri = dict[@"uri"]; + if ((NSNull *)result.uri == [NSNull null]) { + result.uri = nil; + } + result.type = dict[@"type"]; + if ((NSNull *)result.type == [NSNull null]) { + result.type = nil; + } + result.packageName = dict[@"packageName"]; + if ((NSNull *)result.packageName == [NSNull null]) { + result.packageName = nil; + } + result.autoPlay = dict[@"autoPlay"]; + if ((NSNull *)result.autoPlay == [NSNull null]) { + result.autoPlay = nil; + } + result.hwAcc = dict[@"hwAcc"]; + if ((NSNull *)result.hwAcc == [NSNull null]) { + result.hwAcc = nil; + } + return result; +} +-(NSDictionary*)toMap { + return [NSDictionary dictionaryWithObjectsAndKeys:(self.viewId ? self.viewId : [NSNull null]), @"viewId", (self.uri ? self.uri : [NSNull null]), @"uri", (self.type ? self.type : [NSNull null]), @"type", (self.packageName ? self.packageName : [NSNull null]), @"packageName", (self.autoPlay ? self.autoPlay : [NSNull null]), @"autoPlay", (self.hwAcc ? self.hwAcc : [NSNull null]), @"hwAcc", nil]; +} +@end + +@implementation BooleanMessage ++(BooleanMessage*)fromMap:(NSDictionary*)dict { + BooleanMessage* result = [[BooleanMessage alloc] init]; + result.viewId = dict[@"viewId"]; + if ((NSNull *)result.viewId == [NSNull null]) { + result.viewId = nil; + } + result.result = dict[@"result"]; + if ((NSNull *)result.result == [NSNull null]) { + result.result = nil; + } + return result; +} +-(NSDictionary*)toMap { + return [NSDictionary dictionaryWithObjectsAndKeys:(self.viewId ? self.viewId : [NSNull null]), @"viewId", (self.result ? self.result : [NSNull null]), @"result", nil]; +} +@end + +@implementation LoopingMessage ++(LoopingMessage*)fromMap:(NSDictionary*)dict { + LoopingMessage* result = [[LoopingMessage alloc] init]; + result.viewId = dict[@"viewId"]; + if ((NSNull *)result.viewId == [NSNull null]) { + result.viewId = nil; + } + result.isLooping = dict[@"isLooping"]; + if ((NSNull *)result.isLooping == [NSNull null]) { + result.isLooping = nil; + } + return result; +} +-(NSDictionary*)toMap { + return [NSDictionary dictionaryWithObjectsAndKeys:(self.viewId ? self.viewId : [NSNull null]), @"viewId", (self.isLooping ? self.isLooping : [NSNull null]), @"isLooping", nil]; +} +@end + +@implementation PositionMessage ++(PositionMessage*)fromMap:(NSDictionary*)dict { + PositionMessage* result = [[PositionMessage alloc] init]; + result.viewId = dict[@"viewId"]; + if ((NSNull *)result.viewId == [NSNull null]) { + result.viewId = nil; + } + result.position = dict[@"position"]; + if ((NSNull *)result.position == [NSNull null]) { + result.position = nil; + } + return result; +} +-(NSDictionary*)toMap { + return [NSDictionary dictionaryWithObjectsAndKeys:(self.viewId ? self.viewId : [NSNull null]), @"viewId", (self.position ? self.position : [NSNull null]), @"position", nil]; +} +@end + +@implementation DurationMessage ++(DurationMessage*)fromMap:(NSDictionary*)dict { + DurationMessage* result = [[DurationMessage alloc] init]; + result.viewId = dict[@"viewId"]; + if ((NSNull *)result.viewId == [NSNull null]) { + result.viewId = nil; + } + result.duration = dict[@"duration"]; + if ((NSNull *)result.duration == [NSNull null]) { + result.duration = nil; + } + return result; +} +-(NSDictionary*)toMap { + return [NSDictionary dictionaryWithObjectsAndKeys:(self.viewId ? self.viewId : [NSNull null]), @"viewId", (self.duration ? self.duration : [NSNull null]), @"duration", nil]; +} +@end + +@implementation VolumeMessage ++(VolumeMessage*)fromMap:(NSDictionary*)dict { + VolumeMessage* result = [[VolumeMessage alloc] init]; + result.viewId = dict[@"viewId"]; + if ((NSNull *)result.viewId == [NSNull null]) { + result.viewId = nil; + } + result.volume = dict[@"volume"]; + if ((NSNull *)result.volume == [NSNull null]) { + result.volume = nil; + } + return result; +} +-(NSDictionary*)toMap { + return [NSDictionary dictionaryWithObjectsAndKeys:(self.viewId ? self.viewId : [NSNull null]), @"viewId", (self.volume ? self.volume : [NSNull null]), @"volume", nil]; +} +@end + +@implementation PlaybackSpeedMessage ++(PlaybackSpeedMessage*)fromMap:(NSDictionary*)dict { + PlaybackSpeedMessage* result = [[PlaybackSpeedMessage alloc] init]; + result.viewId = dict[@"viewId"]; + if ((NSNull *)result.viewId == [NSNull null]) { + result.viewId = nil; + } + result.speed = dict[@"speed"]; + if ((NSNull *)result.speed == [NSNull null]) { + result.speed = nil; + } + return result; +} +-(NSDictionary*)toMap { + return [NSDictionary dictionaryWithObjectsAndKeys:(self.viewId ? self.viewId : [NSNull null]), @"viewId", (self.speed ? self.speed : [NSNull null]), @"speed", nil]; +} +@end + +@implementation SnapshotMessage ++(SnapshotMessage*)fromMap:(NSDictionary*)dict { + SnapshotMessage* result = [[SnapshotMessage alloc] init]; + result.viewId = dict[@"viewId"]; + if ((NSNull *)result.viewId == [NSNull null]) { + result.viewId = nil; + } + result.snapshot = dict[@"snapshot"]; + if ((NSNull *)result.snapshot == [NSNull null]) { + result.snapshot = nil; + } + return result; +} +-(NSDictionary*)toMap { + return [NSDictionary dictionaryWithObjectsAndKeys:(self.viewId ? self.viewId : [NSNull null]), @"viewId", (self.snapshot ? self.snapshot : [NSNull null]), @"snapshot", nil]; +} +@end + +@implementation TrackCountMessage ++(TrackCountMessage*)fromMap:(NSDictionary*)dict { + TrackCountMessage* result = [[TrackCountMessage alloc] init]; + result.viewId = dict[@"viewId"]; + if ((NSNull *)result.viewId == [NSNull null]) { + result.viewId = nil; + } + result.count = dict[@"count"]; + if ((NSNull *)result.count == [NSNull null]) { + result.count = nil; + } + return result; +} +-(NSDictionary*)toMap { + return [NSDictionary dictionaryWithObjectsAndKeys:(self.viewId ? self.viewId : [NSNull null]), @"viewId", (self.count ? self.count : [NSNull null]), @"count", nil]; +} +@end + +@implementation SpuTracksMessage ++(SpuTracksMessage*)fromMap:(NSDictionary*)dict { + SpuTracksMessage* result = [[SpuTracksMessage alloc] init]; + result.viewId = dict[@"viewId"]; + if ((NSNull *)result.viewId == [NSNull null]) { + result.viewId = nil; + } + result.subtitles = dict[@"subtitles"]; + if ((NSNull *)result.subtitles == [NSNull null]) { + result.subtitles = nil; + } + return result; +} +-(NSDictionary*)toMap { + return [NSDictionary dictionaryWithObjectsAndKeys:(self.viewId ? self.viewId : [NSNull null]), @"viewId", (self.subtitles ? self.subtitles : [NSNull null]), @"subtitles", nil]; +} +@end + +@implementation SpuTrackMessage ++(SpuTrackMessage*)fromMap:(NSDictionary*)dict { + SpuTrackMessage* result = [[SpuTrackMessage alloc] init]; + result.viewId = dict[@"viewId"]; + if ((NSNull *)result.viewId == [NSNull null]) { + result.viewId = nil; + } + result.spuTrackNumber = dict[@"spuTrackNumber"]; + if ((NSNull *)result.spuTrackNumber == [NSNull null]) { + result.spuTrackNumber = nil; + } + return result; +} +-(NSDictionary*)toMap { + return [NSDictionary dictionaryWithObjectsAndKeys:(self.viewId ? self.viewId : [NSNull null]), @"viewId", (self.spuTrackNumber ? self.spuTrackNumber : [NSNull null]), @"spuTrackNumber", nil]; +} +@end + +@implementation DelayMessage ++(DelayMessage*)fromMap:(NSDictionary*)dict { + DelayMessage* result = [[DelayMessage alloc] init]; + result.viewId = dict[@"viewId"]; + if ((NSNull *)result.viewId == [NSNull null]) { + result.viewId = nil; + } + result.delay = dict[@"delay"]; + if ((NSNull *)result.delay == [NSNull null]) { + result.delay = nil; + } + return result; +} +-(NSDictionary*)toMap { + return [NSDictionary dictionaryWithObjectsAndKeys:(self.viewId ? self.viewId : [NSNull null]), @"viewId", (self.delay ? self.delay : [NSNull null]), @"delay", nil]; +} +@end + +@implementation AddSubtitleMessage ++(AddSubtitleMessage*)fromMap:(NSDictionary*)dict { + AddSubtitleMessage* result = [[AddSubtitleMessage alloc] init]; + result.viewId = dict[@"viewId"]; + if ((NSNull *)result.viewId == [NSNull null]) { + result.viewId = nil; + } + result.uri = dict[@"uri"]; + if ((NSNull *)result.uri == [NSNull null]) { + result.uri = nil; + } + result.type = dict[@"type"]; + if ((NSNull *)result.type == [NSNull null]) { + result.type = nil; + } + result.isSelected = dict[@"isSelected"]; + if ((NSNull *)result.isSelected == [NSNull null]) { + result.isSelected = nil; + } + return result; +} +-(NSDictionary*)toMap { + return [NSDictionary dictionaryWithObjectsAndKeys:(self.viewId ? self.viewId : [NSNull null]), @"viewId", (self.uri ? self.uri : [NSNull null]), @"uri", (self.type ? self.type : [NSNull null]), @"type", (self.isSelected ? self.isSelected : [NSNull null]), @"isSelected", nil]; +} +@end + +@implementation AudioTracksMessage ++(AudioTracksMessage*)fromMap:(NSDictionary*)dict { + AudioTracksMessage* result = [[AudioTracksMessage alloc] init]; + result.viewId = dict[@"viewId"]; + if ((NSNull *)result.viewId == [NSNull null]) { + result.viewId = nil; + } + result.audios = dict[@"audios"]; + if ((NSNull *)result.audios == [NSNull null]) { + result.audios = nil; + } + return result; +} +-(NSDictionary*)toMap { + return [NSDictionary dictionaryWithObjectsAndKeys:(self.viewId ? self.viewId : [NSNull null]), @"viewId", (self.audios ? self.audios : [NSNull null]), @"audios", nil]; +} +@end + +@implementation AudioTrackMessage ++(AudioTrackMessage*)fromMap:(NSDictionary*)dict { + AudioTrackMessage* result = [[AudioTrackMessage alloc] init]; + result.viewId = dict[@"viewId"]; + if ((NSNull *)result.viewId == [NSNull null]) { + result.viewId = nil; + } + result.audioTrackNumber = dict[@"audioTrackNumber"]; + if ((NSNull *)result.audioTrackNumber == [NSNull null]) { + result.audioTrackNumber = nil; + } + return result; +} +-(NSDictionary*)toMap { + return [NSDictionary dictionaryWithObjectsAndKeys:(self.viewId ? self.viewId : [NSNull null]), @"viewId", (self.audioTrackNumber ? self.audioTrackNumber : [NSNull null]), @"audioTrackNumber", nil]; +} +@end + +@implementation AddAudioMessage ++(AddAudioMessage*)fromMap:(NSDictionary*)dict { + AddAudioMessage* result = [[AddAudioMessage alloc] init]; + result.viewId = dict[@"viewId"]; + if ((NSNull *)result.viewId == [NSNull null]) { + result.viewId = nil; + } + result.uri = dict[@"uri"]; + if ((NSNull *)result.uri == [NSNull null]) { + result.uri = nil; + } + result.type = dict[@"type"]; + if ((NSNull *)result.type == [NSNull null]) { + result.type = nil; + } + result.isSelected = dict[@"isSelected"]; + if ((NSNull *)result.isSelected == [NSNull null]) { + result.isSelected = nil; + } + return result; +} +-(NSDictionary*)toMap { + return [NSDictionary dictionaryWithObjectsAndKeys:(self.viewId ? self.viewId : [NSNull null]), @"viewId", (self.uri ? self.uri : [NSNull null]), @"uri", (self.type ? self.type : [NSNull null]), @"type", (self.isSelected ? self.isSelected : [NSNull null]), @"isSelected", nil]; +} +@end + +@implementation VideoTracksMessage ++(VideoTracksMessage*)fromMap:(NSDictionary*)dict { + VideoTracksMessage* result = [[VideoTracksMessage alloc] init]; + result.viewId = dict[@"viewId"]; + if ((NSNull *)result.viewId == [NSNull null]) { + result.viewId = nil; + } + result.videos = dict[@"videos"]; + if ((NSNull *)result.videos == [NSNull null]) { + result.videos = nil; + } + return result; +} +-(NSDictionary*)toMap { + return [NSDictionary dictionaryWithObjectsAndKeys:(self.viewId ? self.viewId : [NSNull null]), @"viewId", (self.videos ? self.videos : [NSNull null]), @"videos", nil]; +} +@end + +@implementation VideoTrackMessage ++(VideoTrackMessage*)fromMap:(NSDictionary*)dict { + VideoTrackMessage* result = [[VideoTrackMessage alloc] init]; + result.viewId = dict[@"viewId"]; + if ((NSNull *)result.viewId == [NSNull null]) { + result.viewId = nil; + } + result.videoTrackNumber = dict[@"videoTrackNumber"]; + if ((NSNull *)result.videoTrackNumber == [NSNull null]) { + result.videoTrackNumber = nil; + } + return result; +} +-(NSDictionary*)toMap { + return [NSDictionary dictionaryWithObjectsAndKeys:(self.viewId ? self.viewId : [NSNull null]), @"viewId", (self.videoTrackNumber ? self.videoTrackNumber : [NSNull null]), @"videoTrackNumber", nil]; +} +@end + +@implementation VideoScaleMessage ++(VideoScaleMessage*)fromMap:(NSDictionary*)dict { + VideoScaleMessage* result = [[VideoScaleMessage alloc] init]; + result.viewId = dict[@"viewId"]; + if ((NSNull *)result.viewId == [NSNull null]) { + result.viewId = nil; + } + result.scale = dict[@"scale"]; + if ((NSNull *)result.scale == [NSNull null]) { + result.scale = nil; + } + return result; +} +-(NSDictionary*)toMap { + return [NSDictionary dictionaryWithObjectsAndKeys:(self.viewId ? self.viewId : [NSNull null]), @"viewId", (self.scale ? self.scale : [NSNull null]), @"scale", nil]; +} +@end + +@implementation VideoAspectRatioMessage ++(VideoAspectRatioMessage*)fromMap:(NSDictionary*)dict { + VideoAspectRatioMessage* result = [[VideoAspectRatioMessage alloc] init]; + result.viewId = dict[@"viewId"]; + if ((NSNull *)result.viewId == [NSNull null]) { + result.viewId = nil; + } + result.aspectRatio = dict[@"aspectRatio"]; + if ((NSNull *)result.aspectRatio == [NSNull null]) { + result.aspectRatio = nil; + } + return result; +} +-(NSDictionary*)toMap { + return [NSDictionary dictionaryWithObjectsAndKeys:(self.viewId ? self.viewId : [NSNull null]), @"viewId", (self.aspectRatio ? self.aspectRatio : [NSNull null]), @"aspectRatio", nil]; +} +@end + +@implementation RendererServicesMessage ++(RendererServicesMessage*)fromMap:(NSDictionary*)dict { + RendererServicesMessage* result = [[RendererServicesMessage alloc] init]; + result.viewId = dict[@"viewId"]; + if ((NSNull *)result.viewId == [NSNull null]) { + result.viewId = nil; + } + result.services = dict[@"services"]; + if ((NSNull *)result.services == [NSNull null]) { + result.services = nil; + } + return result; +} +-(NSDictionary*)toMap { + return [NSDictionary dictionaryWithObjectsAndKeys:(self.viewId ? self.viewId : [NSNull null]), @"viewId", (self.services ? self.services : [NSNull null]), @"services", nil]; +} +@end + +@implementation RendererScanningMessage ++(RendererScanningMessage*)fromMap:(NSDictionary*)dict { + RendererScanningMessage* result = [[RendererScanningMessage alloc] init]; + result.viewId = dict[@"viewId"]; + if ((NSNull *)result.viewId == [NSNull null]) { + result.viewId = nil; + } + result.rendererService = dict[@"rendererService"]; + if ((NSNull *)result.rendererService == [NSNull null]) { + result.rendererService = nil; + } + return result; +} +-(NSDictionary*)toMap { + return [NSDictionary dictionaryWithObjectsAndKeys:(self.viewId ? self.viewId : [NSNull null]), @"viewId", (self.rendererService ? self.rendererService : [NSNull null]), @"rendererService", nil]; +} +@end + +@implementation RendererDevicesMessage ++(RendererDevicesMessage*)fromMap:(NSDictionary*)dict { + RendererDevicesMessage* result = [[RendererDevicesMessage alloc] init]; + result.viewId = dict[@"viewId"]; + if ((NSNull *)result.viewId == [NSNull null]) { + result.viewId = nil; + } + result.rendererDevices = dict[@"rendererDevices"]; + if ((NSNull *)result.rendererDevices == [NSNull null]) { + result.rendererDevices = nil; + } + return result; +} +-(NSDictionary*)toMap { + return [NSDictionary dictionaryWithObjectsAndKeys:(self.viewId ? self.viewId : [NSNull null]), @"viewId", (self.rendererDevices ? self.rendererDevices : [NSNull null]), @"rendererDevices", nil]; +} +@end + +@implementation RenderDeviceMessage ++(RenderDeviceMessage*)fromMap:(NSDictionary*)dict { + RenderDeviceMessage* result = [[RenderDeviceMessage alloc] init]; + result.viewId = dict[@"viewId"]; + if ((NSNull *)result.viewId == [NSNull null]) { + result.viewId = nil; + } + result.rendererDevice = dict[@"rendererDevice"]; + if ((NSNull *)result.rendererDevice == [NSNull null]) { + result.rendererDevice = nil; + } + return result; +} +-(NSDictionary*)toMap { + return [NSDictionary dictionaryWithObjectsAndKeys:(self.viewId ? self.viewId : [NSNull null]), @"viewId", (self.rendererDevice ? self.rendererDevice : [NSNull null]), @"rendererDevice", nil]; +} +@end + +@implementation RecordMessage ++(RecordMessage*)fromMap:(NSDictionary*)dict { + RecordMessage* result = [[RecordMessage alloc] init]; + result.viewId = dict[@"viewId"]; + if ((NSNull *)result.viewId == [NSNull null]) { + result.viewId = nil; + } + result.saveDirectory = dict[@"saveDirectory"]; + if ((NSNull *)result.saveDirectory == [NSNull null]) { + result.saveDirectory = nil; + } + return result; +} +-(NSDictionary*)toMap { + return [NSDictionary dictionaryWithObjectsAndKeys:(self.viewId ? self.viewId : [NSNull null]), @"viewId", (self.saveDirectory ? self.saveDirectory : [NSNull null]), @"saveDirectory", nil]; +} +@end + +void VlcPlayerApiSetup(id binaryMessenger, id api) { + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.initialize" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + FlutterError *error; + [api initialize:&error]; + callback(wrapResult(nil, error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.create" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + CreateMessage *input = [CreateMessage fromMap:message]; + FlutterError *error; + [api create:input error:&error]; + callback(wrapResult(nil, error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.dispose" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + ViewMessage *input = [ViewMessage fromMap:message]; + FlutterError *error; + [api dispose:input error:&error]; + callback(wrapResult(nil, error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.setStreamUrl" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + SetMediaMessage *input = [SetMediaMessage fromMap:message]; + FlutterError *error; + [api setStreamUrl:input error:&error]; + callback(wrapResult(nil, error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.play" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + ViewMessage *input = [ViewMessage fromMap:message]; + FlutterError *error; + [api play:input error:&error]; + callback(wrapResult(nil, error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.pause" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + ViewMessage *input = [ViewMessage fromMap:message]; + FlutterError *error; + [api pause:input error:&error]; + callback(wrapResult(nil, error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.stop" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + ViewMessage *input = [ViewMessage fromMap:message]; + FlutterError *error; + [api stop:input error:&error]; + callback(wrapResult(nil, error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.isPlaying" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + ViewMessage *input = [ViewMessage fromMap:message]; + FlutterError *error; + BooleanMessage *output = [api isPlaying:input error:&error]; + callback(wrapResult([output toMap], error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.isSeekable" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + ViewMessage *input = [ViewMessage fromMap:message]; + FlutterError *error; + BooleanMessage *output = [api isSeekable:input error:&error]; + callback(wrapResult([output toMap], error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.setLooping" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + LoopingMessage *input = [LoopingMessage fromMap:message]; + FlutterError *error; + [api setLooping:input error:&error]; + callback(wrapResult(nil, error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.seekTo" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + PositionMessage *input = [PositionMessage fromMap:message]; + FlutterError *error; + [api seekTo:input error:&error]; + callback(wrapResult(nil, error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.position" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + ViewMessage *input = [ViewMessage fromMap:message]; + FlutterError *error; + PositionMessage *output = [api position:input error:&error]; + callback(wrapResult([output toMap], error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.duration" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + ViewMessage *input = [ViewMessage fromMap:message]; + FlutterError *error; + DurationMessage *output = [api duration:input error:&error]; + callback(wrapResult([output toMap], error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.setVolume" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + VolumeMessage *input = [VolumeMessage fromMap:message]; + FlutterError *error; + [api setVolume:input error:&error]; + callback(wrapResult(nil, error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.getVolume" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + ViewMessage *input = [ViewMessage fromMap:message]; + FlutterError *error; + VolumeMessage *output = [api getVolume:input error:&error]; + callback(wrapResult([output toMap], error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.setPlaybackSpeed" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + PlaybackSpeedMessage *input = [PlaybackSpeedMessage fromMap:message]; + FlutterError *error; + [api setPlaybackSpeed:input error:&error]; + callback(wrapResult(nil, error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.getPlaybackSpeed" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + ViewMessage *input = [ViewMessage fromMap:message]; + FlutterError *error; + PlaybackSpeedMessage *output = [api getPlaybackSpeed:input error:&error]; + callback(wrapResult([output toMap], error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.takeSnapshot" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + ViewMessage *input = [ViewMessage fromMap:message]; + FlutterError *error; + SnapshotMessage *output = [api takeSnapshot:input error:&error]; + callback(wrapResult([output toMap], error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.getSpuTracksCount" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + ViewMessage *input = [ViewMessage fromMap:message]; + FlutterError *error; + TrackCountMessage *output = [api getSpuTracksCount:input error:&error]; + callback(wrapResult([output toMap], error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.getSpuTracks" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + ViewMessage *input = [ViewMessage fromMap:message]; + FlutterError *error; + SpuTracksMessage *output = [api getSpuTracks:input error:&error]; + callback(wrapResult([output toMap], error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.setSpuTrack" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + SpuTrackMessage *input = [SpuTrackMessage fromMap:message]; + FlutterError *error; + [api setSpuTrack:input error:&error]; + callback(wrapResult(nil, error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.getSpuTrack" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + ViewMessage *input = [ViewMessage fromMap:message]; + FlutterError *error; + SpuTrackMessage *output = [api getSpuTrack:input error:&error]; + callback(wrapResult([output toMap], error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.setSpuDelay" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + DelayMessage *input = [DelayMessage fromMap:message]; + FlutterError *error; + [api setSpuDelay:input error:&error]; + callback(wrapResult(nil, error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.getSpuDelay" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + ViewMessage *input = [ViewMessage fromMap:message]; + FlutterError *error; + DelayMessage *output = [api getSpuDelay:input error:&error]; + callback(wrapResult([output toMap], error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.addSubtitleTrack" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + AddSubtitleMessage *input = [AddSubtitleMessage fromMap:message]; + FlutterError *error; + [api addSubtitleTrack:input error:&error]; + callback(wrapResult(nil, error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.getAudioTracksCount" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + ViewMessage *input = [ViewMessage fromMap:message]; + FlutterError *error; + TrackCountMessage *output = [api getAudioTracksCount:input error:&error]; + callback(wrapResult([output toMap], error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.getAudioTracks" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + ViewMessage *input = [ViewMessage fromMap:message]; + FlutterError *error; + AudioTracksMessage *output = [api getAudioTracks:input error:&error]; + callback(wrapResult([output toMap], error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.setAudioTrack" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + AudioTrackMessage *input = [AudioTrackMessage fromMap:message]; + FlutterError *error; + [api setAudioTrack:input error:&error]; + callback(wrapResult(nil, error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.getAudioTrack" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + ViewMessage *input = [ViewMessage fromMap:message]; + FlutterError *error; + AudioTrackMessage *output = [api getAudioTrack:input error:&error]; + callback(wrapResult([output toMap], error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.setAudioDelay" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + DelayMessage *input = [DelayMessage fromMap:message]; + FlutterError *error; + [api setAudioDelay:input error:&error]; + callback(wrapResult(nil, error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.getAudioDelay" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + ViewMessage *input = [ViewMessage fromMap:message]; + FlutterError *error; + DelayMessage *output = [api getAudioDelay:input error:&error]; + callback(wrapResult([output toMap], error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.addAudioTrack" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + AddAudioMessage *input = [AddAudioMessage fromMap:message]; + FlutterError *error; + [api addAudioTrack:input error:&error]; + callback(wrapResult(nil, error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.getVideoTracksCount" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + ViewMessage *input = [ViewMessage fromMap:message]; + FlutterError *error; + TrackCountMessage *output = [api getVideoTracksCount:input error:&error]; + callback(wrapResult([output toMap], error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.getVideoTracks" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + ViewMessage *input = [ViewMessage fromMap:message]; + FlutterError *error; + VideoTracksMessage *output = [api getVideoTracks:input error:&error]; + callback(wrapResult([output toMap], error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.setVideoTrack" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + VideoTrackMessage *input = [VideoTrackMessage fromMap:message]; + FlutterError *error; + [api setVideoTrack:input error:&error]; + callback(wrapResult(nil, error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.getVideoTrack" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + ViewMessage *input = [ViewMessage fromMap:message]; + FlutterError *error; + VideoTrackMessage *output = [api getVideoTrack:input error:&error]; + callback(wrapResult([output toMap], error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.setVideoScale" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + VideoScaleMessage *input = [VideoScaleMessage fromMap:message]; + FlutterError *error; + [api setVideoScale:input error:&error]; + callback(wrapResult(nil, error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.getVideoScale" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + ViewMessage *input = [ViewMessage fromMap:message]; + FlutterError *error; + VideoScaleMessage *output = [api getVideoScale:input error:&error]; + callback(wrapResult([output toMap], error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.setVideoAspectRatio" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + VideoAspectRatioMessage *input = [VideoAspectRatioMessage fromMap:message]; + FlutterError *error; + [api setVideoAspectRatio:input error:&error]; + callback(wrapResult(nil, error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.getVideoAspectRatio" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + ViewMessage *input = [ViewMessage fromMap:message]; + FlutterError *error; + VideoAspectRatioMessage *output = [api getVideoAspectRatio:input error:&error]; + callback(wrapResult([output toMap], error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.getAvailableRendererServices" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + ViewMessage *input = [ViewMessage fromMap:message]; + FlutterError *error; + RendererServicesMessage *output = [api getAvailableRendererServices:input error:&error]; + callback(wrapResult([output toMap], error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.startRendererScanning" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + RendererScanningMessage *input = [RendererScanningMessage fromMap:message]; + FlutterError *error; + [api startRendererScanning:input error:&error]; + callback(wrapResult(nil, error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.stopRendererScanning" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + ViewMessage *input = [ViewMessage fromMap:message]; + FlutterError *error; + [api stopRendererScanning:input error:&error]; + callback(wrapResult(nil, error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.getRendererDevices" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + ViewMessage *input = [ViewMessage fromMap:message]; + FlutterError *error; + RendererDevicesMessage *output = [api getRendererDevices:input error:&error]; + callback(wrapResult([output toMap], error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.castToRenderer" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + RenderDeviceMessage *input = [RenderDeviceMessage fromMap:message]; + FlutterError *error; + [api castToRenderer:input error:&error]; + callback(wrapResult(nil, error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.startRecording" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + RecordMessage *input = [RecordMessage fromMap:message]; + FlutterError *error; + BooleanMessage *output = [api startRecording:input error:&error]; + callback(wrapResult([output toMap], error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VlcPlayerApi.stopRecording" + binaryMessenger:binaryMessenger]; + if (api) { + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + ViewMessage *input = [ViewMessage fromMap:message]; + FlutterError *error; + BooleanMessage *output = [api stopRecording:input error:&error]; + callback(wrapResult([output toMap], error)); + }]; + } + else { + [channel setMessageHandler:nil]; + } + } +} diff --git a/flutter_vlc_player/ios/flutter_vlc_player.podspec b/flutter_vlc_player/ios/flutter_vlc_player.podspec index 2ae2b326..fd87a752 100644 --- a/flutter_vlc_player/ios/flutter_vlc_player.podspec +++ b/flutter_vlc_player/ios/flutter_vlc_player.podspec @@ -13,7 +13,12 @@ Pod::Spec.new do |s| s.license = { :file => '../LICENSE' } s.author = { 'Your Company' => 'email@example.com' } s.source = { :path => '.' } - s.source_files = 'Classes/**/*' + # Include all source files + s.source_files = 'Classes/**/*.{h,m,swift}' + + # Make the umbrella header public + s.public_header_files = 'Classes/**/*.h' + s.dependency 'Flutter' s.platform = :ios, '11.0' s.dependency 'MobileVLCKit', '~> 3.6.1b1' diff --git a/flutter_vlc_player/pigeons/messages.dart b/flutter_vlc_player/pigeons/messages.dart index 1de81b46..d1d24596 100644 --- a/flutter_vlc_player/pigeons/messages.dart +++ b/flutter_vlc_player/pigeons/messages.dart @@ -1,190 +1,206 @@ import 'package:pigeon/pigeon.dart'; -// to make changes effect, must run "dart run pigeon --input pigeons/messages.dart" -@ConfigurePigeon( - PigeonOptions( - dartOut: - '../flutter_vlc_player_platform_interface/lib/src/messages/messages.dart', - swiftOut: 'ios/Classes/Messages.swift', - javaOut: - 'android/src/main/java/software/solid/fluttervlcplayer/Messages.java', - javaOptions: JavaOptions(package: 'software.solid.fluttervlcplayer'), - ), -) //ignore: prefer_match_file_name +class ViewMessage { + int? viewId; +} + class CreateMessage { - final int playerId; - final String uri; - final int type; - final String? packageName; - final bool autoPlay; - final int? hwAcc; - final List options; - - const CreateMessage({ - required this.playerId, - required this.uri, - required this.type, - required this.packageName, - required this.autoPlay, - required this.hwAcc, - required this.options, - }); + int? viewId; + String? uri; + int? type; + String? packageName; + bool? autoPlay; + int? hwAcc; + List? options; } class SetMediaMessage { - final int playerId; - final String uri; - final int type; - final String? packageName; - final bool autoPlay; - final int? hwAcc; - - const SetMediaMessage({ - required this.playerId, - required this.uri, - required this.type, - required this.packageName, - required this.autoPlay, - required this.hwAcc, - }); + int? viewId; + String? uri; + int? type; + String? packageName; + bool? autoPlay; + int? hwAcc; } -class SpuTracksMessage { - final int playerId; - final Map subtitles; +class BooleanMessage { + int? viewId; + bool? result; +} - const SpuTracksMessage({required this.playerId, required this.subtitles}); +class LoopingMessage { + int? viewId; + bool? isLooping; } -class AddSubtitleMessage { - final int playerId; - final String uri; - final int type; - final bool isSelected; +class VolumeMessage { + int? viewId; + int? volume; +} - const AddSubtitleMessage({ - required this.playerId, - required this.uri, - required this.type, - required this.isSelected, - }); +class PlaybackSpeedMessage { + int? viewId; + double? speed; } -class AddAudioMessage { - final int playerId; - final String uri; - final int type; - final bool isSelected; +class PositionMessage { + int? viewId; + int? position; +} - const AddAudioMessage({ - required this.playerId, - required this.uri, - required this.type, - required this.isSelected, - }); +class DurationMessage { + int? viewId; + int? duration; } -@HostApi(dartHostTestHandler: 'TestHostVlcPlayerApi') -abstract class VlcPlayerApi { - void initialize(); +class DelayMessage { + int? viewId; + int? delay; +} - void create(CreateMessage msg); +class TrackCountMessage { + int? viewId; + int? count; +} - void dispose(int playerId); +class SnapshotMessage { + int? viewId; + String? snapshot; +} - // general methods - void setStreamUrl(SetMediaMessage msg); +class SpuTracksMessage { + int? viewId; + Map? subtitles; +} - void play(int playerId); +class SpuTrackMessage { + int? viewId; + int? spuTrackNumber; +} - void pause(int playerId); +class AddSubtitleMessage { + int? viewId; + String? uri; + int? type; + bool? isSelected; +} - void stop(int playerId); +class AudioTracksMessage { + int? viewId; + Map? audios; +} - bool isPlaying(int playerId); +class AudioTrackMessage { + int? viewId; + int? audioTrackNumber; +} - bool isSeekable(int playerId); +class AddAudioMessage { + int? viewId; + String? uri; + int? type; + bool? isSelected; +} - void setLooping(int playerId, bool isLooping); +class VideoTracksMessage { + int? viewId; + Map? videos; +} - void seekTo(int playerId, int position); +class VideoTrackMessage { + int? viewId; + int? videoTrackNumber; +} - int position(int playerId); +class VideoScaleMessage { + int? viewId; + double? scale; +} - int duration(int playerId); +class VideoAspectRatioMessage { + int? viewId; + String? aspectRatio; +} - void setVolume(int playerId, int volume); +class RendererServicesMessage { + int? viewId; + List? services; +} - int getVolume(int playerId); +class RendererScanningMessage { + int? viewId; + String? rendererService; +} - void setPlaybackSpeed(int playerId, double speed); +class RendererDevicesMessage { + int? viewId; + Map? rendererDevices; +} - double getPlaybackSpeed(int playerId); +class RenderDeviceMessage { + int? viewId; + String? rendererDevice; +} - String? takeSnapshot(int playerId); +class RecordMessage { + int? viewId; + String? saveDirectory; +} +@HostApi(dartHostTestHandler: 'TestHostVlcPlayerApi') +abstract class VlcPlayerApi { + void initialize(); + void create(CreateMessage msg); + void dispose(ViewMessage msg); + // general methods + void setStreamUrl(SetMediaMessage msg); + void play(ViewMessage msg); + void pause(ViewMessage msg); + void stop(ViewMessage msg); + BooleanMessage isPlaying(ViewMessage msg); + BooleanMessage isSeekable(ViewMessage msg); + void setLooping(LoopingMessage msg); + void seekTo(PositionMessage msg); + PositionMessage position(ViewMessage msg); + DurationMessage duration(ViewMessage msg); + void setVolume(VolumeMessage msg); + VolumeMessage getVolume(ViewMessage msg); + void setPlaybackSpeed(PlaybackSpeedMessage msg); + PlaybackSpeedMessage getPlaybackSpeed(ViewMessage msg); + SnapshotMessage takeSnapshot(ViewMessage msg); // captions & subtitles methods - - int getSpuTracksCount(int playerId); - - Map getSpuTracks(int playerId); - - void setSpuTrack(int playerId, int spuTrackNumber); - - int getSpuTrack(int playerId); - - void setSpuDelay(int playerId, int delay); - - int getSpuDelay(int playerId); - + TrackCountMessage getSpuTracksCount(ViewMessage msg); + SpuTracksMessage getSpuTracks(ViewMessage msg); + void setSpuTrack(SpuTrackMessage msg); + SpuTrackMessage getSpuTrack(ViewMessage msg); + void setSpuDelay(DelayMessage msg); + DelayMessage getSpuDelay(ViewMessage msg); void addSubtitleTrack(AddSubtitleMessage msg); - // audios methods - int getAudioTracksCount(int playerId); - - Map getAudioTracks(int playerId); - - void setAudioTrack(int playerId, int audioTrackNumber); - - int getAudioTrack(int playerId); - - void setAudioDelay(int playerId, int delay); - - int getAudioDelay(int playerId); - + TrackCountMessage getAudioTracksCount(ViewMessage msg); + AudioTracksMessage getAudioTracks(ViewMessage msg); + void setAudioTrack(AudioTrackMessage msg); + AudioTrackMessage getAudioTrack(ViewMessage msg); + void setAudioDelay(DelayMessage msg); + DelayMessage getAudioDelay(ViewMessage msg); void addAudioTrack(AddAudioMessage msg); - // videos methods - int getVideoTracksCount(int playerId); - - Map getVideoTracks(int playerId); - - void setVideoTrack(int playerId, int videoTrackNumber); - - int getVideoTrack(int playerId); - - void setVideoScale(int playerId, double scale); - - double getVideoScale(int playerId); - - void setVideoAspectRatio(int playerId, String aspectRatio); - - String getVideoAspectRatio(int playerId); - + TrackCountMessage getVideoTracksCount(ViewMessage msg); + VideoTracksMessage getVideoTracks(ViewMessage msg); + void setVideoTrack(VideoTrackMessage msg); + VideoTrackMessage getVideoTrack(ViewMessage msg); + void setVideoScale(VideoScaleMessage msg); + VideoScaleMessage getVideoScale(ViewMessage msg); + void setVideoAspectRatio(VideoAspectRatioMessage msg); + VideoAspectRatioMessage getVideoAspectRatio(ViewMessage msg); // casts & renderers methods - List getAvailableRendererServices(int playerId); - - void startRendererScanning(int playerId, String rendererService); - - void stopRendererScanning(int playerId); - - Map getRendererDevices(int playerId); - - void castToRenderer(int playerId, String rendererId); - + RendererServicesMessage getAvailableRendererServices(ViewMessage msg); + void startRendererScanning(RendererScanningMessage msg); + void stopRendererScanning(ViewMessage msg); + RendererDevicesMessage getRendererDevices(ViewMessage msg); + void castToRenderer(RenderDeviceMessage msg); // recording methods - bool startRecording(int playerId, String saveDirectory); - - bool stopRecording(int playerId); + BooleanMessage startRecording(RecordMessage msg); + BooleanMessage stopRecording(ViewMessage msg); } diff --git a/flutter_vlc_player/pubspec.yaml b/flutter_vlc_player/pubspec.yaml index a534c4f4..49eb69ca 100644 --- a/flutter_vlc_player/pubspec.yaml +++ b/flutter_vlc_player/pubspec.yaml @@ -4,8 +4,8 @@ version: 7.4.4 homepage: https://github.com/solid-software/flutter_vlc_player/ environment: - sdk: ^3.7.0 - flutter: '>=3.3.0' + sdk: '>=3.8.0' + flutter: '>=3.8.0' flutter: plugin: @@ -21,12 +21,12 @@ dependencies: sdk: flutter flutter_vlc_player_platform_interface: ^2.0.5 - meta: ^1.8.0 + meta: ^1.16.0 dev_dependencies: flutter_test: sdk: flutter - pigeon: ^25.2.0 - plugin_platform_interface: ^2.1.3 - solid_lints: ^0.3.0 + pigeon: ^26.0.1 + plugin_platform_interface: ^2.1.8 + solid_lints: ^0.3.1