Esempio n. 1
0
        private void OnEngineEventChanged(PlayerEventArgs args)
        {
            if (CurrentTrack != null)
            {
                if (args.Event == PlayerEvent.Error &&
                    CurrentTrack.PlaybackError == StreamPlaybackError.None)
                {
                    CurrentTrack.SavePlaybackError(StreamPlaybackError.Unknown);
                }
                else if (args.Event == PlayerEvent.Iterate &&
                         CurrentTrack.PlaybackError != StreamPlaybackError.None)
                {
                    CurrentTrack.SavePlaybackError(StreamPlaybackError.None);
                }
            }

            if (args.Event == PlayerEvent.StartOfStream)
            {
                incremented_last_played = false;
            }
            else if (args.Event == PlayerEvent.EndOfStream)
            {
                IncrementLastPlayed();
            }

            RaiseEvent(args);

            // Do not raise iterate across DBus to avoid so many calls;
            // DBus clients should do their own iterating and
            // event/state checking locally
            if (args.Event == PlayerEvent.Iterate)
            {
                return;
            }

            DBusPlayerEventHandler dbus_handler = dbus_event_changed;

            if (dbus_handler != null)
            {
                dbus_handler(args.Event.ToString().ToLower(),
                             args is PlayerEventErrorArgs ? ((PlayerEventErrorArgs)args).Message : String.Empty,
                             args is PlayerEventBufferingArgs ? ((PlayerEventBufferingArgs)args).Progress : 0
                             );
            }
        }
Esempio n. 2
0
        private void HandleError(Enum domain, string error_message, string debug)
        {
            Close(true);

            error_message = error_message ?? Catalog.GetString("Unknown Error");

            if (domain is ResourceError)
            {
                ResourceError domain_code = (ResourceError)domain;
                if (CurrentTrack != null)
                {
                    switch (domain_code)
                    {
                    case ResourceError.NotFound:
                        CurrentTrack.SavePlaybackError(StreamPlaybackError.ResourceNotFound);
                        break;

                    default:
                        break;
                    }
                }
                Log.Error(String.Format("GStreamer resource error: {0}", domain_code), false);
            }
            else if (domain is StreamError)
            {
                StreamError domain_code = (StreamError)domain;
                if (CurrentTrack != null)
                {
                    switch (domain_code)
                    {
                    case StreamError.CodecNotFound:
                        CurrentTrack.SavePlaybackError(StreamPlaybackError.CodecNotFound);
                        break;

                    default:
                        break;
                    }
                }

                Log.Error(String.Format("GStreamer stream error: {0}", domain_code), false);
            }
            else if (domain is CoreError)
            {
                CoreError domain_code = (CoreError)domain;
                if (CurrentTrack != null)
                {
                    switch (domain_code)
                    {
                    case CoreError.MissingPlugin:
                        CurrentTrack.SavePlaybackError(StreamPlaybackError.CodecNotFound);
                        break;

                    default:
                        break;
                    }
                }

                if (domain_code != CoreError.MissingPlugin)
                {
                    Log.Error(String.Format("GStreamer core error: {0}", (CoreError)domain), false);
                }
            }
            else if (domain is LibraryError)
            {
                Log.Error(String.Format("GStreamer library error: {0}", (LibraryError)domain), false);
            }

            OnEventChanged(new PlayerEventErrorArgs(error_message));
        }
Esempio n. 3
0
        private void OnError(IntPtr player, uint domain, int code, IntPtr error, IntPtr debug)
        {
            Close(true);

            string error_message = error == IntPtr.Zero
                ? Catalog.GetString("Unknown Error")
                : GLib.Marshaller.Utf8PtrToString(error);

            if (domain == GST_RESOURCE_ERROR)
            {
                GstResourceError domain_code = (GstResourceError)code;
                if (CurrentTrack != null)
                {
                    switch (domain_code)
                    {
                    case GstResourceError.NotFound:
                        CurrentTrack.SavePlaybackError(StreamPlaybackError.ResourceNotFound);
                        break;

                    default:
                        break;
                    }
                }

                Log.Error(String.Format("GStreamer resource error: {0}", domain_code), false);
            }
            else if (domain == GST_STREAM_ERROR)
            {
                GstStreamError domain_code = (GstStreamError)code;
                if (CurrentTrack != null)
                {
                    switch (domain_code)
                    {
                    case GstStreamError.CodecNotFound:
                        CurrentTrack.SavePlaybackError(StreamPlaybackError.CodecNotFound);
                        break;

                    default:
                        break;
                    }
                }

                Log.Error(String.Format("GStreamer stream error: {0}", domain_code), false);
            }
            else if (domain == GST_CORE_ERROR)
            {
                GstCoreError domain_code = (GstCoreError)code;
                if (CurrentTrack != null)
                {
                    switch (domain_code)
                    {
                    case GstCoreError.MissingPlugin:
                        CurrentTrack.SavePlaybackError(StreamPlaybackError.CodecNotFound);
                        break;

                    default:
                        break;
                    }
                }

                if (domain_code != GstCoreError.MissingPlugin)
                {
                    Log.Error(String.Format("GStreamer core error: {0}", (GstCoreError)code), false);
                }
            }
            else if (domain == GST_LIBRARY_ERROR)
            {
                Log.Error(String.Format("GStreamer library error: {0}", (GstLibraryError)code), false);
            }

            OnEventChanged(new PlayerEventErrorArgs(error_message));
        }