Add more debugging code to track down hang during video recording
bug - 3276561
Change-Id: I1e02590b23031f29bcbfc4a1064f039ed80cb862
diff --git a/media/libstagefright/CameraSource.cpp b/media/libstagefright/CameraSource.cpp
index 2f3353b..b1c6b18 100644
--- a/media/libstagefright/CameraSource.cpp
+++ b/media/libstagefright/CameraSource.cpp
@@ -573,7 +573,7 @@
}
status_t CameraSource::stop() {
- LOGV("stop");
+ LOGD("stop: E");
Mutex::Autolock autoLock(mLock);
mStarted = false;
mFrameAvailableCondition.signal();
@@ -581,9 +581,11 @@
int64_t token = IPCThreadState::self()->clearCallingIdentity();
releaseQueuedFrames();
while (!mFramesBeingEncoded.empty()) {
- LOGI("Waiting for outstanding frames being encoded: %d",
+ if (NO_ERROR !=
+ mFrameCompleteCondition.waitRelative(mLock, 3000000000LL)) {
+ LOGW("Timed out waiting for outstanding frames being encoded: %d",
mFramesBeingEncoded.size());
- mFrameCompleteCondition.wait(mLock);
+ }
}
stopCameraRecording();
releaseCamera();
@@ -601,6 +603,7 @@
}
CHECK_EQ(mNumFramesReceived, mNumFramesEncoded + mNumFramesDropped);
+ LOGD("stop: X");
return OK;
}
@@ -666,7 +669,11 @@
{
Mutex::Autolock autoLock(mLock);
while (mStarted && mFramesReceived.empty()) {
- mFrameAvailableCondition.wait(mLock);
+ if (NO_ERROR !=
+ mFrameAvailableCondition.waitRelative(mLock, 3000000000LL)) {
+ LOGW("Timed out waiting for incoming camera video frames: %lld us",
+ mLastFrameTimestampUs);
+ }
}
if (!mStarted) {
return OK;