Merge "Remove old h264 decoder"
diff --git a/media/libeffects/factory/EffectsFactory.c b/media/libeffects/factory/EffectsFactory.c
index cd0e765..c1ce513 100644
--- a/media/libeffects/factory/EffectsFactory.c
+++ b/media/libeffects/factory/EffectsFactory.c
@@ -261,7 +261,6 @@
effect_descriptor_t *d = NULL;
effect_handle_t itfe;
effect_entry_t *fx;
- int found = 0;
int ret;
if (uuid == NULL || pHandle == NULL) {
@@ -428,8 +427,6 @@
/////////////////////////////////////////////////
int init() {
- int hdl;
-
if (gInitDone) {
return 0;
}
@@ -552,7 +549,6 @@
list_elem_t *e = gLibraryList;
lib_entry_t *l = NULL;
effect_descriptor_t *d = NULL;
- int found = 0;
int ret = 0;
dprintf(fd, "Libraries loaded:\n");
diff --git a/media/libstagefright/foundation/include/media/stagefright/foundation/ADebug.h b/media/libstagefright/foundation/include/media/stagefright/foundation/ADebug.h
index b498c91..bac8fa9 100644
--- a/media/libstagefright/foundation/include/media/stagefright/foundation/ADebug.h
+++ b/media/libstagefright/foundation/include/media/stagefright/foundation/ADebug.h
@@ -82,6 +82,10 @@
MAKE_COMPARATOR(LT,<)
MAKE_COMPARATOR(GT,>)
+#ifdef CHECK_OP
+#undef CHECK_OP
+#endif
+
#define CHECK_OP(x,y,suffix,op) \
do { \
AString ___res = Compare_##suffix(x, y); \
diff --git a/services/camera/libcameraservice/CameraService.cpp b/services/camera/libcameraservice/CameraService.cpp
index 20bd5e4..6abfa81 100644
--- a/services/camera/libcameraservice/CameraService.cpp
+++ b/services/camera/libcameraservice/CameraService.cpp
@@ -243,29 +243,10 @@
}
if (!cameraFound) {
- hardware::camera::common::V1_0::CameraResourceCost cost;
- res = mCameraProviderManager->getResourceCost(cameraId, &cost);
- if (res != OK) {
- ALOGE("Failed to query device resource cost: %s (%d)", strerror(-res), res);
- continue;
- }
- std::set<String8> conflicting;
- for (size_t i = 0; i < cost.conflictingDevices.size(); i++) {
- conflicting.emplace(String8(cost.conflictingDevices[i].c_str()));
- }
-
- {
- Mutex::Autolock lock(mCameraStatesLock);
- mCameraStates.emplace(id8,
- std::make_shared<CameraState>(id8, cost.resourceCost, conflicting));
- }
+ addStates(id8);
}
onDeviceStatusChanged(id8, CameraDeviceStatus::PRESENT);
-
- if (mFlashlight->hasFlashUnit(id8)) {
- mTorchStatusMap.add(id8, TorchModeStatus::AVAILABLE_OFF);
- }
}
return OK;
@@ -300,6 +281,31 @@
enumerateProviders();
}
+void CameraService::addStates(const String8 id) {
+ std::string cameraId(id.c_str());
+ hardware::camera::common::V1_0::CameraResourceCost cost;
+ status_t res = mCameraProviderManager->getResourceCost(cameraId, &cost);
+ if (res != OK) {
+ ALOGE("Failed to query device resource cost: %s (%d)", strerror(-res), res);
+ return;
+ }
+ std::set<String8> conflicting;
+ for (size_t i = 0; i < cost.conflictingDevices.size(); i++) {
+ conflicting.emplace(String8(cost.conflictingDevices[i].c_str()));
+ }
+
+ {
+ Mutex::Autolock lock(mCameraStatesLock);
+ mCameraStates.emplace(id, std::make_shared<CameraState>(id, cost.resourceCost,
+ conflicting));
+ }
+
+ if (mFlashlight->hasFlashUnit(id)) {
+ mTorchStatusMap.add(id, TorchModeStatus::AVAILABLE_OFF);
+ }
+ logDeviceAdded(id, "Device added");
+}
+
void CameraService::onDeviceStatusChanged(const String8& id,
CameraDeviceStatus newHalStatus) {
ALOGI("%s: Status changed for cameraId=%s, newStatus=%d", __FUNCTION__,
@@ -311,8 +317,13 @@
if (state == nullptr) {
if (newStatus == StatusInternal::PRESENT) {
- ALOGW("%s: Unknown camera ID %s, probably newly registered?",
+ ALOGI("%s: Unknown camera ID %s, a new camera is added",
__FUNCTION__, id.string());
+
+ // First add as absent to make sure clients are notified below
+ addStates(id);
+
+ updateStatus(newStatus, id);
} else {
ALOGE("%s: Bad camera ID %s", __FUNCTION__, id.string());
}
@@ -2229,8 +2240,11 @@
mClientPackageName);
mOpsActive = false;
+ // This function is called when a client disconnects. This should
+ // release the camera, but actually only if it was in a proper
+ // functional state, i.e. with status NOT_AVAILABLE
std::initializer_list<StatusInternal> rejected = {StatusInternal::PRESENT,
- StatusInternal::ENUMERATING};
+ StatusInternal::ENUMERATING, StatusInternal::NOT_PRESENT};
// Transition to PRESENT if the camera is not in either of the rejected states
sCameraService->updateStatus(StatusInternal::PRESENT,
@@ -2322,7 +2336,7 @@
CameraService::CameraState::CameraState(const String8& id, int cost,
const std::set<String8>& conflicting) : mId(id),
- mStatus(StatusInternal::PRESENT), mCost(cost), mConflicting(conflicting) {}
+ mStatus(StatusInternal::NOT_PRESENT), mCost(cost), mConflicting(conflicting) {}
CameraService::CameraState::~CameraState() {}
diff --git a/services/camera/libcameraservice/CameraService.h b/services/camera/libcameraservice/CameraService.h
index 6d5dde8..e9373a6 100644
--- a/services/camera/libcameraservice/CameraService.h
+++ b/services/camera/libcameraservice/CameraService.h
@@ -512,6 +512,9 @@
// Eumerate all camera providers in the system
status_t enumerateProviders();
+ // Add a new camera to camera and torch state lists
+ void addStates(const String8 id);
+
// Check if we can connect, before we acquire the service lock.
// The returned originalClientPid is the PID of the original process that wants to connect to
// camera.
diff --git a/services/mediaextractor/Android.mk b/services/mediaextractor/Android.mk
index 1ebb7ff..d41da39 100644
--- a/services/mediaextractor/Android.mk
+++ b/services/mediaextractor/Android.mk
@@ -3,6 +3,7 @@
# service library
include $(CLEAR_VARS)
LOCAL_SRC_FILES := MediaExtractorService.cpp
+LOCAL_CFLAGS := -Wall -Werror
LOCAL_SHARED_LIBRARIES := libmedia libstagefright libbinder libutils liblog
LOCAL_MODULE:= libmediaextractorservice
include $(BUILD_SHARED_LIBRARY)
@@ -21,6 +22,7 @@
LOCAL_MODULE:= mediaextractor
LOCAL_INIT_RC := mediaextractor.rc
LOCAL_C_INCLUDES := frameworks/av/media/libmedia
+LOCAL_CFLAGS := -Wall -Werror
include $(BUILD_EXECUTABLE)
# service seccomp filter