summaryrefslogtreecommitdiffstats
path: root/src/plugins/gstreamer/audiodecoder
diff options
context:
space:
mode:
authorMichael Goddard <michael.goddard@nokia.com>2012-03-15 15:41:19 +1000
committerQt by Nokia <qt-info@nokia.com>2012-03-16 04:32:50 +0100
commit1a1ac6b884426e5e3ff3cad5f61f9a6b0635c6a0 (patch)
treec834d92ffcfd5aa07bb404f8344cf8cc721b7370 /src/plugins/gstreamer/audiodecoder
parent1f1bdbec82b0f85fda5615945d13ff7b542caa9d (diff)
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 <dmytro.poplavskiy@nokia.com>
Diffstat (limited to 'src/plugins/gstreamer/audiodecoder')
-rw-r--r--src/plugins/gstreamer/audiodecoder/qgstreameraudiodecodersession.cpp9
1 files changed, 4 insertions, 5 deletions
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);
}