diff --git a/src/gsttools/qgstcodecsinfo.cpp b/src/gsttools/qgstcodecsinfo.cpp
index a05ee92aa7516047d00bbad401910754344b2da4..ca43d489baa66981ec331eee8fae93fbd7d26ae9 100644
--- a/src/gsttools/qgstcodecsinfo.cpp
+++ b/src/gsttools/qgstcodecsinfo.cpp
@@ -106,7 +106,7 @@ void QGstCodecsInfo::updateCodecs(ElementType elementType)
 
     QSet<QByteArray> fieldsToAdd;
     fieldsToAdd << "mpegversion" << "layer" << "layout" << "raversion"
-                << "wmaversion" << "wmvversion" << "variant";
+                << "wmaversion" << "wmvversion" << "variant" << "systemstream";
 
     GList *element = elements;
     while (element) {
diff --git a/src/plugins/gstreamer/camerabin/camerabinsession.cpp b/src/plugins/gstreamer/camerabin/camerabinsession.cpp
index e87e1b3f0e3d77d9c91495a2af9a621898a04705..fdedc5f5ae5efe060803e5d43780cc60bf60f3d9 100644
--- a/src/plugins/gstreamer/camerabin/camerabinsession.cpp
+++ b/src/plugins/gstreamer/camerabin/camerabinsession.cpp
@@ -836,6 +836,17 @@ void CameraBinSession::load()
         return;
     }
 
+#if QT_CONFIG(gstreamer_encodingprofiles)
+    GstEncodingContainerProfile *profile = m_recorderControl->videoProfile();
+    if (profile) {
+        g_object_set (G_OBJECT(m_camerabin),
+                      "video-profile",
+                      profile,
+                      NULL);
+        gst_encoding_profile_unref(profile);
+    }
+#endif
+
     gst_element_set_state(m_camerabin, GST_STATE_READY);
 }
 
@@ -871,15 +882,6 @@ void CameraBinSession::start()
 
     m_recorderControl->applySettings();
 
-#if QT_CONFIG(gstreamer_encodingprofiles)
-    GstEncodingContainerProfile *profile = m_recorderControl->videoProfile();
-    g_object_set (G_OBJECT(m_camerabin),
-                  "video-profile",
-                  profile,
-                  NULL);
-    gst_encoding_profile_unref(profile);
-#endif
-
     setAudioCaptureCaps();
 
     setupCaptureResolution();
@@ -997,7 +999,6 @@ bool CameraBinSession::processSyncMessage(const QGstreamerMessage &message)
             GstVideoInfo previewInfo;
             if (gst_video_info_from_caps(&previewInfo, previewCaps))
                 image = QGstUtils::bufferToImage(buffer, previewInfo);
-            gst_sample_unref(sample);
 #else
             image = QGstUtils::bufferToImage(buffer);
             gst_buffer_unref(buffer);
@@ -1294,6 +1295,9 @@ QList< QPair<int,int> > CameraBinSession::supportedFrameRates(const QSize &frame
         GstStructure *structure = gst_caps_get_structure(caps, i);
         gst_structure_set_name(structure, "video/x-raw");
         const GValue *oldRate = gst_structure_get_value(structure, "framerate");
+        if (!oldRate)
+            continue;
+
         GValue rate;
         memset(&rate, 0, sizeof(rate));
         g_value_init(&rate, G_VALUE_TYPE(oldRate));
@@ -1310,6 +1314,9 @@ QList< QPair<int,int> > CameraBinSession::supportedFrameRates(const QSize &frame
     for (uint i=0; i<gst_caps_get_size(caps); i++) {
         GstStructure *structure = gst_caps_get_structure(caps, i);
         const GValue *rateValue = gst_structure_get_value(structure, "framerate");
+        if (!rateValue)
+            continue;
+
         readValue(rateValue, &res, continuous);
     }
 
@@ -1401,6 +1408,9 @@ QList<QSize> CameraBinSession::supportedResolutions(QPair<int,int> rate,
         gst_structure_set_name(structure, "video/x-raw");
         const GValue *oldW = gst_structure_get_value(structure, "width");
         const GValue *oldH = gst_structure_get_value(structure, "height");
+        if (!oldW || !oldH)
+            continue;
+
         GValue w;
         memset(&w, 0, sizeof(GValue));
         GValue h;
@@ -1425,6 +1435,8 @@ QList<QSize> CameraBinSession::supportedResolutions(QPair<int,int> rate,
         GstStructure *structure = gst_caps_get_structure(caps, i);
         const GValue *wValue = gst_structure_get_value(structure, "width");
         const GValue *hValue = gst_structure_get_value(structure, "height");
+        if (!wValue || !hValue)
+            continue;
 
         QPair<int,int> wRange = valueRange(wValue, &isContinuous);
         QPair<int,int> hRange = valueRange(hValue, &isContinuous);