diff --git a/gst-libs/gst/interfaces/photography.c b/gst-libs/gst/interfaces/photography.c
index aa4bb6c..b34460e 100644
--- a/gst-libs/gst/interfaces/photography.c
+++ b/gst-libs/gst/interfaces/photography.c
@@ -81,6 +81,7 @@ gst_photography_iface_base_init (GstPhotographyInterface * iface)
   iface->get_colour_tone_mode = NULL;
   iface->get_scene_mode = NULL;
   iface->get_flash_mode = NULL;
+  iface->get_noise_reduction_mode = NULL;
   iface->get_zoom = NULL;
   iface->get_flicker_mode = NULL;
   iface->get_focus_mode = NULL;
@@ -93,6 +94,7 @@ gst_photography_iface_base_init (GstPhotographyInterface * iface)
   iface->set_colour_tone_mode = NULL;
   iface->set_scene_mode = NULL;
   iface->set_flash_mode = NULL;
+  iface->set_noise_reduction_mode = NULL;
   iface->set_zoom = NULL;
   iface->set_flicker_mode = NULL;
   iface->set_focus_mode = NULL;
@@ -290,6 +292,26 @@ GST_PHOTOGRAPHY_FUNC_TEMPLATE (scene_mode, GstSceneMode);
 GST_PHOTOGRAPHY_FUNC_TEMPLATE (flash_mode, GstFlashMode);
 
 /**
+ * gst_photography_set_noise_reduction_mode:
+ * @photo: #GstPhotography interface of a #GstElement
+ * @nr_mode: #GstNoiseReductionMode to set
+ *
+ * Set the noise reduction mode for the #GstElement
+ *
+ * Returns: %TRUE if setting the value succeeded, %FALSE otherwise
+ */
+/**
+ * gst_photography_get_noise_reduction_mode:
+ * @photo: #GstPhotography interface of a #GstElement
+ * @nr_mode: #GstNoiseReductionMode to get
+ *
+ * Get the noise reduction mode for the #GstElement
+ *
+ * Returns: %TRUE if getting the value succeeded, %FALSE otherwise
+ */
+GST_PHOTOGRAPHY_FUNC_TEMPLATE (noise_reduction_mode, guint);
+
+/**
  * gst_photography_set_zoom:
  * @photo: #GstPhotography interface of a #GstElement
  * @zoom: zoom value to set
diff --git a/gst-libs/gst/interfaces/photography.h b/gst-libs/gst/interfaces/photography.h
index 66ec6ac..e7dad02 100644
--- a/gst-libs/gst/interfaces/photography.h
+++ b/gst-libs/gst/interfaces/photography.h
@@ -56,6 +56,7 @@ G_BEGIN_DECLS
 #define GST_PHOTOGRAPHY_PROP_COLOUR_TONE  "colour-tone-mode"
 #define GST_PHOTOGRAPHY_PROP_SCENE_MODE   "scene-mode"
 #define GST_PHOTOGRAPHY_PROP_FLASH_MODE   "flash-mode"
+#define GST_PHOTOGRAPHY_PROP_NOISE_REDUCTION_MODE   "noise-reduction-mode"
 #define GST_PHOTOGRAPHY_PROP_FOCUS_STATUS "focus-status"
 #define GST_PHOTOGRAPHY_PROP_CAPABILITIES "capabilities"
 #define GST_PHOTOGRAPHY_PROP_SHAKE_RISK   "shake-risk"
@@ -77,6 +78,15 @@ typedef struct _GstPhotography GstPhotography;
 
 typedef enum
 {
+  GST_PHOTOGRAPHY_NOISE_REDUCTION_MODE_BAYER = ( 1<<0 ),
+  GST_PHOTOGRAPHY_NOISE_REDUCTION_MODE_YCC = ( 1<<1 ),
+  GST_PHOTOGRAPHY_NOISE_REDUCTION_MODE_TEMPORAL= ( 1<< 2),
+  GST_PHOTOGRAPHY_NOISE_REDUCTION_MODE_FPN = (1 << 3),
+  GST_PHOTOGRAPHY_NOISE_REDUCTION_MODE_EXTRA = (1 << 4)
+} GstNoiseReductionMode;
+
+typedef enum
+{
   GST_PHOTOGRAPHY_WB_MODE_AUTO = 0,
   GST_PHOTOGRAPHY_WB_MODE_DAYLIGHT,
   GST_PHOTOGRAPHY_WB_MODE_CLOUDY,
@@ -95,7 +105,12 @@ typedef enum
   GST_PHOTOGRAPHY_COLOUR_TONE_MODE_VIVID,
   GST_PHOTOGRAPHY_COLOUR_TONE_MODE_COLORSWAP,
   GST_PHOTOGRAPHY_COLOUR_TONE_MODE_SOLARIZE,
-  GST_PHOTOGRAPHY_COLOUR_TONE_MODE_OUT_OF_FOCUS
+  GST_PHOTOGRAPHY_COLOUR_TONE_MODE_OUT_OF_FOCUS,
+  GST_PHOTOGRAPHY_COLOUR_TONE_MODE_SKY_BLUE,
+  GST_PHOTOGRAPHY_COLOUR_TONE_MODE_GRASS_GREEN,
+  GST_PHOTOGRAPHY_COLOUR_TONE_MODE_SKIN_WHITEN,
+  GST_PHOTOGRAPHY_COLOUR_TONE_MODE_EMBOSS,
+  GST_PHOTOGRAPHY_COLOUR_TONE_MODE_SKETECH
 } GstColourToneMode;
 
 typedef enum
@@ -174,6 +189,7 @@ typedef struct
   GstColourToneMode tone_mode;
   GstSceneMode scene_mode;
   GstFlashMode flash_mode;
+  guint noise_reduction_mode;
   guint32 exposure;
   guint aperture;
   gfloat ev_compensation;
@@ -206,6 +222,7 @@ typedef void (*GstPhotoCapturePrepared) (gpointer data,
  * @get_colour_tone_mode: vmethod to get colour tone mode value
  * @get_scene_mode: vmethod to get scene mode value
  * @get_flash_mode: vmethod to get flash mode value
+ * @get_noise_reduction_mode: vmethod to get noise reduction mode value
  * @get_zoom: vmethod to get zoom factor value
  * @set_ev_compensation: vmethod to set ev exposure compensation value
  * @set_iso_speed: vmethod to set iso speed (light sensitivity) value
@@ -215,6 +232,7 @@ typedef void (*GstPhotoCapturePrepared) (gpointer data,
  * @set_colour_tone_mode: vmethod to set colour tone mode value
  * @set_scene_mode: vmethod to set scene mode value
  * @set_flash_mode: vmethod to set flash mode value
+ * @set_noise_reduction_mode: vmethod to set noise reduction mode value
  * @set_zoom: vmethod to set zoom factor value
  * @get_capabilities: vmethod to get supported capabilities of the interface
  * @prepare_for_capture: vmethod to tell the element to prepare for capturing
@@ -242,6 +260,8 @@ typedef struct _GstPhotographyInterface
       GstSceneMode * scene_mode);
     gboolean (*get_flash_mode) (GstPhotography * photo,
       GstFlashMode * flash_mode);
+    gboolean (*get_noise_reduction_mode) (GstPhotography * photo,
+      guint * nr_mode);
     gboolean (*get_zoom) (GstPhotography * photo, gfloat * zoom);
     gboolean (*get_flicker_mode) (GstPhotography * photo,
       GstFlickerReductionMode * flicker_mode);
@@ -260,6 +280,8 @@ typedef struct _GstPhotographyInterface
       GstSceneMode scene_mode);
     gboolean (*set_flash_mode) (GstPhotography * photo,
       GstFlashMode flash_mode);
+    gboolean (*set_noise_reduction_mode) (GstPhotography * photo,
+      guint nr_mode);
     gboolean (*set_zoom) (GstPhotography * photo, gfloat zoom);
     gboolean (*set_flicker_mode) (GstPhotography * photo,
       GstFlickerReductionMode flicker_mode);
@@ -296,6 +318,8 @@ gboolean gst_photography_get_scene_mode (GstPhotography * photo,
     GstSceneMode * scene_mode);
 gboolean gst_photography_get_flash_mode (GstPhotography * photo,
     GstFlashMode * flash_mode);
+gboolean gst_photography_get_noise_reduction_mode (GstPhotography * photo,
+    guint * nr_mode);
 gboolean gst_photography_get_zoom (GstPhotography * photo, gfloat * zoom);
 gboolean gst_photography_get_flicker_mode (GstPhotography * photo,
     GstFlickerReductionMode *mode);
@@ -316,6 +340,8 @@ gboolean gst_photography_set_scene_mode (GstPhotography * photo,
     GstSceneMode scene_mode);
 gboolean gst_photography_set_flash_mode (GstPhotography * photo,
     GstFlashMode flash_mode);
+gboolean gst_photography_set_noise_reduction_mode (GstPhotography * photo,
+    guint nr_mode);
 gboolean gst_photography_set_zoom (GstPhotography * photo, gfloat zoom);
 gboolean gst_photography_set_flicker_mode (GstPhotography * photo,
     GstFlickerReductionMode mode);
diff --git a/gst/camerabin/gstcamerabin-enum.h b/gst/camerabin/gstcamerabin-enum.h
index d169559..5f2389d 100644
--- a/gst/camerabin/gstcamerabin-enum.h
+++ b/gst/camerabin/gstcamerabin-enum.h
@@ -49,6 +49,7 @@ enum
   ARG_COLOUR_TONE,
   ARG_SCENE_MODE,
   ARG_FLASH_MODE,
+  ARG_NOISE_REDUCTION_MODE,
   ARG_FOCUS_STATUS,
   ARG_CAPABILITIES,
   ARG_SHAKE_RISK,
diff --git a/gst/camerabin/gstcamerabin.c b/gst/camerabin/gstcamerabin.c
index 1f22b87..cd4d47f 100644
--- a/gst/camerabin/gstcamerabin.c
+++ b/gst/camerabin/gstcamerabin.c
@@ -3191,6 +3191,9 @@ gst_camerabin_override_photo_properties (GObjectClass * gobject_class)
   g_object_class_override_property (gobject_class, ARG_FLASH_MODE,
       GST_PHOTOGRAPHY_PROP_FLASH_MODE);
 
+  g_object_class_override_property (gobject_class, ARG_NOISE_REDUCTION_MODE,
+      GST_PHOTOGRAPHY_PROP_NOISE_REDUCTION_MODE);
+
   g_object_class_override_property (gobject_class, ARG_CAPABILITIES,
       GST_PHOTOGRAPHY_PROP_CAPABILITIES);
 
diff --git a/gst/camerabin/gstcamerabinphotography.c b/gst/camerabin/gstcamerabinphotography.c
index 4780909..e191393 100644
--- a/gst/camerabin/gstcamerabinphotography.c
+++ b/gst/camerabin/gstcamerabinphotography.c
@@ -236,6 +236,43 @@ gst_camerabin_get_flash_mode (GstPhotography * photo, GstFlashMode * flash_mode)
 }
 
 static gboolean
+gst_camerabin_set_noise_reduction_mode (GstPhotography * photo, guint nr_mode)
+{
+  GstCameraBin *camera;
+  gboolean ret = TRUE;
+
+  g_return_val_if_fail (photo != NULL, FALSE);
+
+  camera = GST_CAMERABIN (photo);
+
+  /* Cache the setting */
+  camera->photo_settings.noise_reduction_mode = nr_mode;
+
+  if (PHOTOGRAPHY_IS_OK (camera->src_vid_src)) {
+    ret = gst_photography_set_noise_reduction_mode (GST_PHOTOGRAPHY (camera->src_vid_src),
+        nr_mode);
+  }
+  return ret;
+}
+
+static gboolean
+gst_camerabin_get_noise_reduction_mode (GstPhotography * photo, guint * nr_mode)
+{
+  GstCameraBin *camera;
+  gboolean ret = FALSE;
+
+  g_return_val_if_fail (photo != NULL, FALSE);
+
+  camera = GST_CAMERABIN (photo);
+
+  if (PHOTOGRAPHY_IS_OK (camera->src_vid_src)) {
+    ret = gst_photography_get_noise_reduction_mode (GST_PHOTOGRAPHY (camera->src_vid_src),
+        nr_mode);
+  }
+  return ret;
+}
+
+static gboolean
 gst_camerabin_set_scene_mode (GstPhotography * photo, GstSceneMode scene_mode)
 {
   GstCameraBin *camera;
@@ -573,6 +610,16 @@ gst_camerabin_photography_get_property (GstCameraBin * camera, guint prop_id,
       ret = TRUE;
       break;
     }
+    case ARG_NOISE_REDUCTION_MODE:
+    {
+      guint nr_mode;
+      GST_DEBUG_OBJECT (camera, "==== GETTING PROP_NOISE_REDUCTION_MODE ====");
+      if (gst_camerabin_get_noise_reduction_mode ((GstPhotography *) camera, &nr_mode)) {
+        g_value_set_enum (value, nr_mode);
+      }
+      ret = TRUE;
+      break;
+    }
     case ARG_CAPABILITIES:
     {
       gulong capabilities;
@@ -698,6 +745,12 @@ gst_camerabin_photography_set_property (GstCameraBin * camera, guint prop_id,
           g_value_get_enum (value));
       ret = TRUE;
       break;
+    case ARG_NOISE_REDUCTION_MODE:
+      GST_DEBUG_OBJECT (camera, "==== SETTING PROP_NOISE_REDUCTION_MODE ====");
+      gst_camerabin_set_noise_reduction_mode ((GstPhotography *) camera,
+          g_value_get_uint (value));
+      ret = TRUE;
+      break;
     case ARG_EV_COMP:
       GST_DEBUG_OBJECT (camera, "==== SETTING PROP_EV_COMP ====");
       gst_camerabin_set_ev_compensation ((GstPhotography *) camera,
@@ -768,6 +821,9 @@ gst_camerabin_photography_init (GstPhotographyInterface * iface)
   iface->set_flash_mode = gst_camerabin_set_flash_mode;
   iface->get_flash_mode = gst_camerabin_get_flash_mode;
 
+  iface->set_noise_reduction_mode = gst_camerabin_set_noise_reduction_mode;
+  iface->get_noise_reduction_mode = gst_camerabin_get_noise_reduction_mode;
+
   iface->get_capabilities = gst_camerabin_get_capabilities;
 
   iface->set_autofocus = gst_camerabin_set_autofocus;
