summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBodam Nam <bodamnam@google.com>2023-03-13 06:15:01 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2023-03-13 06:15:01 +0000
commit1aa73123a77e8532cff3f3b227dcd929628b151e (patch)
treed5368b57e9d09f35b1973f588813fdd0eab2bc9d
parenta569cd73a7094f30a1f7a48be1004371e21271e0 (diff)
parent20f5a73f5753b0a1a0b2a8a3944a934de422eb40 (diff)
downloadImsMedia-1aa73123a77e8532cff3f3b227dcd929628b151e.tar.gz
Merge "Fix the video crash in camera and pause image mode" into udc-dev am: 20f5a73f57
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/ImsMedia/+/21644560 Change-Id: Ifc371c76395a1c045d15ae7c502514a105ef8b2a Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/include/video/android/ImsMediaCamera.h2
-rw-r--r--service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/nodes/RtpEncoderNode.cpp4
-rw-r--r--service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/video/android/ImsMediaCamera.cpp56
3 files changed, 31 insertions, 31 deletions
diff --git a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/include/video/android/ImsMediaCamera.h b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/include/video/android/ImsMediaCamera.h
index b77bc135..0a7728a1 100644
--- a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/include/video/android/ImsMediaCamera.h
+++ b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/include/video/android/ImsMediaCamera.h
@@ -101,14 +101,12 @@ public:
sessionOutputs.clear();
targets.clear();
request = nullptr;
- sessionSequenceId = -1;
}
std::vector<ANativeWindow*> outputNativeWindows;
std::vector<ACaptureSessionOutput*> sessionOutputs;
std::vector<ACameraOutputTarget*> targets;
ACaptureRequest* request;
ACameraDevice_request_template requestTemplate;
- int sessionSequenceId;
};
enum kCameraMode
diff --git a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/nodes/RtpEncoderNode.cpp b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/nodes/RtpEncoderNode.cpp
index 63436f91..71903254 100644
--- a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/nodes/RtpEncoderNode.cpp
+++ b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/nodes/RtpEncoderNode.cpp
@@ -527,8 +527,8 @@ void RtpEncoderNode::ProcessVideoData(
if (mCvoValue > 0 && mark && subtype == MEDIASUBTYPE_VIDEO_IDR_FRAME)
{
- mRtpSession->SendRtpPacket(
- mRtpPayloadTx, data, size, timestamp, mark, 0, &mListRtpExtension.front());
+ mRtpSession->SendRtpPacket(mRtpPayloadTx, data, size, timestamp, mark, 0,
+ mListRtpExtension.empty() ? nullptr : &mListRtpExtension.front());
}
else
{
diff --git a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/video/android/ImsMediaCamera.cpp b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/video/android/ImsMediaCamera.cpp
index 36a4f1eb..afca7820 100644
--- a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/video/android/ImsMediaCamera.cpp
+++ b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/video/android/ImsMediaCamera.cpp
@@ -191,7 +191,6 @@ bool ImsMediaCamera::OpenCamera()
return false;
}
- // Create back facing camera device
camera_status_t status = ACameraManager_openCamera(mManager, mActiveCameraId.c_str(),
GetDeviceListener(), &gCameraIds[mActiveCameraId].mDevice);
@@ -220,6 +219,7 @@ bool ImsMediaCamera::OpenCamera()
if (status == ACAMERA_OK)
{
mExposureRange.min = val.data.i64[0];
+
if (mExposureRange.min < kMinExposureTime)
{
mExposureRange.min = kMinExposureTime;
@@ -285,7 +285,7 @@ bool ImsMediaCamera::CreateSession(ANativeWindow* preview, ANativeWindow* record
return false;
}
- if (MatchCaptureSizeRequest(preview) == false)
+ if (!MatchCaptureSizeRequest(preview))
{
IMLOGE0("[CreateSession] resolution is not matched");
return false;
@@ -339,7 +339,7 @@ bool ImsMediaCamera::CreateSession(ANativeWindow* preview, ANativeWindow* record
}
}
- if (gCameraIds[mActiveCameraId].mAvailable == false)
+ if (!gCameraIds[mActiveCameraId].mAvailable)
{
gCondition.wait_timeout(MAX_WAIT_CAMERA);
}
@@ -395,39 +395,41 @@ bool ImsMediaCamera::DeleteSession()
mCaptureSession = nullptr;
}
- for (int idxTarget = 0; idxTarget < mCaptureRequest.outputNativeWindows.size(); idxTarget++)
+ if (mCaptureRequest.request != nullptr)
{
- if (mCaptureRequest.outputNativeWindows[idxTarget] == nullptr)
+ for (int idxTarget = 0; idxTarget < mCaptureRequest.outputNativeWindows.size(); idxTarget++)
{
- continue;
- }
+ if (mCaptureRequest.outputNativeWindows[idxTarget] == nullptr)
+ {
+ continue;
+ }
- status = ACaptureRequest_removeTarget(
- mCaptureRequest.request, mCaptureRequest.targets[idxTarget]);
+ status = ACaptureRequest_removeTarget(
+ mCaptureRequest.request, mCaptureRequest.targets[idxTarget]);
- if (status != ACAMERA_OK)
- {
- IMLOGE1("[DeleteSession] error ACaptureRequest_removeTarget[%s]", GetErrorStr(status));
- }
+ if (status != ACAMERA_OK)
+ {
+ IMLOGE1("[DeleteSession] error ACaptureRequest_removeTarget[%s]",
+ GetErrorStr(status));
+ }
- ACameraOutputTarget_free(mCaptureRequest.targets[idxTarget]);
- status = ACaptureSessionOutputContainer_remove(
- mSessionOutputContainer, mCaptureRequest.sessionOutputs[idxTarget]);
+ ACameraOutputTarget_free(mCaptureRequest.targets[idxTarget]);
+ status = ACaptureSessionOutputContainer_remove(
+ mSessionOutputContainer, mCaptureRequest.sessionOutputs[idxTarget]);
- if (status != ACAMERA_OK)
- {
- IMLOGE1("[DeleteSession] error ACaptureSessionOutputContainer_remove[%s]",
- GetErrorStr(status));
- }
+ if (status != ACAMERA_OK)
+ {
+ IMLOGE1("[DeleteSession] error ACaptureSessionOutputContainer_remove[%s]",
+ GetErrorStr(status));
+ }
- ACaptureSessionOutput_free(mCaptureRequest.sessionOutputs[idxTarget]);
- ANativeWindow_release(mCaptureRequest.outputNativeWindows[idxTarget]);
- }
+ ACaptureSessionOutput_free(mCaptureRequest.sessionOutputs[idxTarget]);
+ ANativeWindow_release(mCaptureRequest.outputNativeWindows[idxTarget]);
+ }
- if (mCaptureRequest.request != nullptr)
- {
IMLOGD0("[DeleteSession] free request");
ACaptureRequest_free(mCaptureRequest.request);
+ mCaptureRequest.request = nullptr;
}
mCaptureRequest.outputNativeWindows.resize(0);
@@ -438,6 +440,7 @@ bool ImsMediaCamera::DeleteSession()
{
IMLOGD0("[DeleteSession] free container");
ACaptureSessionOutputContainer_free(mSessionOutputContainer);
+ mSessionOutputContainer = nullptr;
}
return true;
@@ -575,7 +578,6 @@ void ImsMediaCamera::OnDeviceState(ACameraDevice* dev)
IMLOGW1("[OnDeviceState] device %s is disconnected", id.c_str());
gCameraIds[id].mAvailable = false;
ACameraDevice_close(gCameraIds[id].mDevice);
- gCameraIds.erase(id);
}
/*