[PORT FROM R2] atomisp: shading table re-interpolation trigger
authorLokesh Gupta <lokesh.gupta@intel.com>
Thu, 3 Nov 2011 19:57:40 +0000 (20:57 +0100)
committerbuildbot <buildbot@intel.com>
Mon, 19 Dec 2011 13:28:38 +0000 (05:28 -0800)
BZ: 17272

When the shading table is changed or the binning factor is changed
the shading table should be reset for all modes (preview, capture
and video). This will enforce shading table re-interpolation when
these modes are started.

Change-Id: I72f2db2fff40cde7fdedd8a0d74aeab33d9656bd
Orig-Change-Id: If376c4734a7a159dd6b19b919844c18b24d60b31
Signed-off-by: Lokesh Gupta <lokesh.gupta@intel.com>
Reviewed-on: http://android.intel.com:8080/23093
Reviewed-by: Kruger, Jozef <jozef.kruger@intel.com>
Reviewed-by: Cohen, David A <david.a.cohen@intel.com>
Reviewed-by: Koski, Anttu <anttu.koski@intel.com>
Tested-by: Koski, Anttu <anttu.koski@intel.com>
Reviewed-by: buildbot <buildbot@intel.com>
Tested-by: buildbot <buildbot@intel.com>
Reviewed-on: http://android.intel.com:8080/27996
Reviewed-by: Tuominen, TeemuX <teemux.tuominen@intel.com>
drivers/media/video/atomisp/css/sh_css.c

index 3e69424..f999679 100644 (file)
@@ -323,6 +323,27 @@ static struct sh_css_binary_descr preview_descr,
                                  video_descr,
                                  capture_pp_descr;
 
+static void reset_mode_shading_tables(void)
+{
+       if (my_css.preview_settings.shading_table) {
+               sh_css_shading_table_free(
+                               my_css.preview_settings.shading_table);
+               my_css.preview_settings.shading_table = NULL;
+       }
+
+       if (my_css.capture_settings.shading_table) {
+               sh_css_shading_table_free(
+                               my_css.capture_settings.shading_table);
+               my_css.capture_settings.shading_table = NULL;
+       }
+
+       if (my_css.video_settings.shading_table) {
+               sh_css_shading_table_free(
+                               my_css.video_settings.shading_table);
+               my_css.video_settings.shading_table = NULL;
+       }
+}
+
 static enum sh_css_err
 check_frame_info(struct sh_css_frame_info *info)
 {
@@ -1498,6 +1519,9 @@ sh_css_overlay_set_for_viewfinder(const struct sh_css_overlay *overlay)
 void
 sh_css_set_shading_table(const struct sh_css_shading_table *table)
 {
+       if (table != my_css.shading_table)
+               reset_mode_shading_tables();
+
        my_css.shading_table = table;
 }
 
@@ -2113,6 +2137,8 @@ sh_css_input_get_format(enum sh_css_input_format *format)
 void
 sh_css_input_set_binning_factor(unsigned int binning_factor)
 {
+       if (binning_factor != my_css.sensor_binning)
+               reset_mode_shading_tables();
        my_css.sensor_binning = binning_factor;
 }