summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Dong <jdong@google.com>2010-12-20 21:29:12 -0800
committerJames Dong <jdong@google.com>2010-12-21 10:17:53 -0800
commit7455630fff59ac1b68d67077aba360056ca88ece (patch)
tree03f0bd66394fe53385c5a4da671881d0c1de1516
parent41e7e6f9339cd9181df26ca96f0ac133371bc524 (diff)
downloadframeworks_base-7455630fff59ac1b68d67077aba360056ca88ece.zip
frameworks_base-7455630fff59ac1b68d67077aba360056ca88ece.tar.gz
frameworks_base-7455630fff59ac1b68d67077aba360056ca88ece.tar.bz2
Add more debugging code to track down hang during video recording
bug - 3276561 Change-Id: I1e02590b23031f29bcbfc4a1064f039ed80cb862
-rw-r--r--media/libstagefright/CameraSource.cpp15
-rw-r--r--media/libstagefright/OMXCodec.cpp10
2 files changed, 20 insertions, 5 deletions
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 @@ void CameraSource::releaseCamera() {
}
status_t CameraSource::stop() {
- LOGV("stop");
+ LOGD("stop: E");
Mutex::Autolock autoLock(mLock);
mStarted = false;
mFrameAvailableCondition.signal();
@@ -581,9 +581,11 @@ status_t CameraSource::stop() {
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 @@ status_t CameraSource::stop() {
}
CHECK_EQ(mNumFramesReceived, mNumFramesEncoded + mNumFramesDropped);
+ LOGD("stop: X");
return OK;
}
@@ -666,7 +669,11 @@ status_t CameraSource::read(
{
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;
diff --git a/media/libstagefright/OMXCodec.cpp b/media/libstagefright/OMXCodec.cpp
index 352f9fb..f63774a 100644
--- a/media/libstagefright/OMXCodec.cpp
+++ b/media/libstagefright/OMXCodec.cpp
@@ -3361,7 +3361,15 @@ status_t OMXCodec::read(
}
while (mState != ERROR && !mNoMoreOutputData && mFilledBuffers.empty()) {
- mBufferFilled.wait(mLock);
+ if (mIsEncoder) {
+ if (NO_ERROR != mBufferFilled.waitRelative(mLock, 3000000000LL)) {
+ LOGW("Timed out waiting for buffers from video encoder: %d/%d",
+ countBuffersWeOwn(mPortBuffers[kPortIndexInput]),
+ countBuffersWeOwn(mPortBuffers[kPortIndexOutput]));
+ }
+ } else {
+ mBufferFilled.wait(mLock);
+ }
}
if (mState == ERROR) {