From 1a1ac6b884426e5e3ff3cad5f61f9a6b0635c6a0 Mon Sep 17 00:00:00 2001 From: Michael Goddard Date: Thu, 15 Mar 2012 15:41:19 +1000 Subject: Handle more errors from GStreamer. Corrupted etc files can throw GST_STREAM_ERROR_DECODE and those should generally stop playback. So now any error is fatal, not just the recognised ones. Change-Id: I7b6dd2a460d94f70c459a313a9d4dc84028f8002 Reviewed-by: Dmytro Poplavskiy --- .../gstreamer/audiodecoder/qgstreameraudiodecodersession.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'src/plugins/gstreamer/audiodecoder') diff --git a/src/plugins/gstreamer/audiodecoder/qgstreameraudiodecodersession.cpp b/src/plugins/gstreamer/audiodecoder/qgstreameraudiodecodersession.cpp index 8815819ef..e18984519 100644 --- a/src/plugins/gstreamer/audiodecoder/qgstreameraudiodecodersession.cpp +++ b/src/plugins/gstreamer/audiodecoder/qgstreameraudiodecodersession.cpp @@ -262,13 +262,12 @@ bool QGstreamerAudioDecoderSession::processBusMessage(const QGstreamerMessage &m GError *err; gchar *debug; gst_message_parse_error(gm, &err, &debug); - // If the source has given up, so do we. - if (qstrcmp(GST_OBJECT_NAME(GST_MESSAGE_SRC(gm)), "source") == 0) { - processInvalidMedia(QAudioDecoder::ResourceError, QString::fromUtf8(err->message)); - } else if (err->domain == GST_STREAM_ERROR + QAudioDecoder::Error qerror = QAudioDecoder::ResourceError; + if (err->domain == GST_STREAM_ERROR && (err->code == GST_STREAM_ERROR_DECRYPT || err->code == GST_STREAM_ERROR_DECRYPT_NOKEY)) { - processInvalidMedia(QAudioDecoder::AccessDeniedError, QString::fromUtf8(err->message)); + qerror = QAudioDecoder::AccessDeniedError; } + processInvalidMedia(qerror, QString::fromUtf8(err->message)); g_error_free(err); g_free(debug); } -- cgit v1.2.3