diff options
author | Bodam Nam <bodamnam@google.com> | 2023-03-13 06:15:01 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2023-03-13 06:15:01 +0000 |
commit | 1aa73123a77e8532cff3f3b227dcd929628b151e (patch) | |
tree | d5368b57e9d09f35b1973f588813fdd0eab2bc9d | |
parent | a569cd73a7094f30a1f7a48be1004371e21271e0 (diff) | |
parent | 20f5a73f5753b0a1a0b2a8a3944a934de422eb40 (diff) | |
download | ImsMedia-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>
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); } /* |