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));
}