Merge changes Ic7fd2787,If97579fd

* changes:
  Camera: notify AE trigger ID change
  Camera: fix camera ID in flashlight control
gugelfrei
TreeHugger Robot 6 years ago committed by Android (Google) Code Review
commit b7c8c8875f

@ -120,20 +120,15 @@ status_t CameraFlashlight::setTorchMode(const String8& cameraId, bool enabled) {
return res;
}
int CameraFlashlight::getNumberOfCameras() {
size_t len = mProviderManager->getAPI1CompatibleCameraDeviceIds().size();
return static_cast<int>(len);
}
status_t CameraFlashlight::findFlashUnits() {
Mutex::Autolock l(mLock);
status_t res;
std::vector<String8> cameraIds;
int numberOfCameras = getNumberOfCameras();
std::vector<std::string> ids = mProviderManager->getAPI1CompatibleCameraDeviceIds();
int numberOfCameras = static_cast<int>(ids.size());
cameraIds.resize(numberOfCameras);
// No module, must be provider
std::vector<std::string> ids = mProviderManager->getAPI1CompatibleCameraDeviceIds();
for (size_t i = 0; i < cameraIds.size(); i++) {
cameraIds[i] = String8(ids[i].c_str());
}
@ -187,7 +182,8 @@ bool CameraFlashlight::hasFlashUnitLocked(const String8& cameraId) {
ssize_t index = mHasFlashlightMap.indexOfKey(cameraId);
if (index == NAME_NOT_FOUND) {
ALOGE("%s: camera %s not present when findFlashUnits() was called",
// Might be external camera
ALOGW("%s: camera %s not present when findFlashUnits() was called",
__FUNCTION__, cameraId.string());
return false;
}
@ -221,11 +217,13 @@ status_t CameraFlashlight::prepareDeviceOpen(const String8& cameraId) {
if (mOpenedCameraIds.size() == 0) {
// notify torch unavailable for all cameras with a flash
int numCameras = getNumberOfCameras();
std::vector<std::string> ids = mProviderManager->getAPI1CompatibleCameraDeviceIds();
int numCameras = static_cast<int>(ids.size());
for (int i = 0; i < numCameras; i++) {
if (hasFlashUnitLocked(String8::format("%d", i))) {
String8 id8(ids[i].c_str());
if (hasFlashUnitLocked(id8)) {
mCallbacks->onTorchStatusChanged(
String8::format("%d", i), TorchModeStatus::NOT_AVAILABLE);
id8, TorchModeStatus::NOT_AVAILABLE);
}
}
}
@ -265,11 +263,13 @@ status_t CameraFlashlight::deviceClosed(const String8& cameraId) {
if (isBackwardCompatibleMode(cameraId)) {
// notify torch available for all cameras with a flash
int numCameras = getNumberOfCameras();
std::vector<std::string> ids = mProviderManager->getAPI1CompatibleCameraDeviceIds();
int numCameras = static_cast<int>(ids.size());
for (int i = 0; i < numCameras; i++) {
if (hasFlashUnitLocked(String8::format("%d", i))) {
String8 id8(ids[i].c_str());
if (hasFlashUnitLocked(id8)) {
mCallbacks->onTorchStatusChanged(
String8::format("%d", i), TorchModeStatus::AVAILABLE_OFF);
id8, TorchModeStatus::AVAILABLE_OFF);
}
}
}

@ -92,8 +92,6 @@ class CameraFlashlight : public virtual VirtualLightRefBase {
// opening cameras)
bool isBackwardCompatibleMode(const String8& cameraId);
int getNumberOfCameras();
sp<FlashControlBase> mFlashControl;
sp<CameraProviderManager> mProviderManager;

@ -292,7 +292,8 @@ status_t FrameProcessor::process3aState(const CaptureResult &frame,
}
// Once all 3A states are received, notify the client about 3A changes.
if (pendingState.aeState != m3aState.aeState) {
if (pendingState.aeState != m3aState.aeState ||
pendingState.aeTriggerId > m3aState.aeTriggerId) {
ALOGV("%s: Camera %d: AE state %d->%d",
__FUNCTION__, cameraId,
m3aState.aeState, pendingState.aeState);

Loading…
Cancel
Save