author | jiyu.yang <jiyu.yang@amlogic.com> | 2014-11-05 06:07:19 (GMT) |
---|---|---|
committer | jiyu.yang <jiyu.yang@amlogic.com> | 2014-11-05 12:53:40 (GMT) |
commit | 0303373167fd9ae1040878b1b456fd53d79a00f6 (patch) | |
tree | 93f7f7baf7d373f59066689f52b3486111e64f94 | |
parent | 39bf8d9b342cc6c955b6b2510d0cd4d33d5510db (diff) | |
download | camera-0303373167fd9ae1040878b1b456fd53d79a00f6.zip camera-0303373167fd9ae1040878b1b456fd53d79a00f6.tar.gz camera-0303373167fd9ae1040878b1b456fd53d79a00f6.tar.bz2 |
add flush_all_request interface
Change-Id: I728143be774b64502fe43801a69a5774b4a56c55
Signed-off-by: jiyu.yang <jiyu.yang@amlogic.com>
-rw-r--r-- | v3/EmulatedCamera3.cpp | 13 | ||||
-rw-r--r-- | v3/EmulatedCamera3.h | 2 | ||||
-rwxr-xr-x | v3/EmulatedFakeCamera3.cpp | 58 | ||||
-rw-r--r-- | v3/EmulatedFakeCamera3.h | 1 |
4 files changed, 53 insertions, 21 deletions
diff --git a/v3/EmulatedCamera3.cpp b/v3/EmulatedCamera3.cpp index 695a102..588aa77 100644 --- a/v3/EmulatedCamera3.cpp +++ b/v3/EmulatedCamera3.cpp @@ -180,6 +180,11 @@ void EmulatedCamera3::dump(int fd) { return; } +int EmulatedCamera3::flush_all_requests() { + ALOGE("%s: Not implemented", __FUNCTION__); + return -1; +} + /**************************************************************************** * Protected API. Callbacks to the framework. ***************************************************************************/ @@ -274,6 +279,11 @@ void EmulatedCamera3::dump(const camera3_device_t *d, int fd) { ec->dump(fd); } +int EmulatedCamera3::flush(const struct camera3_device *d) { + EmulatedCamera3* ec = getInstance(d); + return ec->flush_all_requests(); +} + int EmulatedCamera3::close(struct hw_device_t* device) { EmulatedCamera3* ec = static_cast<EmulatedCamera3*>( @@ -292,7 +302,8 @@ camera3_device_ops_t EmulatedCamera3::sDeviceOps = { EmulatedCamera3::construct_default_request_settings, EmulatedCamera3::process_capture_request, EmulatedCamera3::get_metadata_vendor_tag_ops, - EmulatedCamera3::dump + EmulatedCamera3::dump, + EmulatedCamera3::flush, }; }; /* namespace android */ diff --git a/v3/EmulatedCamera3.h b/v3/EmulatedCamera3.h index c154f5a..16d0667 100644 --- a/v3/EmulatedCamera3.h +++ b/v3/EmulatedCamera3.h @@ -104,6 +104,7 @@ protected: virtual void dump(int fd); + virtual int flush_all_requests(); /** Tag query methods */ virtual const char *getVendorSectionName(uint32_t tag); @@ -158,6 +159,7 @@ private: uint32_t tag); static void dump(const camera3_device_t *, int fd); + static int flush(const struct camera3_device *d); /** For hw_device_t ops */ static int close(struct hw_device_t* device); diff --git a/v3/EmulatedFakeCamera3.cpp b/v3/EmulatedFakeCamera3.cpp index f7228ae..6cb97e7 100755 --- a/v3/EmulatedFakeCamera3.cpp +++ b/v3/EmulatedFakeCamera3.cpp @@ -679,6 +679,14 @@ const camera_metadata_t* EmulatedFakeCamera3::constructDefaultRequestSettings( /** android.noise */ static const uint8_t noiseStrength = 5; settings.update(ANDROID_NOISE_REDUCTION_STRENGTH, &noiseStrength, 1); + static uint8_t availableNBModes[] = { + ANDROID_NOISE_REDUCTION_MODE_OFF, + ANDROID_NOISE_REDUCTION_MODE_FAST, + ANDROID_NOISE_REDUCTION_MODE_HIGH_QUALITY, + }; + settings.update(ANDROID_NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES, + availableNBModes, sizeof(availableNBModes)/sizeof(availableNBModes)); + /** android.color */ static const float colorTransform[9] = { @@ -755,6 +763,9 @@ const camera_metadata_t* EmulatedFakeCamera3::constructDefaultRequestSettings( /** android.control */ uint8_t controlIntent = 0; + uint8_t controlMode = ANDROID_CONTROL_MODE_AUTO; //default value + uint8_t aeMode = ANDROID_CONTROL_AE_MODE_ON; + uint8_t awbMode = ANDROID_CONTROL_AWB_MODE_AUTO; switch (type) { case CAMERA3_TEMPLATE_PREVIEW: controlIntent = ANDROID_CONTROL_CAPTURE_INTENT_PREVIEW; @@ -773,14 +784,15 @@ const camera_metadata_t* EmulatedFakeCamera3::constructDefaultRequestSettings( break; case CAMERA3_TEMPLATE_MANUAL: controlIntent = ANDROID_CONTROL_CAPTURE_INTENT_MANUAL; + controlMode = ANDROID_CONTROL_MODE_OFF; + aeMode = ANDROID_CONTROL_AE_MODE_OFF; + awbMode = ANDROID_CONTROL_AWB_MODE_OFF; break; default: controlIntent = ANDROID_CONTROL_CAPTURE_INTENT_CUSTOM; break; } settings.update(ANDROID_CONTROL_CAPTURE_INTENT, &controlIntent, 1); - - static const uint8_t controlMode = ANDROID_CONTROL_MODE_AUTO; settings.update(ANDROID_CONTROL_MODE, &controlMode, 1); static const uint8_t effectMode = ANDROID_CONTROL_EFFECT_MODE_OFF; @@ -789,12 +801,18 @@ const camera_metadata_t* EmulatedFakeCamera3::constructDefaultRequestSettings( static const uint8_t sceneMode = ANDROID_CONTROL_SCENE_MODE_FACE_PRIORITY; settings.update(ANDROID_CONTROL_SCENE_MODE, &sceneMode, 1); - static const uint8_t aeMode = ANDROID_CONTROL_AE_MODE_ON; settings.update(ANDROID_CONTROL_AE_MODE, &aeMode, 1); static const uint8_t aeLock = ANDROID_CONTROL_AE_LOCK_OFF; settings.update(ANDROID_CONTROL_AE_LOCK, &aeLock, 1); + static const uint8_t aePrecaptureTrigger = + ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_IDLE; + settings.update(ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER, &aePrecaptureTrigger, 1); + + static const uint8_t afTrigger = ANDROID_CONTROL_AF_TRIGGER_IDLE; + settings.update(ANDROID_CONTROL_AF_TRIGGER, &afTrigger, 1); + static const int32_t controlRegions[5] = { 0, 0, (int32_t)Sensor::kResolution[0], (int32_t)Sensor::kResolution[1], 1000 @@ -805,7 +823,7 @@ const camera_metadata_t* EmulatedFakeCamera3::constructDefaultRequestSettings( settings.update(ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION, &aeExpCompensation, 1); static const int32_t aeTargetFpsRange[2] = { - 10, 30 + 5, 20 }; settings.update(ANDROID_CONTROL_AE_TARGET_FPS_RANGE, aeTargetFpsRange, 2); @@ -813,8 +831,6 @@ const camera_metadata_t* EmulatedFakeCamera3::constructDefaultRequestSettings( ANDROID_CONTROL_AE_ANTIBANDING_MODE_AUTO; settings.update(ANDROID_CONTROL_AE_ANTIBANDING_MODE, &aeAntibandingMode, 1); - static const uint8_t awbMode = - ANDROID_CONTROL_AWB_MODE_AUTO; settings.update(ANDROID_CONTROL_AWB_MODE, &awbMode, 1); static const uint8_t awbLock = ANDROID_CONTROL_AWB_LOCK_OFF; @@ -831,13 +847,16 @@ const camera_metadata_t* EmulatedFakeCamera3::constructDefaultRequestSettings( afMode = ANDROID_CONTROL_AF_MODE_AUTO; break; case CAMERA3_TEMPLATE_VIDEO_RECORD: - afMode = ANDROID_CONTROL_AF_MODE_CONTINUOUS_VIDEO; + afMode = ANDROID_CONTROL_AF_MODE_AUTO; + //afMode = ANDROID_CONTROL_AF_MODE_CONTINUOUS_VIDEO; break; case CAMERA3_TEMPLATE_VIDEO_SNAPSHOT: - afMode = ANDROID_CONTROL_AF_MODE_CONTINUOUS_VIDEO; + afMode = ANDROID_CONTROL_AF_MODE_AUTO; + //afMode = ANDROID_CONTROL_AF_MODE_CONTINUOUS_VIDEO; break; case CAMERA3_TEMPLATE_ZERO_SHUTTER_LAG: - afMode = ANDROID_CONTROL_AF_MODE_CONTINUOUS_PICTURE; + afMode = ANDROID_CONTROL_AF_MODE_AUTO; + //afMode = ANDROID_CONTROL_AF_MODE_CONTINUOUS_PICTURE; break; case CAMERA3_TEMPLATE_MANUAL: afMode = ANDROID_CONTROL_AF_MODE_OFF; @@ -1260,10 +1279,14 @@ status_t EmulatedFakeCamera3::processCaptureRequest( /** Debug methods */ void EmulatedFakeCamera3::dump(int fd) { - DBG_LOGA("dump\n"); - } - +//flush all request +//TODO returned buffers every request held immediately with +//CAMERA3_BUFFER_STATUS_ERROR flag. +int EmulatedFakeCamera3::flush_all_requests() { + DBG_LOGA("flush all request"); + return 0; +} /** Tag query methods */ const char* EmulatedFakeCamera3::getVendorSectionName(uint32_t tag) { return NULL; @@ -1607,7 +1630,7 @@ status_t EmulatedFakeCamera3::constructStaticInfo() { static const int32_t availableTargetFpsRanges[] = { - 5, 15, + 5, 20, }; info.update(ANDROID_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES, availableTargetFpsRanges, @@ -1746,12 +1769,6 @@ status_t EmulatedFakeCamera3::constructStaticInfo() { info.update(ANDROID_COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES, aberrationMode, 1); - uint8_t availableNBModes[] = {ANDROID_NOISE_REDUCTION_MODE_OFF}; - info.update(ANDROID_NOISE_REDUCTION_MODE, - availableNBModes, 1); - info.update(ANDROID_NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES, - availableNBModes, 1); - getAvailableChKeys(&info, supportedHardwareLevel); mCameraInfo = info.release(); @@ -2013,7 +2030,7 @@ status_t EmulatedFakeCamera3::doFakeAF(CameraMetadata &settings) { __FUNCTION__, afMode); return BAD_VALUE; } - +#if 0 e = settings.find(ANDROID_CONTROL_AF_REGIONS); if (e.count == 0) { ALOGE("%s:Get ANDROID_CONTROL_AF_REGIONS failed\n", __FUNCTION__); @@ -2025,6 +2042,7 @@ status_t EmulatedFakeCamera3::doFakeAF(CameraMetadata &settings) { int32_t y1 = e.data.i32[3]; mSensor->setFocuasArea(x0, y0, x1, y1); DBG_LOGB(" x0:%d, y0:%d,x1:%d,y1:%d,\n", x0, y0, x1, y1); +#endif bool afModeChanged = mAfMode != afMode; diff --git a/v3/EmulatedFakeCamera3.h b/v3/EmulatedFakeCamera3.h index cb1a072..4d1edd2 100644 --- a/v3/EmulatedFakeCamera3.h +++ b/v3/EmulatedFakeCamera3.h @@ -90,6 +90,7 @@ protected: /** Debug methods */ virtual void dump(int fd); + virtual int flush_all_requests(); /** Tag query methods */ virtual const char *getVendorSectionName(uint32_t tag); |