コード例 #1
0
        private void OnMediaEngineEvent(MediaEngineEvent mediaEvent, long param1, int param2)
        {
            if (!_mediaEngine.HasVideo())
            {
                return;
            }

            switch (mediaEvent)
            {
            case MediaEngineEvent.Play:
                _lastFrame = null;
                break;

            case MediaEngineEvent.Ended:

                if (IsLooped)
                {
                    PlatformPlay();
                    return;
                }

                _state = MediaState.Stopped;
                break;
            }
        }
コード例 #2
0
        private static void MediaEngineExOnPlaybackEvent(MediaEngineEvent mediaEvent, long param1, int param2)
        {
            if (mediaEvent != MediaEngineEvent.Ended)
                return;

            _dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => OnSongFinishedPlaying(null, null)).AsTask();
        }
コード例 #3
0
ファイル: MediaPlayer.cs プロジェクト: zielakbn/MonoGame
 private static void MediaEngineExOnPlaybackEvent(MediaEngineEvent mediaEvent, long param1, int param2)
 {
     if (mediaEvent == MediaEngineEvent.Ended)
     {
         _dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => OnSongFinishedPlaying(null, null)).AsTask();
     }
 }
コード例 #4
0
ファイル: MediaPlayer.cs プロジェクト: Makzz90/VKClient_re
        protected void OnMediaEngineEvent(MediaEngineEvent mediaEvent, long param1, int param2)
        {
            switch (mediaEvent)
            {
            case MediaEngineEvent.Ended:
                if ((bool)this.mediaEngineEx.HasVideo())
                {
                    this.StopVideo();
                }
                this.isEndOfStream = true;
                break;

            case MediaEngineEvent.Play:
                this.IsPlaying = true;
                break;

            case MediaEngineEvent.Pause:
                this.IsPlaying = false;
                break;

            case MediaEngineEvent.LoadedMetadata:
                this.isEndOfStream = false;
                break;

            case MediaEngineEvent.CanPlay:
                this.canPlay = true;
                this.Play();
                break;
            }
        }
コード例 #5
0
 private static void MediaEngineExOnPlaybackEvent(MediaEngineEvent mediaEvent, long param1, int param2)
 {
     if (mediaEvent == MediaEngineEvent.Ended)
     {
         OnSongFinishedPlaying(null, null);
     }
 }
コード例 #6
0
ファイル: MediaEngine.cs プロジェクト: wpwen/SharpDX
        private void OnPlaybackEvent(MediaEngineEvent mediaevent, long param1, int param2)
        {
            MediaEngineNotifyDelegate handler = PlaybackEvent;

            if (handler != null)
            {
                handler(mediaevent, param1, param2);
            }
        }
コード例 #7
0
        private void OnEngineEvent(MediaEngineEvent mediaevent, long param1, int param2)
        {
            switch (mediaevent)
            {
            case MediaEngineEvent.DurationChange:
                SetDuration(engine.Duration);
                break;

            case MediaEngineEvent.LoadStart:
                SetCurrentState(StreamPlayerState.LoadingSource);
                break;

            case MediaEngineEvent.LoadedMetadata:
                int x, y;
                engine.GetNativeVideoSize(out x, out y);
                using (var texture = new Texture2D(Device, new Texture2DDescription
                {
                    Format = Format.B8G8R8A8_UNorm,
                    Width = x,
                    Height = y,
                    ArraySize = 1,
                    MipLevels = 1,
                    SampleDescription = new SampleDescription
                    {
                        Count = 1
                    },
                    BindFlags = BindFlags.RenderTarget,
                }))
                {
                    TargetSurface?.Dispose();
                    TargetSurface = texture.QueryInterface <Surface>();
                    OnNewSurface(x, y);
                    SetCurrentTime(TimeSpan.Zero);
                }
                break;

            case MediaEngineEvent.CanPlay:
                SetCurrentState(StreamPlayerState.CanPlay);
                break;

            case MediaEngineEvent.CanPlayThrough:
                SetCurrentState(StreamPlayerState.CanPlayFully);
                break;

            case MediaEngineEvent.Error:
                // We don't want to throw on this thread, so instead break the debugger
                if (System.Diagnostics.Debugger.IsAttached)
                {
                    var exception = System.Runtime.InteropServices.Marshal.GetExceptionForHR(param2);
                    System.Diagnostics.Debugger.Break();
                }
                break;
            }
        }
コード例 #8
0
        private static void MediaEngineExOnPlaybackEvent(MediaEngineEvent mediaEvent, long param1, int param2)
        {
            if (mediaEvent != MediaEngineEvent.Ended)
            {
                return;
            }

#if WINDOWS_PHONE
            _dispatcher.BeginInvoke(() => OnSongFinishedPlaying(null, null));
#else
            _dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => OnSongFinishedPlaying(null, null)).AsTask();
#endif
        }
コード例 #9
0
ファイル: MediaPlayer.WME.cs プロジェクト: Zodge/MonoGame
 private static void MediaEngineExOnPlaybackEvent(MediaEngineEvent mediaEvent, long param1, int param2)
 {
     if (mediaEvent == MediaEngineEvent.LoadedData)
     {
         if (_desiredPosition.HasValue)
             _mediaEngineEx.CurrentTime = _desiredPosition.Value.TotalSeconds;
         if (_sessionState == SessionState.Started)
             _mediaEngineEx.Play();
     }
     if (mediaEvent == MediaEngineEvent.Ended)
     {
         _sessionState = SessionState.Stopped;
         _dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => OnSongFinishedPlaying(null, null)).AsTask();
     }
 }
コード例 #10
0
        protected virtual void OnMediaEngineEvent(MediaEngineEvent mediaEvent, long param1, int param2)
        {
            switch (mediaEvent)
            {
            case MediaEngineEvent.NotifyStableState:
                SetEvent(new IntPtr(param1));
                break;

            case MediaEngineEvent.LoadedMetadata:
                IsEndOfStream = false;
                break;

            case MediaEngineEvent.CanPlay:
                // Start the Playback
                Play();
                break;

            case MediaEngineEvent.Play:
                IsPlaying = true;
                break;

            case MediaEngineEvent.Pause:
                IsPlaying = false;
                break;

            case MediaEngineEvent.Ended:
                IsEndOfStream = true;
                if (Looping)
                {
                    Play();
                }
                else
                {
                    if (mediaEngineEx.HasVideo())
                    {
                        StopVideo();
                    }
                }
                break;

            case MediaEngineEvent.TimeUpdate:
                break;

            case MediaEngineEvent.Error:
                break;
            }
        }
コード例 #11
0
 private void OnMediaEngineEvent(MediaEngineEvent mediaEvent, long param1, int param2)
 {
     switch (mediaEvent)
     {
         case MediaEngineEvent.LoadedMetadata:
             break;
         case MediaEngineEvent.CanPlay:
             musicMediaEvents.Enqueue(new SoundMusicEventNotification(SoundMusicEvent.ReadyToBePlayed, null));
             break;
         case MediaEngineEvent.Ended:
             musicMediaEvents.Enqueue(new SoundMusicEventNotification(SoundMusicEvent.EndOfTrackReached, null));
             break;
         case MediaEngineEvent.Error:
             musicMediaEvents.Enqueue(new SoundMusicEventNotification(SoundMusicEvent.ErrorOccurred, new MediaEngineErrorCodes(param1, param2)));
             break;
     }
 }
コード例 #12
0
ファイル: Program.cs プロジェクト: ukod/LiveScreenWallpaper
            /// <summary>
            /// Called when [playback callback].
            /// </summary>
            /// <param name="playEvent">The play event.</param>
            /// <param name="param1">The param1.</param>
            /// <param name="param2">The param2.</param>
            internal static void OnPlaybackCallback(MediaEngineEvent playEvent, long param1, int param2)
            {
                switch (playEvent)
                {
                case MediaEngineEvent.CanPlay:
                    eventReadyToPlay.Set();
                    break;

                case MediaEngineEvent.TimeUpdate:
                    break;

                case MediaEngineEvent.Error:
                case MediaEngineEvent.Abort:
                case MediaEngineEvent.Ended:
                    isMusicStopped = true;
                    break;
                }
            }
コード例 #13
0
        private void Engine_PlaybackEvent(MediaEngineEvent mediaEvent, long param1, int param2)
        {
            Trace.TraceInformation(mediaEvent.ToString());
            switch (mediaEvent)
            {
            case MediaEngineEvent.LoadStart:
                ErrorCode = MediaEngineErr.Noerror;
                break;

            case MediaEngineEvent.Error:
                ErrorCode = (MediaEngineErr)param1;
                break;

            case MediaEngineEvent.LoadedMetadata:
                _invalidated = true;
                break;
            }
        }
コード例 #14
0
 private static void MediaEngineExOnPlaybackEvent(MediaEngineEvent mediaEvent, long param1, int param2)
 {
     if (mediaEvent == MediaEngineEvent.LoadedData)
     {
         if (_desiredPosition.HasValue)
         {
             _mediaEngineEx.CurrentTime = _desiredPosition.Value.TotalSeconds;
         }
         if (_sessionState == SessionState.Started)
         {
             _mediaEngineEx.Play();
         }
     }
     if (mediaEvent == MediaEngineEvent.Ended)
     {
         _sessionState = SessionState.Stopped;
         _dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => OnSongFinishedPlaying(null, null)).AsTask();
     }
 }
コード例 #15
0
        private void OnMediaEngineEvent(MediaEngineEvent mediaEvent, long param1, int param2)
        {
            switch (mediaEvent)
            {
            case MediaEngineEvent.LoadedMetadata:
                break;

            case MediaEngineEvent.CanPlay:
                musicMediaEvents.Enqueue(new SoundMusicEventNotification(SoundMusicEvent.ReadyToBePlayed, null));
                break;

            case MediaEngineEvent.Ended:
                musicMediaEvents.Enqueue(new SoundMusicEventNotification(SoundMusicEvent.EndOfTrackReached, null));
                break;

            case MediaEngineEvent.Error:
                musicMediaEvents.Enqueue(new SoundMusicEventNotification(SoundMusicEvent.ErrorOccurred, new MediaEngineErrorCodes(param1, param2)));
                break;
            }
        }
コード例 #16
0
ファイル: Program.cs プロジェクト: zyQmma/SharpDX-Samples
        /// <summary>
        /// Called when [playback callback].
        /// </summary>
        /// <param name="playEvent">The play event.</param>
        /// <param name="param1">The param1.</param>
        /// <param name="param2">The param2.</param>
        private static void OnPlaybackCallback(MediaEngineEvent playEvent, long param1, int param2)
        {
            Console.Write("PlayBack Event received: {0}", playEvent);
            switch (playEvent)
            {
            case MediaEngineEvent.CanPlay:
                eventReadyToPlay.Set();
                break;

            case MediaEngineEvent.TimeUpdate:
                Console.Write(" {0}", TimeSpan.FromSeconds(mediaEngineEx.CurrentTime));
                break;

            case MediaEngineEvent.Error:
            case MediaEngineEvent.Abort:
            case MediaEngineEvent.Ended:
                isMusicStopped = true;
                break;
            }

            Console.WriteLine();
        }
コード例 #17
0
ファイル: VideoPlayer.cs プロジェクト: exomia/framework
        /// <summary>
        ///     Executes the media engine event action.
        /// </summary>
        /// <param name="mediaEvent"> The media event. </param>
        /// <param name="param1">     The first parameter. </param>
        /// <param name="param2">     The second parameter. </param>
        private void OnMediaEngineEvent(MediaEngineEvent mediaEvent, long param1, int param2)
        {
            switch (mediaEvent)
            {
            case MediaEngineEvent.NotifyStableState:
                Kernel32.SetEvent(new IntPtr(param1));
                break;

            case MediaEngineEvent.LoadedMetadata:
                _isEndOfStream = false;
                break;

            case MediaEngineEvent.CanPlay:
                _eventReadyToPlay.Set();
                break;

            case MediaEngineEvent.Play:
                _isPlaying = true;
                break;

            case MediaEngineEvent.Pause:
                _isPlaying = false;
                break;

            case MediaEngineEvent.Ended:
                if (_mediaEngineEx !.HasVideo())
                {
                    Stop();
                }
                _isEndOfStream = true;
                break;

            case MediaEngineEvent.TimeUpdate:
                break;

            case MediaEngineEvent.Error:
                break;
            }
        }
コード例 #18
0
ファイル: VideoPlayer.WME.cs プロジェクト: Cardanis/MonoGame
        private void OnMediaEngineEvent(MediaEngineEvent mediaEvent, long param1, int param2)
        {
            if (!_mediaEngine.HasVideo())
                return;

            switch (mediaEvent)
            {
                case MediaEngineEvent.Play:
                    _lastFrame = null;
                    break;
                
                case MediaEngineEvent.Ended:

                    if (IsLooped)
                    {
                        PlatformPlay();
                        return;
                    }   
                    
                    _state = MediaState.Stopped;
                    break;
            }
        }
コード例 #19
0
ファイル: MediaEngine.cs プロジェクト: alexey-bez/SharpDX
 public void OnPlaybackEvent(MediaEngineEvent mediaEngineEvent, long param1, int param2)
 {
     MediaEngine.OnPlaybackEvent(mediaEngineEvent, param1, param2);
 }
コード例 #20
0
 internal void OnPlaybackEvent(MediaEngineEvent @event, nuint param1, int param2)
 {
     PlaybackEvent?.Invoke(@event, param1, param2);
 }
コード例 #21
0
        void mediaEngine_PlaybackEvent(MediaEngineEvent mediaEvent, long param1, int param2)
        {
            if (mediaEvent == MediaEngineEvent.CanPlay)
            {

                if (this.mediaEngine.Error != null)
                {
                    int a = 0;
                }

                if (this.mediaEngine.HasVideo())
                {
                    int width = 0;
                    int height = 0;
                    this.mediaEngine.GetNativeVideoSize(out width, out height);

                    this.texture = new SharpDX.Direct3D11.Texture2D(this.context.D3DDevice, new SharpDX.Direct3D11.Texture2DDescription()
                        {
                            ArraySize = 1,
                            Width = width,
                            Height = height,
                            Usage = SharpDX.Direct3D11.ResourceUsage.Default,
                            Format = Format.B8G8R8A8_UNorm,
                            CpuAccessFlags = SharpDX.Direct3D11.CpuAccessFlags.None,
                            BindFlags = SharpDX.Direct3D11.BindFlags.RenderTarget | SharpDX.Direct3D11.BindFlags.ShaderResource,
                            OptionFlags = SharpDX.Direct3D11.ResourceOptionFlags.None,
                            SampleDescription = new SampleDescription(1, 0),
                            MipLevels = 1,
                        });

                    this.dxgiSurface = this.texture.QueryInterface<SharpDX.DXGI.Surface>();

                    this.textureView = new ShaderResourceView(this.context.D3DDevice, this.texture);

                    ready = true;

                    this.mediaEngine.Play();
                }

                state = new RasterizerState(this.context.D3DDevice, new RasterizerStateDescription()
                    {
                        CullMode = CullMode.Back,
                        FillMode = FillMode.Solid,
                        DepthBias = 0,
                        DepthBiasClamp = 0,
                        IsDepthClipEnabled = true,
                        IsMultisampleEnabled = true,
                        SlopeScaledDepthBias = 0
                    });
            }
        }
コード例 #22
0
ファイル: MediaEngine.cs プロジェクト: wpwen/SharpDX
 public void OnPlaybackEvent(MediaEngineEvent mediaEngineEvent, long param1, int param2)
 {
     MediaEngine.OnPlaybackEvent(mediaEngineEvent, param1, param2);
 }
コード例 #23
0
 internal VideoStateChangedEventArgs(MediaEngineEvent oldValidState, MediaEngineEvent newState)
 {
     OldValidState = oldValidState;
     NewState      = newState;
 }
コード例 #24
0
        /// <summary>
        /// Called when [playback callback].
        /// </summary>
        /// <param name="playEvent">The play event.</param>
        /// <param name="param1">The param1.</param>
        /// <param name="param2">The param2.</param>
        private void OnPlaybackCallback(MediaEngineEvent playEvent, long param1, int param2)
        {
            switch (playEvent)
            {
            case MediaEngineEvent.ResourceLost:
            case MediaEngineEvent.StreamRenderingerror:
            case MediaEngineEvent.Suspend:
            case MediaEngineEvent.Abort:
            case MediaEngineEvent.Emptied:
            case MediaEngineEvent.Stalled:
                break;

            case MediaEngineEvent.LoadedMetadata:
                CompleteMediaInitialization();
                break;

            case MediaEngineEvent.Error:
                Logger.Error($"Failed to load the video source. The file codec or format is likely not to be supported. MedieEngine error code=[{(MediaEngineErr)param1}], Windows error code=[{param2}]");
                ReleaseMedia();
                break;

            case MediaEngineEvent.FirstFrameReady:
                break;

            case MediaEngineEvent.LoadedData:
                break;

            case MediaEngineEvent.CanPlay:
                break;

            case MediaEngineEvent.Seeked:
                break;

            case MediaEngineEvent.Ended:
                reachedEOF = true;
                break;

            case MediaEngineEvent.LoadStart:
            case MediaEngineEvent.Progress:
            case MediaEngineEvent.Waiting:
            case MediaEngineEvent.Playing:
            case MediaEngineEvent.CanPlayThrough:
            case MediaEngineEvent.Seeking:
            case MediaEngineEvent.Play:
            case MediaEngineEvent.Pause:
            case MediaEngineEvent.TimeUpdate:
            case MediaEngineEvent.RateChange:
            case MediaEngineEvent.DurationChange:
            case MediaEngineEvent.VolumeChange:
            case MediaEngineEvent.FormatChange:
            case MediaEngineEvent.PurgeQueuedEvents:
            case MediaEngineEvent.TimelineMarker:
            case MediaEngineEvent.BalanceChange:
            case MediaEngineEvent.DownloadComplete:
            case MediaEngineEvent.BufferingStarted:
            case MediaEngineEvent.BufferingEnded:
            case MediaEngineEvent.FrameStepCompleted:
            case MediaEngineEvent.NotifyStableState:
            case MediaEngineEvent.Trackschange:
            case MediaEngineEvent.OpmInformation:
            case MediaEngineEvent.DelayloadeventChanged:
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(playEvent), playEvent, null);
            }
        }
コード例 #25
0
ファイル: MediaPlayer.cs プロジェクト: valsavva/dynacat
		private static void MediaEngineExOnPlaybackEvent(MediaEngineEvent mediaEvent, long param1, int param2)
		{
			if (mediaEvent == MediaEngineEvent.Ended)
			{
				OnSongFinishedPlaying(null, null);
			}
		}
コード例 #26
0
 private void MediaEngineExOnPlaybackEvent(MediaEngineEvent mediaEvent, long param1, int param2)
 {
     //throw new NotImplementedException();
 }
コード例 #27
0
ファイル: MediaPlayer.cs プロジェクト: yiyi99/RemoteTerminal
 protected virtual void OnMediaEngineEvent(MediaEngineEvent mediaEvent, long param1, int param2)
 {
     switch (mediaEvent)
     {
         case MediaEngineEvent.NotifyStableState:
             SetEvent(new IntPtr(param1));
             break;
         case MediaEngineEvent.LoadedMetadata:
             isEndOfStream = false;
             break;
         case MediaEngineEvent.CanPlay:
             // Start the Playback
             Play();
             break;
         case MediaEngineEvent.Play:
             IsPlaying = true;
             break;
         case MediaEngineEvent.Pause:
             IsPlaying = false;
             break;
         case MediaEngineEvent.Ended:
             if (mediaEngineEx.HasVideo())
             {
                 StopVideo();
             }
             isEndOfStream = true;
             break;
         case MediaEngineEvent.TimeUpdate:
             break;
         case MediaEngineEvent.Error:
             break;
     }
 }
コード例 #28
0
ファイル: MediaEngine.cs プロジェクト: alexey-bez/SharpDX
 private void OnPlaybackEvent(MediaEngineEvent mediaevent, long param1, int param2)
 {
     MediaEngineNotifyDelegate handler = PlaybackEvent;
     if (handler != null) handler(mediaevent, param1, param2);
 }
コード例 #29
0
ファイル: Program.cs プロジェクト: MaybeMars/SharpDX-Samples
        /// <summary>
        /// Called when [playback callback].
        /// </summary>
        /// <param name="playEvent">The play event.</param>
        /// <param name="param1">The param1.</param>
        /// <param name="param2">The param2.</param>
        private static void OnPlaybackCallback(MediaEngineEvent playEvent, long param1, int param2)
        {
            Console.Write("PlayBack Event received: {0}", playEvent);
            switch (playEvent)
            {
                case MediaEngineEvent.CanPlay:
                    eventReadyToPlay.Set();
                    break;
                case MediaEngineEvent.TimeUpdate:
                    Console.Write(" {0}", TimeSpan.FromSeconds(mediaEngineEx.CurrentTime));
                    break;
                case MediaEngineEvent.Error:
                case MediaEngineEvent.Abort:
                case MediaEngineEvent.Ended:
                    isMusicStopped = true;
                    break;
            }

            Console.WriteLine();
        }
コード例 #30
0
ファイル: Program.cs プロジェクト: MaybeMars/SharpDX-Samples
 /// <summary>
 /// Called when [playback callback].
 /// </summary>
 /// <param name="playEvent">The play event.</param>
 /// <param name="param1">The param1.</param>
 /// <param name="param2">The param2.</param>
 private static void OnPlaybackCallback(MediaEngineEvent playEvent, long param1, int param2)
 {
     switch (playEvent)
     {
         case MediaEngineEvent.CanPlay:
             eventReadyToPlay.Set();
             break;
         case MediaEngineEvent.TimeUpdate:
             break;
         case MediaEngineEvent.Error:
         case MediaEngineEvent.Abort:
         case MediaEngineEvent.Ended:
             isMusicStopped = true;
             break;
     }
 }