/** * Create a new media player event for a given native event. * * @param event native event * @param eventMask bit mask of enabled events (i.e. events to send notifications for) * @return media player event, or <code>null</code> if the native event type is not enabled or otherwise could not be handled */ public MediaPlayerEvent CreateEvent(libvlc_event_t evt, int eventMask) { // Create an event suitable for the native event type... MediaPlayerEvent result = null; switch(evt.type) { // === Events relating to the media player ============================== case libvlc_event_e.libvlc_MediaPlayerMediaChanged: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.MEDIA_CHANGED)) { result = new MediaPlayerMediaChangedEvent(mediaPlayer, evt.u.md, mediaPlayer.Mrl(evt.u.md)); // } break; case libvlc_event_e.libvlc_MediaPlayerNothingSpecial: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.MEDIA_CHANGED)) { result = new MediaPlayerNothingSpecialEvent(mediaPlayer); // } break; case libvlc_event_e.libvlc_MediaPlayerOpening: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.OPENING)) { result = new MediaPlayerOpeningEvent(mediaPlayer); // } break; case libvlc_event_e.libvlc_MediaPlayerBuffering: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.BUFFERING)) { result = new MediaPlayerBufferingEvent(mediaPlayer, evt.u.new_cache); // } break; case libvlc_event_e.libvlc_MediaPlayerPlaying: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.PLAYING)) { result = new MediaPlayerPlayingEvent(mediaPlayer); // } break; case libvlc_event_e.libvlc_MediaPlayerPaused: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.PAUSED)) { result = new MediaPlayerPausedEvent(mediaPlayer); // } break; case libvlc_event_e.libvlc_MediaPlayerStopped: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.STOPPED)) { result = new MediaPlayerStoppedEvent(mediaPlayer); // } break; case libvlc_event_e.libvlc_MediaPlayerForward: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.FORWARD)) { result = new MediaPlayerForwardEvent(mediaPlayer); // } break; case libvlc_event_e.libvlc_MediaPlayerBackward: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.BACKWARD)) { result = new MediaPlayerBackwardEvent(mediaPlayer); // } break; case libvlc_event_e.libvlc_MediaPlayerEndReached: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.FINISHED)) { result = new MediaPlayerEndReachedEvent(mediaPlayer); // } break; case libvlc_event_e.libvlc_MediaPlayerEncounteredError: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.ERROR)) { result = new MediaPlayerEncounteredErrorEvent(mediaPlayer); // } break; case libvlc_event_e.libvlc_MediaPlayerTimeChanged: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.TIME_CHANGED)) { result = new MediaPlayerTimeChangedEvent(mediaPlayer, evt.u.new_time); // } break; case libvlc_event_e.libvlc_MediaPlayerPositionChanged: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.POSITION_CHANGED)) { result = new MediaPlayerPositionChangedEvent(mediaPlayer, evt.u.new_position); // } break; case libvlc_event_e.libvlc_MediaPlayerSeekableChanged: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.SEEKABLE_CHANGED)) { result = new MediaPlayerSeekableChangedEvent(mediaPlayer, evt.u.new_seekable); // } break; case libvlc_event_e.libvlc_MediaPlayerPausableChanged: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.PAUSABLE_CHANGED)) { result = new MediaPlayerPausableChangedEvent(mediaPlayer, evt.u.new_pausable); // } break; case libvlc_event_e.libvlc_MediaPlayerTitleChanged: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.TITLE_CHANGED)) { result = new MediaPlayerTitleChangedEvent(mediaPlayer, evt.u.new_title); // } break; case libvlc_event_e.libvlc_MediaPlayerSnapshotTaken: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.SNAPSHOT_TAKEN)) { result = new MediaPlayerSnapshotTakenEvent(mediaPlayer, NativeString.String(evt.u.psz_filename)); // } break; case libvlc_event_e.libvlc_MediaPlayerLengthChanged: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.LENGTH_CHANGED)) { result = new MediaPlayerLengthChangedEvent(mediaPlayer, evt.u.new_length); // } break; case libvlc_event_e.libvlc_MediaPlayerVout: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.VIDEO_OUTPUT)) { result = new MediaPlayerVoutEvent(mediaPlayer, evt.u.new_count); // } break; // === Events relating to the current media ============================= case libvlc_event_e.libvlc_MediaMetaChanged: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.MEDIA_META_CHANGED)) { result = new MediaMetaChangedEvent(mediaPlayer, evt.u.meta_type); // } break; case libvlc_event_e.libvlc_MediaSubItemAdded: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.MEDIA_SUB_ITEM_ADDED)) { result = new MediaSubItemAddedEvent(mediaPlayer, evt.u.new_child); // } break; case libvlc_event_e.libvlc_MediaDurationChanged: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.MEDIA_DURATION_CHANGED)) { result = new MediaDurationChangedEvent(mediaPlayer, evt.u.new_duration); // } break; case libvlc_event_e.libvlc_MediaParsedChanged: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.MEDIA_PARSED_CHANGED)) { result = new MediaParsedChangedEvent(mediaPlayer, evt.u.new_status); // } break; case libvlc_event_e.libvlc_MediaFreed: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.MEDIA_FREED)) { result = new MediaFreedEvent(mediaPlayer); // } break; case libvlc_event_e.libvlc_MediaStateChanged: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.MEDIA_STATE_CHANGED)) { result = new MediaStateChangedEvent(mediaPlayer, evt.u.new_state); // } break; } return result; }
/** * Create a new media player event for a given native event. * * @param event native event * @param eventMask bit mask of enabled events (i.e. events to send notifications for) * @return media player event, or <code>null</code> if the native event type is not enabled or otherwise could not be handled */ public MediaPlayerEvent CreateEvent(libvlc_event_t evt, int eventMask) { // Create an event suitable for the native event type... MediaPlayerEvent result = null; switch (evt.type) { // === Events relating to the media player ============================== case libvlc_event_e.libvlc_MediaPlayerMediaChanged: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.MEDIA_CHANGED)) { result = new MediaPlayerMediaChangedEvent(mediaPlayer, evt.u.md, mediaPlayer.Mrl(evt.u.md)); // } break; case libvlc_event_e.libvlc_MediaPlayerNothingSpecial: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.MEDIA_CHANGED)) { result = new MediaPlayerNothingSpecialEvent(mediaPlayer); // } break; case libvlc_event_e.libvlc_MediaPlayerOpening: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.OPENING)) { result = new MediaPlayerOpeningEvent(mediaPlayer); // } break; case libvlc_event_e.libvlc_MediaPlayerBuffering: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.BUFFERING)) { result = new MediaPlayerBufferingEvent(mediaPlayer, evt.u.new_cache); // } break; case libvlc_event_e.libvlc_MediaPlayerPlaying: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.PLAYING)) { result = new MediaPlayerPlayingEvent(mediaPlayer); // } break; case libvlc_event_e.libvlc_MediaPlayerPaused: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.PAUSED)) { result = new MediaPlayerPausedEvent(mediaPlayer); // } break; case libvlc_event_e.libvlc_MediaPlayerStopped: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.STOPPED)) { result = new MediaPlayerStoppedEvent(mediaPlayer); // } break; case libvlc_event_e.libvlc_MediaPlayerForward: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.FORWARD)) { result = new MediaPlayerForwardEvent(mediaPlayer); // } break; case libvlc_event_e.libvlc_MediaPlayerBackward: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.BACKWARD)) { result = new MediaPlayerBackwardEvent(mediaPlayer); // } break; case libvlc_event_e.libvlc_MediaPlayerEndReached: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.FINISHED)) { result = new MediaPlayerEndReachedEvent(mediaPlayer); // } break; case libvlc_event_e.libvlc_MediaPlayerEncounteredError: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.ERROR)) { result = new MediaPlayerEncounteredErrorEvent(mediaPlayer); // } break; case libvlc_event_e.libvlc_MediaPlayerTimeChanged: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.TIME_CHANGED)) { result = new MediaPlayerTimeChangedEvent(mediaPlayer, evt.u.new_time); // } break; case libvlc_event_e.libvlc_MediaPlayerPositionChanged: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.POSITION_CHANGED)) { result = new MediaPlayerPositionChangedEvent(mediaPlayer, evt.u.new_position); // } break; case libvlc_event_e.libvlc_MediaPlayerSeekableChanged: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.SEEKABLE_CHANGED)) { result = new MediaPlayerSeekableChangedEvent(mediaPlayer, evt.u.new_seekable); // } break; case libvlc_event_e.libvlc_MediaPlayerPausableChanged: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.PAUSABLE_CHANGED)) { result = new MediaPlayerPausableChangedEvent(mediaPlayer, evt.u.new_pausable); // } break; case libvlc_event_e.libvlc_MediaPlayerTitleChanged: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.TITLE_CHANGED)) { result = new MediaPlayerTitleChangedEvent(mediaPlayer, evt.u.new_title); // } break; case libvlc_event_e.libvlc_MediaPlayerSnapshotTaken: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.SNAPSHOT_TAKEN)) { result = new MediaPlayerSnapshotTakenEvent(mediaPlayer, NativeString.String(evt.u.psz_filename)); // } break; case libvlc_event_e.libvlc_MediaPlayerLengthChanged: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.LENGTH_CHANGED)) { result = new MediaPlayerLengthChangedEvent(mediaPlayer, evt.u.new_length); // } break; case libvlc_event_e.libvlc_MediaPlayerVout: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.VIDEO_OUTPUT)) { result = new MediaPlayerVoutEvent(mediaPlayer, evt.u.new_count); // } break; // === Events relating to the current media ============================= case libvlc_event_e.libvlc_MediaMetaChanged: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.MEDIA_META_CHANGED)) { result = new MediaMetaChangedEvent(mediaPlayer, evt.u.meta_type); // } break; case libvlc_event_e.libvlc_MediaSubItemAdded: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.MEDIA_SUB_ITEM_ADDED)) { result = new MediaSubItemAddedEvent(mediaPlayer, evt.u.new_child); // } break; case libvlc_event_e.libvlc_MediaDurationChanged: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.MEDIA_DURATION_CHANGED)) { result = new MediaDurationChangedEvent(mediaPlayer, evt.u.new_duration); // } break; case libvlc_event_e.libvlc_MediaParsedChanged: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.MEDIA_PARSED_CHANGED)) { result = new MediaParsedChangedEvent(mediaPlayer, evt.u.new_status); // } break; case libvlc_event_e.libvlc_MediaFreed: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.MEDIA_FREED)) { result = new MediaFreedEvent(mediaPlayer); // } break; case libvlc_event_e.libvlc_MediaStateChanged: // if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.MEDIA_STATE_CHANGED)) { result = new MediaStateChangedEvent(mediaPlayer, evt.u.new_state); // } break; } return(result); }