Camera3: Integrate fixes for preview, capture and video

1. Fix StaticMeta and compilation warning
2. Set HAL3 version in Parameters

Change-Id: I23aa0df37a58e847f1ca738a335d50b99f1f5a06
diff --git a/camera/QCamera2/HAL3/QCamera3Channel.cpp b/camera/QCamera2/HAL3/QCamera3Channel.cpp
index b6bc800..7d2b64d 100644
--- a/camera/QCamera2/HAL3/QCamera3Channel.cpp
+++ b/camera/QCamera2/HAL3/QCamera3Channel.cpp
@@ -583,7 +583,7 @@
     return;
 }
 
-QCamera3Memory* QCamera3RegularChannel::getStreamBufs(uint32_t len)
+QCamera3Memory* QCamera3RegularChannel::getStreamBufs(uint32_t /*len*/)
 {
     if (mNumBufs == 0 || mCamera3Buffers == NULL) {
         ALOGE("%s: buffers not registered yet", __func__);
@@ -664,7 +664,8 @@
     return rc;
 }
 
-int32_t QCamera3MetadataChannel::request(buffer_handle_t *buffer, uint32_t frameNumber)
+int32_t QCamera3MetadataChannel::request(buffer_handle_t * /*buffer*/,
+                                                uint32_t frameNumber)
 {
     if (!m_bIsActive) {
 #ifdef FAKE_FRAME_NUMBERS
diff --git a/camera/QCamera2/HAL3/QCamera3Channel.h b/camera/QCamera2/HAL3/QCamera3Channel.h
index aad44f3..03451b8 100644
--- a/camera/QCamera2/HAL3/QCamera3Channel.h
+++ b/camera/QCamera2/HAL3/QCamera3Channel.h
@@ -70,8 +70,11 @@
     virtual int32_t registerBuffers(uint32_t num_buffers,
                         buffer_handle_t **buffers) = 0;
     virtual int32_t initialize() = 0;
-    virtual int32_t request(buffer_handle_t *buffer, uint32_t frameNumber){ return 0;};
-    virtual int32_t request(buffer_handle_t *buffer, uint32_t frameNumber, jpeg_settings_t* mJpegSettings){ return 0;};
+    virtual int32_t request(buffer_handle_t * /*buffer*/,
+                uint32_t /*frameNumber*/){ return 0;};
+    virtual int32_t request(buffer_handle_t * /*buffer*/,
+                uint32_t /*frameNumber*/,
+                jpeg_settings_t* /*mJpegSettings*/){ return 0;};
     virtual void streamCbRoutine(mm_camera_super_buf_t *super_frame,
                             QCamera3Stream *stream) = 0;
 
diff --git a/camera/QCamera2/HAL3/QCamera3HWI.cpp b/camera/QCamera2/HAL3/QCamera3HWI.cpp
index 8ad0cb2..60df5fb 100644
--- a/camera/QCamera2/HAL3/QCamera3HWI.cpp
+++ b/camera/QCamera2/HAL3/QCamera3HWI.cpp
@@ -94,7 +94,8 @@
 };
 
 const QCamera3HardwareInterface::QCameraMap QCamera3HardwareInterface::FOCUS_MODES_MAP[] = {
-    { ANDROID_CONTROL_AF_MODE_OFF,               CAM_FOCUS_MODE_OFF },
+    { ANDROID_CONTROL_AF_MODE_OFF,                CAM_FOCUS_MODE_OFF },
+    { ANDROID_CONTROL_AF_MODE_OFF,                CAM_FOCUS_MODE_FIXED },
     { ANDROID_CONTROL_AF_MODE_AUTO,               CAM_FOCUS_MODE_AUTO },
     { ANDROID_CONTROL_AF_MODE_MACRO,              CAM_FOCUS_MODE_MACRO },
     { ANDROID_CONTROL_AF_MODE_EDOF,               CAM_FOCUS_MODE_EDOF },
@@ -580,7 +581,6 @@
 int QCamera3HardwareInterface::validateCaptureRequest(
                     camera3_capture_request_t *request)
 {
-    int rc = NO_ERROR;
     ssize_t idx = 0;
     const camera3_stream_buffer_t *b;
     CameraMetadata meta;
@@ -734,8 +734,6 @@
                     camera3_capture_request_t *request)
 {
     int rc = NO_ERROR;
-    ssize_t idx = 0;
-    const camera3_stream_buffer_t *b;
     CameraMetadata meta;
 
     pthread_mutex_lock(&mMutex);
@@ -762,7 +760,6 @@
     for (size_t i = 0; i < request->num_output_buffers; i++) {
         const camera3_stream_buffer_t& output = request->output_buffers[i];
         sp<Fence> acquireFence = new Fence(output.acquire_fence);
-        int format = output.stream->format;
 
         if (output.stream->format == HAL_PIXEL_FORMAT_BLOB) {
         //Call function to store local copy of jpeg data for encode params.
@@ -808,8 +805,6 @@
     for (size_t i = 0; i < request->num_output_buffers; i++) {
         const camera3_stream_buffer_t& output = request->output_buffers[i];
         QCamera3Channel *channel = (QCamera3Channel *)output.stream->priv;
-        int format = output.stream->format;
-
 
         if (channel == NULL) {
             ALOGE("%s: invalid channel pointer for stream", __func__);
@@ -850,7 +845,8 @@
  *
  * RETURN     :
  *==========================================================================*/
-void QCamera3HardwareInterface::getMetadataVendorTagOps(vendor_tag_query_ops_t* ops)
+void QCamera3HardwareInterface::getMetadataVendorTagOps(
+                    vendor_tag_query_ops_t* /*ops*/)
 {
     /* Enable locks when we eventually add Vendor Tags */
     /*
@@ -871,7 +867,7 @@
  *
  * RETURN     :
  *==========================================================================*/
-void QCamera3HardwareInterface::dump(int fd)
+void QCamera3HardwareInterface::dump(int /*fd*/)
 {
     /*Enable lock when we implement this function*/
     /*
@@ -1871,7 +1867,7 @@
     int32_t size = 0;
     for (int i = 0; i < gCamCapability[cameraId]->supported_effects_cnt; i++) {
         int val = lookupFwkName(EFFECT_MODES_MAP,
-                                   gCamCapability[cameraId]->supported_effects_cnt,
+                                   sizeof(EFFECT_MODES_MAP)/sizeof(EFFECT_MODES_MAP[0]),
                                    gCamCapability[cameraId]->supported_effects[i]);
         if (val != NAME_NOT_FOUND) {
             avail_effects[size] = (uint8_t)val;
@@ -1886,7 +1882,7 @@
     size = 0;
     for (int i = 0; i < gCamCapability[cameraId]->supported_scene_modes_cnt; i++) {
         int val = lookupFwkName(SCENE_MODES_MAP,
-                                gCamCapability[cameraId]->supported_scene_modes_cnt,
+                                sizeof(SCENE_MODES_MAP)/sizeof(SCENE_MODES_MAP[0]),
                                 gCamCapability[cameraId]->supported_scene_modes[i]);
         if (val != NAME_NOT_FOUND) {
             avail_scene_modes[size] = (uint8_t)val;
@@ -1901,8 +1897,8 @@
     size = 0;
     for (int i = 0; i < gCamCapability[cameraId]->supported_antibandings_cnt; i++) {
         int val = lookupFwkName(ANTIBANDING_MODES_MAP,
-                                         gCamCapability[cameraId]->supported_antibandings_cnt,
-                                         gCamCapability[cameraId]->supported_antibandings[i]);
+                                 sizeof(ANTIBANDING_MODES_MAP)/sizeof(ANTIBANDING_MODES_MAP[0]),
+                                 gCamCapability[cameraId]->supported_antibandings[i]);
         if (val != NAME_NOT_FOUND) {
             avail_antibanding_modes[size] = (uint8_t)val;
             size++;
@@ -1913,11 +1909,12 @@
                       avail_antibanding_modes,
                       size);
 
+    ALOGE("%s: %d", __func__, __LINE__);
     static uint8_t avail_af_modes[CAM_FOCUS_MODE_MAX];
     size = 0;
     for (int i = 0; i < gCamCapability[cameraId]->supported_focus_modes_cnt; i++) {
         int val = lookupFwkName(FOCUS_MODES_MAP,
-                                gCamCapability[cameraId]->supported_focus_modes_cnt,
+                                sizeof(FOCUS_MODES_MAP)/sizeof(FOCUS_MODES_MAP[0]),
                                 gCamCapability[cameraId]->supported_focus_modes[i]);
         if (val != NAME_NOT_FOUND) {
             avail_af_modes[size] = (uint8_t)val;
@@ -1932,7 +1929,7 @@
     size = 0;
     for (int i = 0; i < gCamCapability[cameraId]->supported_white_balances_cnt; i++) {
         int8_t val = lookupFwkName(WHITE_BALANCE_MODES_MAP,
-                                    gCamCapability[cameraId]->supported_white_balances_cnt,
+                                    sizeof(WHITE_BALANCE_MODES_MAP)/sizeof(WHITE_BALANCE_MODES_MAP[0]),
                                     gCamCapability[cameraId]->supported_white_balances[i]);
         if (val != NAME_NOT_FOUND) {
             avail_awb_modes[size] = (uint8_t)val;
@@ -1947,7 +1944,7 @@
     size = 0;
     for (int i = 0; i < gCamCapability[cameraId]->supported_flash_modes_cnt; i++) {
         int val = lookupFwkName(FLASH_MODES_MAP,
-                                gCamCapability[cameraId]->supported_flash_modes_cnt,
+                                sizeof(FLASH_MODES_MAP)/sizeof(FLASH_MODES_MAP[0]),
                                 gCamCapability[cameraId]->supported_flash_modes[i]);
         if (val != NAME_NOT_FOUND) {
             avail_flash_modes[size] = (uint8_t)val;
@@ -2302,11 +2299,17 @@
     static const float default_aperture = gCamCapability[mCameraId]->apertures[0];
     settings.update(ANDROID_LENS_APERTURE, &default_aperture, 1);
 
-    static const float default_filter_density = gCamCapability[mCameraId]->filter_densities[0];
-    settings.update(ANDROID_LENS_FILTER_DENSITY, &default_filter_density, 1);
+    if (gCamCapability[mCameraId]->filter_densities_count) {
+        static const float default_filter_density = gCamCapability[mCameraId]->filter_densities[0];
+        settings.update(ANDROID_LENS_FILTER_DENSITY, &default_filter_density,
+                        gCamCapability[mCameraId]->filter_densities_count);
+    }
 
-    static const float default_focal_length = gCamCapability[mCameraId]->focal_lengths[0];
-    settings.update(ANDROID_LENS_FOCAL_LENGTH, &default_focal_length, 1);
+    /* TODO: Enable focus lengths once supported*/
+    /*if (gCamCapability[mCameraId]->focal_lengths_count) {
+        static const float default_focal_length = gCamCapability[mCameraId]->focal_lengths[0];
+        settings.update(ANDROID_LENS_FOCAL_LENGTH, &default_focal_length, 1);
+    }*/
 
     mDefaultMetadata[type] = settings.release();
 
@@ -2337,7 +2340,12 @@
         return BAD_VALUE;
     }
 
+    int32_t hal_version = CAM_HAL_V3;
+
+    memset(mParameters, 0, sizeof(parm_buffer_t));
     mParameters->first_flagged_entry = CAM_INTF_PARM_MAX;
+    AddSetParmEntryToBatch(mParameters, CAM_INTF_PARM_HAL_VERSION,
+                sizeof(hal_version), &hal_version);
 
     /*we need to update the frame number in the parameters*/
     rc = AddSetParmEntryToBatch(mParameters, CAM_INTF_META_FRAME_NUMBER,