summaryrefslogtreecommitdiffstats
path: root/media
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
commit41152efd144ccf70c380d5c9a32105c02a039f43 (patch)
treedbf46042bb86d5974e9987afc6fff9eb52948651 /media
parent54c02a58e5ad4b7b2668f63caa9d189e958f5544 (diff)
downloadframeworks_av-41152efd144ccf70c380d5c9a32105c02a039f43.zip
frameworks_av-41152efd144ccf70c380d5c9a32105c02a039f43.tar.gz
frameworks_av-41152efd144ccf70c380d5c9a32105c02a039f43.tar.bz2
Add more debugging code to track down hang during video recording
bug - 3276561 Change-Id: I1e02590b23031f29bcbfc4a1064f039ed80cb862
Diffstat (limited to 'media')
-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) {