msm8998: Update to 07.00.00.253.056

msm8998: from hardware/qcom/camera
  1aea8ff Merge AU_LINUX_ANDROID_LA.UM.5.7.R1.07.00.00.253.052 on remote branch
  85b8e0c Promotion of camera.lnx.1.0-00163.
  2c15d07 Merge "Camera: Fix KW issue in OMX components" into camera.lnx.1.0-dev.1.0
  cb2be77 Merge "QCamera2: HAL changes to enable LED calibration interface" into camera.lnx.1.0-dev.1.0
  6e41742 Promotion of camera.lnx.1.0-00162.
  665b32a Merge "HAL1: secure camera support" into camera.lnx.1.0-dev.1.0
  b9320cd Merge "QCamera2: HAL1: Avoid preview stream for snapshot superbuf bundle" into camera.lnx.1.0-dev.1.0
  611667a Merge "QCamera2: oemfeat1 changes cleanup" into camera.lnx.1.0-dev.1.0
  23d90b4 Merge "QCamera2: add setprop for frameskip for oemfeat1" into camera.lnx.1.0-dev.1.0
  ceb43cd Merge "QCamera2: HAL3: kpi markers" into camera.lnx.1.0-dev.1.0
  141be77 Merge "QCamera2: HAL3: Update ZSL and 4K video check" into camera.lnx.1.0-dev.1.0
  c1c1445 Merge "QCamera2:test: New Test Cases added in mm-qcamera-app" into camera.lnx.1.0-dev.1.0
  d0ca453 Promotion of camera.lnx.1.0-00158.
  1befa65 QCamera2: HAL changes to enable LED calibration interface
  12876bf HAL1: secure camera support
  23bce9b Merge "QCamera2: Use deferred allocation for raw stream in Quadcfa." into camera.lnx.1.0-dev.1.0
  a2a9622 Merge "QCamera2: HAL1.0: Enable defer camera open interface in dual camera." into camera.lnx.1.0-dev.1.0
  6359341 Camera: Fix KW issue in OMX components
  f9a79de Promotion of camera.lnx.1.0-00157.
  a819234 QCamera2: oemfeat1 changes cleanup
  4f4250b QCamera2: HAL1: Avoid preview stream for snapshot superbuf bundle
  d23c3f9 QCamera2: HAL3: kpi markers
  ad4181c QCamera2: HAL1: Link CPP if JPEG sizes greater than VFE downscale limit
  5e075e9 Merge "QCamera2:HAL1: Fix KW errors" into camera.lnx.1.0-dev.1.0
  c123a36 Merge "QCamera2: Add feature mask for CPP downscaler only feature" into camera.lnx.1.0-dev.1.0
  cc935e0 Merge "Qcamera2:test: fix error log" into camera.lnx.1.0-dev.1.0
  4f08e46 Merge "QCamera2: Dual camera: Add setprop to disable low power mode" into camera.lnx.1.0-dev.1.0
  51a7c88 Merge "QCamera2: Add dual camera parameters for bokeh and snapshot postprocessing" into camera.lnx.1.0-dev.1.0
  b7feae0 Merge "QCamera2: Add STATS tuning parameters" into camera.lnx.1.0-dev.1.0
  0733be5 Promotion of camera.lnx.1.0-00155.
  f057c23 Merge "QCamera2: HAL1: Increase private meta data size" into camera.lnx.1.0-dev.1.0
  0457abb QCamera2: Use deferred allocation for raw stream in Quadcfa.
  095f69e Merge "Qcamera2:Test:jpeg: mm-jpeg-interface-test app compatible with encoder pipline" into camera.lnx.1.0-dev.1.0
  9731038 Merge "QCamera2: Use unified logic to compute analysis dimensions in HAL1 & HAL3." into camera.lnx.1.0-dev.1.0
  3ad9065 Merge "QCamera2: mm-camera-test: Fix failure of preview in mmi mode" into camera.lnx.1.0-dev.1.0
  d7b161c Merge "QCamera2: Add CAM_INTF_PARM_FOV_COMP_ENABLE set parameter." into camera.lnx.1.0-dev.1.0
  27d1151 QCamera2: Add dual camera parameters for bokeh and snapshot postprocessing
  f03c287 QCamera2:test: New Test Cases added in mm-qcamera-app
  6f39911 QCamera2:HAL1: Fix KW errors
  e3bf5bf QCamera2: HAL3: Update ZSL and 4K video check
  0403285 Qcamera2:test: fix error log
  55b2e6c QCamera2: HAL1.0: Enable defer camera open interface in dual camera.
  2596349 Merge "HAL-1: Set the HAL state appropriately when backend notifies error" into camera.lnx.1.0-dev.1.0
  81ac162 QCamera2: Add feature mask for CPP downscaler only feature
  518f313 QCamera2: Add CAM_INTF_PARM_FOV_COMP_ENABLE set parameter.
  1436a36 Qcamera2:Test:jpeg: mm-jpeg-interface-test app compatible with encoder pipline
  7ead4a7 QCamera2: Dual camera: Add setprop to disable low power mode
  62d6c41 QCamera2: Add STATS tuning parameters
  3807724 QCamera2: mm-camera-test: Fix failure of preview in mmi mode
  2a576f9 QCamera2: Use unified logic to compute analysis dimensions in HAL1 & HAL3.
  5661850 HAL-1: Set the HAL state appropriately when backend notifies error
  7b467cd QCamera2: HAL1: Increase private meta data size
  4b4288f QCamera2: add setprop for frameskip for oemfeat1

Change-Id: Ib9162b86d39bd0a5e337dfe0bf253e95f492e7ce
Signed-off-by: Thierry Strudel <tstrudel@google.com>
diff --git a/msm8998/QCamera2/HAL3/QCamera3HWI.cpp b/msm8998/QCamera2/HAL3/QCamera3HWI.cpp
index 471fb5f..9892265 100644
--- a/msm8998/QCamera2/HAL3/QCamera3HWI.cpp
+++ b/msm8998/QCamera2/HAL3/QCamera3HWI.cpp
@@ -1506,6 +1506,7 @@
     camera3_stream_t *inputStream = NULL;
     bool isJpeg = false;
     cam_dimension_t jpegSize = {0, 0};
+    cam_dimension_t previewSize = {0, 0};
 
     cam_padding_info_t padding_info = gCamCapability[mCameraId]->padding_info;
 
@@ -1687,8 +1688,8 @@
         return -EINVAL;
     }
     /* Check whether we have zsl stream or 4k video case */
-    if (isZsl && m_bIsVideo) {
-        LOGE("Currently invalid configuration ZSL&Video!");
+    if (isZsl && m_bIs4KVideo) {
+        LOGE("Currently invalid configuration ZSL & 4K Video!");
         pthread_mutex_unlock(&mMutex);
         return -EINVAL;
     }
@@ -1876,42 +1877,6 @@
         return rc;
     }
 
-    // Create analysis stream all the time, even when h/w support is not available
-    {
-        cam_feature_mask_t analysisFeatureMask = CAM_QCOM_FEATURE_PP_SUPERSET_HAL3;
-        setPAAFSupport(analysisFeatureMask, CAM_STREAM_TYPE_ANALYSIS,
-                gCamCapability[mCameraId]->color_arrangement);
-        cam_analysis_info_t analysisInfo;
-        int32_t ret = NO_ERROR;
-        ret = mCommon.getAnalysisInfo(
-                FALSE,
-                TRUE,
-                analysisFeatureMask,
-                &analysisInfo);
-        if (ret == NO_ERROR) {
-            mAnalysisChannel = new QCamera3SupportChannel(
-                    mCameraHandle->camera_handle,
-                    mChannelHandle,
-                    mCameraHandle->ops,
-                    &analysisInfo.analysis_padding_info,
-                    analysisFeatureMask,
-                    CAM_STREAM_TYPE_ANALYSIS,
-                    &analysisInfo.analysis_max_res,
-                    (analysisInfo.analysis_format
-                    == CAM_FORMAT_Y_ONLY ? CAM_FORMAT_Y_ONLY
-                    : CAM_FORMAT_YUV_420_NV21),
-                    analysisInfo.hw_analysis_supported,
-                    gCamCapability[mCameraId]->color_arrangement,
-                    this,
-                    0); // force buffer count to 0
-        } else {
-            LOGW("getAnalysisInfo failed, ret = %d", ret);
-        }
-        if (!mAnalysisChannel) {
-            LOGW("Analysis channel cannot be created");
-        }
-    }
-
     bool isRawStreamRequested = false;
     memset(&mStreamConfigInfo, 0, sizeof(cam_stream_size_info_t));
     /* Allocate channel objects for the requested streams */
@@ -1975,6 +1940,8 @@
                     }
                     padding_info.width_padding = mSurfaceStridePadding;
                     padding_info.height_padding = CAM_PAD_TO_2;
+                    previewSize.width = (int32_t)newStream->width;
+                    previewSize.height = (int32_t)newStream->height;
                 }
                 if ((newStream->rotation == CAMERA3_STREAM_ROTATION_90) ||
                         (newStream->rotation == CAMERA3_STREAM_ROTATION_270)) {
@@ -2249,6 +2216,45 @@
             mStreamConfigInfo.num_streams++;
     }
 
+    // Create analysis stream all the time, even when h/w support is not available
+    {
+        cam_feature_mask_t analysisFeatureMask = CAM_QCOM_FEATURE_PP_SUPERSET_HAL3;
+        setPAAFSupport(analysisFeatureMask, CAM_STREAM_TYPE_ANALYSIS,
+                gCamCapability[mCameraId]->color_arrangement);
+        cam_analysis_info_t analysisInfo;
+        int32_t ret = NO_ERROR;
+        ret = mCommon.getAnalysisInfo(
+                FALSE,
+                analysisFeatureMask,
+                &analysisInfo);
+        if (ret == NO_ERROR) {
+            cam_dimension_t analysisDim;
+            analysisDim = mCommon.getMatchingDimension(previewSize,
+                    analysisInfo.analysis_recommended_res);
+
+            mAnalysisChannel = new QCamera3SupportChannel(
+                    mCameraHandle->camera_handle,
+                    mChannelHandle,
+                    mCameraHandle->ops,
+                    &analysisInfo.analysis_padding_info,
+                    analysisFeatureMask,
+                    CAM_STREAM_TYPE_ANALYSIS,
+                    &analysisDim,
+                    (analysisInfo.analysis_format
+                    == CAM_FORMAT_Y_ONLY ? CAM_FORMAT_Y_ONLY
+                    : CAM_FORMAT_YUV_420_NV21),
+                    analysisInfo.hw_analysis_supported,
+                    gCamCapability[mCameraId]->color_arrangement,
+                    this,
+                    0); // force buffer count to 0
+        } else {
+            LOGW("getAnalysisInfo failed, ret = %d", ret);
+        }
+        if (!mAnalysisChannel) {
+            LOGW("Analysis channel cannot be created");
+        }
+    }
+
     //RAW DUMP channel
     if (mEnableRawDump && isRawStreamRequested == false){
         cam_dimension_t rawDumpSize;
@@ -2281,7 +2287,7 @@
         setPAAFSupport(mStreamConfigInfo.postprocess_mask[mStreamConfigInfo.num_streams],
                 mStreamConfigInfo.type[mStreamConfigInfo.num_streams],
                 gCamCapability[mCameraId]->color_arrangement);
-        rc = mCommon.getAnalysisInfo(FALSE, TRUE,
+        rc = mCommon.getAnalysisInfo(FALSE,
                 mStreamConfigInfo.postprocess_mask[mStreamConfigInfo.num_streams],
                 &analysisInfo);
         if (rc != NO_ERROR) {
@@ -2290,7 +2296,8 @@
             return rc;
         }
         mStreamConfigInfo.stream_sizes[mStreamConfigInfo.num_streams] =
-                analysisInfo.analysis_max_res;
+                mCommon.getMatchingDimension(previewSize,
+                analysisInfo.analysis_recommended_res);
         mStreamConfigInfo.num_streams++;
     }
 
@@ -2302,7 +2309,7 @@
                 CAM_STREAM_TYPE_CALLBACK,
                 gCamCapability[mCameraId]->color_arrangement);
         int32_t ret = NO_ERROR;
-        ret = mCommon.getAnalysisInfo(FALSE, TRUE, callbackFeatureMask, &supportInfo);
+        ret = mCommon.getAnalysisInfo(FALSE, callbackFeatureMask, &supportInfo);
         if (ret != NO_ERROR) {
             /* Ignore the error for Mono camera
              * because the PAAF bit mask is only set
@@ -5126,7 +5133,7 @@
  *==========================================================================*/
 int QCamera3HardwareInterface::flush(bool restartChannels)
 {
-    KPI_ATRACE_CAMSCOPE_CALL(CAMSCOPE_HAL3_FLUSH);
+    KPI_ATRACE_CAMSCOPE_CALL(CAMSCOPE_HAL3_STOP_PREVIEW);
     int32_t rc = NO_ERROR;
 
     LOGD("Unblocking Process Capture Request");
@@ -5236,7 +5243,7 @@
  *==========================================================================*/
 int QCamera3HardwareInterface::flushPerf()
 {
-    ATRACE_CAMSCOPE_CALL(CAMSCOPE_HAL3_FLUSH_PREF);
+    KPI_ATRACE_CAMSCOPE_CALL(CAMSCOPE_HAL3_STOP_PREVIEW);
     int32_t rc = 0;
     struct timespec timeout;
     bool timed_wait = false;
@@ -11855,7 +11862,7 @@
         gCamHal3LogLevel = (uint32_t)val;
     }
 
-    property_get("persist.camera.kpi.debug", prop, "1");
+    property_get("persist.camera.kpi.debug", prop, "0");
     gKpiDebugLevel = atoi(prop);
 
     property_get("persist.camera.global.debug", prop, "0");