diff --git a/configure.ac b/configure.ac
index 425f1d5..42fddf9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -52,8 +52,8 @@ AC_LIBTOOL_WIN32_DLL
 AM_PROG_LIBTOOL
 
 dnl *** required versions of GStreamer stuff ***
-GST_REQ=0.10.32.2
-GSTPB_REQ=0.10.32.2
+GST_REQ=0.10.32
+GSTPB_REQ=0.10.32
 
diff --git a/ext/opencv/gstfaceblur.c b/ext/opencv/gstfaceblur.c
index 640756b..0a2bb54 100644
--- a/ext/opencv/gstfaceblur.c
+++ b/ext/opencv/gstfaceblur.c
@@ -3,6 +3,7 @@
  * Copyright (C) 2005 Thomas Vander Stichele <thomas@apestaart.org>
  * Copyright (C) 2005 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
  * Copyright (C) 2008 Michael Sheldon <mike@mikeasoft.com>
+ * Copyright (C) 2011 Robert Jobbagy <jobbagy.robert@gmail.com>
  * 
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
@@ -68,7 +69,12 @@
 GST_DEBUG_CATEGORY_STATIC (gst_faceblur_debug);
 #define GST_CAT_DEFAULT gst_faceblur_debug
 
-#define DEFAULT_PROFILE "/usr/share/opencv/haarcascades/haarcascade_frontalface_default.xml"
+#define DEFAULT_PROFILE "/usr/share/doc/opencv-doc/examples/haarcascades/haarcascades/haarcascade_frontalface_alt2.xml"
+#define DEFAULT_SCALE_FACTOR 1.25
+#define DEFAULT_FLAGS CV_HAAR_DO_CANNY_PRUNING
+#define DEFAULT_MIN_NEIGHBORS 3
+#define DEFAULT_MIN_SIZE_WIDTH 30
+#define DEFAULT_MIN_SIZE_HEIGHT 30
 
 /* Filter signals and args */
 enum
@@ -80,9 +86,49 @@ enum
 enum
 {
   PROP_0,
-  PROP_PROFILE
+  PROP_PROFILE,
+  PROP_SCALE_FACTOR,
+  PROP_MIN_NEIGHBORS,
+  PROP_FLAGS,
+  PROP_MIN_SIZE_WIDTH,
+  PROP_MIN_SIZE_HEIGHT
 };
 
+/**
+ * GstOpencvFaceDetectFlags:
+ * @GST_CAMERABIN_FLAG_SOURCE_RESIZE: enable video crop and scale
+ *   after capture
+ *
+ * Flags parameter to OpenCV's cvHaarDetectObjects function.
+ */
+typedef enum
+{
+  GST_OPENCV_FACE_DETECT_HAAR_DO_CANNY_PRUNING = (1 << 0)
+} GstOpencvFaceDetectFlags;
+
+#define GST_TYPE_OPENCV_FACE_DETECT_FLAGS (gst_opencv_face_detect_flags_get_type())
+
+static void
+register_gst_opencv_face_detect_flags (GType * id)
+{
+  static const GFlagsValue values[] = {
+    {(guint) GST_OPENCV_FACE_DETECT_HAAR_DO_CANNY_PRUNING,
+        "Do Canny edge detection to discard some regions", "do-canny-pruning"},
+    {0, NULL, NULL}
+  };
+  *id = g_flags_register_static ("GstOpencvFaceDetectFlags", values);
+}
+
+static GType
+gst_opencv_face_detect_flags_get_type (void)
+{
+  static GType id;
+  static GOnce once = G_ONCE_INIT;
+
+  g_once (&once, (GThreadFunc) register_gst_opencv_face_detect_flags, &id);
+  return id;
+}
+
 /* the capabilities of the inputs and outputs.
  */
 static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
@@ -136,7 +182,7 @@ gst_faceblur_base_init (gpointer gclass)
       "faceblur",
       "Filter/Effect/Video",
       "Blurs faces in images and videos",
-      "Michael Sheldon <mike@mikeasoft.com>");
+      "Michael Sheldon <mike@mikeasoft.com>,Robert Jobbagy<jobbagy.robert@gmail.com>");
 
   gst_element_class_add_pad_template (element_class,
       gst_static_pad_template_get (&src_factory));
@@ -161,6 +207,28 @@ gst_faceblur_class_init (GstfaceblurClass * klass)
       g_param_spec_string ("profile", "Profile",
           "Location of Haar cascade file to use for face blurion",
           DEFAULT_PROFILE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class, PROP_FLAGS,
+      g_param_spec_flags ("flags", "Flags", "Flags to cvHaarDetectObjects",
+          GST_TYPE_OPENCV_FACE_DETECT_FLAGS, DEFAULT_FLAGS ,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class, PROP_SCALE_FACTOR,
+      g_param_spec_double ("scale-factor", "Scale factor",
+          "Factor by which the windows is scaled after each scan",
+          1.1, 10.0, DEFAULT_SCALE_FACTOR,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class, PROP_MIN_NEIGHBORS,
+      g_param_spec_int ("min-neighbors", "Mininum neighbors",
+          "Minimum number (minus 1) of neighbor rectangles that makes up "
+          "an object", 0, G_MAXINT, DEFAULT_MIN_NEIGHBORS,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class, PROP_MIN_SIZE_WIDTH,
+      g_param_spec_int ("min-size-width", "Minimum size width",
+          "Minimum window width size", 0, G_MAXINT, DEFAULT_MIN_SIZE_WIDTH,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class, PROP_MIN_SIZE_HEIGHT,
+      g_param_spec_int ("min-size-height", "Minimum size height",
+          "Minimum window height size", 0, G_MAXINT, DEFAULT_MIN_SIZE_HEIGHT,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 }
 
 /* initialize the new element
@@ -186,6 +254,12 @@ gst_faceblur_init (Gstfaceblur * filter, GstfaceblurClass * gclass)
   gst_element_add_pad (GST_ELEMENT (filter), filter->sinkpad);
   gst_element_add_pad (GST_ELEMENT (filter), filter->srcpad);
   filter->profile = g_strdup (DEFAULT_PROFILE);
+  filter->sent_profile_load_failed_msg = FALSE;
+  filter->scale_factor = DEFAULT_SCALE_FACTOR;
+  filter->min_neighbors = DEFAULT_MIN_NEIGHBORS;
+  filter->flags = DEFAULT_FLAGS;
+  filter->min_size_width = DEFAULT_MIN_SIZE_WIDTH;
+  filter->min_size_height = DEFAULT_MIN_SIZE_HEIGHT;
   gst_faceblur_load_profile (filter);
 }
 
@@ -200,6 +274,22 @@ gst_faceblur_set_property (GObject * object, guint prop_id,
       g_free (filter->profile);
       filter->profile = g_value_dup_string (value);
       gst_faceblur_load_profile (filter);
+	  filter->sent_profile_load_failed_msg = FALSE;
+      break;
+	case PROP_SCALE_FACTOR:
+      filter->scale_factor = g_value_get_double (value);
+      break;
+    case PROP_MIN_NEIGHBORS:
+      filter->min_neighbors = g_value_get_int (value);
+      break;
+    case PROP_MIN_SIZE_WIDTH:
+      filter->min_size_width = g_value_get_int (value);
+      break;
+    case PROP_MIN_SIZE_HEIGHT:
+      filter->min_size_height = g_value_get_int (value);
+      break;
+    case PROP_FLAGS:
+      filter->flags = g_value_get_flags (value);
       break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -217,6 +307,21 @@ gst_faceblur_get_property (GObject * object, guint prop_id,
     case PROP_PROFILE:
       g_value_set_string (value, filter->profile);
       break;
+	case PROP_SCALE_FACTOR:
+      g_value_set_double (value, filter->scale_factor);
+      break;
+    case PROP_MIN_NEIGHBORS:
+      g_value_set_int (value, filter->min_neighbors);
+      break;
+    case PROP_MIN_SIZE_WIDTH:
+      g_value_set_int (value, filter->min_size_width);
+      break;
+    case PROP_MIN_SIZE_HEIGHT:
+      g_value_set_int (value, filter->min_size_height);
+      break;
+    case PROP_FLAGS:
+      g_value_set_flags (value, filter->flags);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -269,9 +374,10 @@ gst_faceblur_chain (GstPad * pad, GstBuffer * buf)
   if (filter->cvCascade) {
     faces =
         cvHaarDetectObjects (filter->cvGray, filter->cvCascade,
-        filter->cvStorage, 1.1, 2, 0, cvSize (30, 30)
+        filter->cvStorage, filter->scale_factor, filter->min_neighbors,
+        CV_HAAR_SCALE_IMAGE | CV_HAAR_DO_CANNY_PRUNING, cvSize (filter->min_size_width, filter->min_size_height)
 #if (CV_MAJOR_VERSION >= 2) && (CV_MINOR_VERSION >= 2)
-        , cvSize (32, 32)
+        , cvSize (filter->min_size_width + 2, filter->min_size_height + 2)
 #endif
         );
 
@@ -285,6 +391,12 @@ gst_faceblur_chain (GstPad * pad, GstBuffer * buf)
       cvSmooth (filter->cvImage, filter->cvImage, CV_GAUSSIAN, 11, 11, 0, 0);
       cvResetImageROI (filter->cvImage);
     }
+  }else if(filter->sent_profile_load_failed_msg == FALSE){
+	 GstStructure *s = gst_structure_new ("face",
+          "profile_load", G_TYPE_STRING, "profile_load_failed", NULL);
+     GstMessage *m = gst_message_new_element (GST_OBJECT (filter), s);
+	 gst_element_post_message (GST_ELEMENT (filter), m);
+	 filter->sent_profile_load_failed_msg = TRUE;
   }
 
   /* these filters operate in place, so we push the same buffer */
diff --git a/ext/opencv/gstfaceblur.h b/ext/opencv/gstfaceblur.h
index 9c98ce8..fc6c6f5 100644
--- a/ext/opencv/gstfaceblur.h
+++ b/ext/opencv/gstfaceblur.h
@@ -3,6 +3,7 @@
  * Copyright (C) 2005 Thomas Vander Stichele <thomas@apestaart.org>
  * Copyright (C) 2005 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
  * Copyright (C) 2008 Michael Sheldon <mike@mikeasoft.com>
+ * Copyright (C) 2011 Robert Jobbagy <jobbagy.robert@gmail.com>
  * 
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
@@ -74,7 +75,12 @@ struct _Gstfaceblur
 
   GstPad *sinkpad, *srcpad;
 
-  gboolean display;
+  gboolean display,sent_profile_load_failed_msg;
+  gdouble scale_factor;
+  gint min_neighbors;
+  gint flags;
+  gint min_size_width;
+  gint min_size_height;
 
   gchar *profile;
 
diff --git a/ext/opencv/gstfacedetect.c b/ext/opencv/gstfacedetect.c
index a3ced6d..5a9b054 100644
--- a/ext/opencv/gstfacedetect.c
+++ b/ext/opencv/gstfacedetect.c
@@ -3,6 +3,7 @@
  * Copyright (C) 2005 Thomas Vander Stichele <thomas@apestaart.org>
  * Copyright (C) 2005 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
  * Copyright (C) 2008 Michael Sheldon <mike@mikeasoft.com>
+ * Copyright (C) 2011 Robert Jobbagy <jobbagy.robert@gmail.com>
  * 
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
@@ -66,13 +67,13 @@
 
 GST_DEBUG_CATEGORY_STATIC (gst_facedetect_debug);
 #define GST_CAT_DEFAULT gst_facedetect_debug
-
-#define DEFAULT_PROFILE "/usr/share/opencv/haarcascades/haarcascade_frontalface_default.xml"
-#define DEFAULT_SCALE_FACTOR 1.1
-#define DEFAULT_FLAGS 0
+//#define DEFAULT_PROFILE "/usr/share/opencv/haarcascades//haarcascade_frontalface_alt2.xml"
+#define DEFAULT_PROFILE "/usr/share/doc/opencv-doc/examples/haarcascades/haarcascades/haarcascade_frontalface_alt2.xml"
+#define DEFAULT_SCALE_FACTOR 1.25
+#define DEFAULT_FLAGS CV_HAAR_DO_CANNY_PRUNING
 #define DEFAULT_MIN_NEIGHBORS 3
-#define DEFAULT_MIN_SIZE_WIDTH 0
-#define DEFAULT_MIN_SIZE_HEIGHT 0
+#define DEFAULT_MIN_SIZE_WIDTH 30
+#define DEFAULT_MIN_SIZE_HEIGHT 30
 
 /* Filter signals and args */
 enum
@@ -188,7 +189,7 @@ gst_facedetect_base_init (gpointer gclass)
       "facedetect",
       "Filter/Effect/Video",
       "Performs face detection on videos and images, providing detected positions via bus messages",
-      "Michael Sheldon <mike@mikeasoft.com>");
+      "Michael Sheldon <mike@mikeasoft.com>,Robert Jobbagy <jobbagy.robert@gmail.com>");
 
   gst_element_class_add_pad_template (element_class,
       gst_static_pad_template_get (&src_factory));
@@ -224,7 +225,7 @@ gst_facedetect_class_init (GstfacedetectClass * klass)
           DEFAULT_PROFILE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
   g_object_class_install_property (gobject_class, PROP_FLAGS,
       g_param_spec_flags ("flags", "Flags", "Flags to cvHaarDetectObjects",
-          GST_TYPE_OPENCV_FACE_DETECT_FLAGS, DEFAULT_FLAGS,
+          GST_TYPE_OPENCV_FACE_DETECT_FLAGS, DEFAULT_FLAGS ,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
   g_object_class_install_property (gobject_class, PROP_SCALE_FACTOR,
       g_param_spec_double ("scale-factor", "Scale factor",
@@ -256,6 +257,7 @@ gst_facedetect_init (Gstfacedetect * filter, GstfacedetectClass * gclass)
 {
   filter->profile = g_strdup (DEFAULT_PROFILE);
   filter->display = TRUE;
+  filter->sent_profile_load_failed_msg = FALSE;
   filter->scale_factor = DEFAULT_SCALE_FACTOR;
   filter->min_neighbors = DEFAULT_MIN_NEIGHBORS;
   filter->flags = DEFAULT_FLAGS;
@@ -278,6 +280,7 @@ gst_facedetect_set_property (GObject * object, guint prop_id,
       g_free (filter->profile);
       filter->profile = g_value_dup_string (value);
       gst_facedetect_load_profile (filter);
+	  filter->sent_profile_load_failed_msg = FALSE;
       break;
     case PROP_DISPLAY:
       filter->display = g_value_get_boolean (value);
@@ -408,7 +411,7 @@ gst_facedetect_transform_ip (GstOpencvVideoFilter * base, GstBuffer * buf,
     faces =
         cvHaarDetectObjects (filter->cvGray, filter->cvCascade,
         filter->cvStorage, filter->scale_factor, filter->min_neighbors,
-        filter->flags, cvSize (filter->min_size_width, filter->min_size_height)
+        CV_HAAR_SCALE_IMAGE | CV_HAAR_DO_CANNY_PRUNING, cvSize (filter->min_size_width, filter->min_size_height)
 #if (CV_MAJOR_VERSION >= 2) && (CV_MINOR_VERSION >= 2)
         , cvSize (filter->min_size_width + 2, filter->min_size_height + 2)
 #endif
@@ -459,6 +462,12 @@ gst_facedetect_transform_ip (GstOpencvVideoFilter * base, GstBuffer * buf,
       g_value_unset (&facelist);
       gst_element_post_message (GST_ELEMENT (filter), msg);
     }
+  }else if(filter->sent_profile_load_failed_msg == FALSE){
+	 GstStructure *s = gst_structure_new ("face",
+          "profile_load", G_TYPE_STRING, "profile_load_failed", NULL);
+     GstMessage *m = gst_message_new_element (GST_OBJECT (filter), s);
+	 gst_element_post_message (GST_ELEMENT (filter), m);
+	 filter->sent_profile_load_failed_msg = TRUE;
   }
 
   return GST_FLOW_OK;
diff --git a/ext/opencv/gstfacedetect.h b/ext/opencv/gstfacedetect.h
index a5a0b49..e74fa5f 100644
--- a/ext/opencv/gstfacedetect.h
+++ b/ext/opencv/gstfacedetect.h
@@ -3,6 +3,7 @@
  * Copyright (C) 2005 Thomas Vander Stichele <thomas@apestaart.org>
  * Copyright (C) 2005 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
  * Copyright (C) 2008 Michael Sheldon <mike@mikeasoft.com>
+ * Copyright (C) 2011 Robert Jobbagy <jobbagy.robert@gmail.com>
  * 
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
@@ -73,7 +74,7 @@ struct _Gstfacedetect
 {
   GstOpencvVideoFilter element;
 
-  gboolean display;
+  gboolean display,sent_profile_load_failed_msg;
 
   gchar *profile;
   gdouble scale_factor;
