ducati: add some more detailed logging about video decoder extended errors
authorVincent Penquerc'h <vincent.penquerch@collabora.co.uk>
Thu, 28 Jun 2012 16:26:59 +0000 (16:26 +0000)
committerVincent Penquerc'h <vincent.penquerch@collabora.co.uk>
Thu, 28 Jun 2012 16:34:47 +0000 (16:34 +0000)
src/gstducati.c
src/gstducati.h
src/gstducatividdec.c

index 41d4201a35945e7c32043c0eb6c316e0ea7ed2da..e7f3422484e7fc9a74c6f6c09d0146289d487be5 100644 (file)
 
 GST_DEBUG_CATEGORY (gst_ducati_debug);
 
+#ifndef GST_DISABLE_GST_DEBUG
+void
+gst_ducati_log_extended_error_info (int error)
+{
+  GST_ERROR ("Error %s%s%s%s%s%s%s%x",
+      XDM_ISFATALERROR (error) ? "[fatal] " : "",
+      XDM_ISUNSUPPORTEDPARAM (error) ? "[unsupported param] " : "",
+      XDM_ISUNSUPPORTEDINPUT (error) ? "[unsupported input] " : "",
+      XDM_ISCORRUPTEDHEADER (error) ? "[corrupted header] " : "",
+      XDM_ISCORRUPTEDDATA (error) ? "[corrupted data] " : "",
+      XDM_ISINSUFFICIENTDATA (error) ? "[insufficient data] " : "",
+      XDM_ISAPPLIEDCONCEALMENT (error) ? "[applied concealment] " : "", error);
+}
+#endif
+
 static gboolean
 plugin_init (GstPlugin * plugin)
 {
index 7223b8156257504997ace5b68b474e6697db0404..f6096cc38264fd932dffacfa94a6843d7704d2d8 100644 (file)
@@ -40,4 +40,10 @@ GST_DEBUG_CATEGORY_EXTERN (gst_ducati_debug);
 
 G_END_DECLS
 
+#ifndef GST_DISABLE_GST_DEBUG
+extern void gst_ducati_log_extended_error_info (int error);
+#else
+#define gst_ducati_log_extended_error_info(f) ((void)0)
+#endif
+
 #endif /* __GST_DUCATI_H__ */
index 4d43cd4946a97ba84ea5c8dc0e5b291f20d598dd..b99ad94ceb4b769156e3ea5d97c03e0a0b005337 100644 (file)
@@ -312,12 +312,14 @@ codec_process (GstDucatiVidDec * self, gboolean send, gboolean flush,
   if (err) {
     GST_WARNING_OBJECT (self, "err=%d, extendedError=%08x",
         err, self->outArgs->extendedError);
+    gst_ducati_log_extended_error_info (self->outArgs->extendedError);
 
     err = VIDDEC3_control (self->codec, XDM_GETSTATUS,
         self->dynParams, self->status);
     if (!err) {
       GST_WARNING_OBJECT (self, "XDM_GETSTATUS: err=%d, extendedError=%08x",
           err, self->status->extendedError);
+      gst_ducati_log_extended_error_info (self->outArgs->extendedError);
     }
 
     if (flush)
@@ -1035,6 +1037,7 @@ have_out_buf:
   if (err) {
     GST_ELEMENT_ERROR (self, STREAM, DECODE, (NULL),
         ("process returned error: %d %08x", err, self->outArgs->extendedError));
+    gst_ducati_log_extended_error_info (self->outArgs->extendedError);
     return GST_FLOW_ERROR;
   }
   if (ret != GST_FLOW_OK) {