summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/CameraSource.cpp
diff options
context:
space:
mode:
authorJames Dong <jdong@google.com>2010-04-21 16:14:15 -0700
committerJames Dong <jdong@google.com>2010-05-05 11:34:43 -0700
commit13aec890216948b0c364f8f92792129d0335f506 (patch)
tree73b6a98aa3a58fc4091129448561403098acb218 /media/libstagefright/CameraSource.cpp
parentaa9ca29395eebfcfa64e070dc71009b99131769f (diff)
downloadframeworks_av-13aec890216948b0c364f8f92792129d0335f506.zip
frameworks_av-13aec890216948b0c364f8f92792129d0335f506.tar.gz
frameworks_av-13aec890216948b0c364f8f92792129d0335f506.tar.bz2
Support audio and video track interleaving in the recorded mp4 file
Change-Id: Ifa27eb23ee265f84fe06773b29b0eb2b0b075b60
Diffstat (limited to 'media/libstagefright/CameraSource.cpp')
-rw-r--r--media/libstagefright/CameraSource.cpp23
1 files changed, 13 insertions, 10 deletions
diff --git a/media/libstagefright/CameraSource.cpp b/media/libstagefright/CameraSource.cpp
index b07bd0e..b046a9c 100644
--- a/media/libstagefright/CameraSource.cpp
+++ b/media/libstagefright/CameraSource.cpp
@@ -130,8 +130,9 @@ CameraSource::CameraSource(const sp<Camera> &camera)
mHeight(0),
mFirstFrameTimeUs(0),
mLastFrameTimestampUs(0),
- mNumFrames(0),
- mNumFramesReleased(0),
+ mNumFramesReceived(0),
+ mNumFramesEncoded(0),
+ mNumFramesDropped(0),
mStarted(false) {
String8 s = mCamera->getParameters();
printf("params: \"%s\"\n", s.string());
@@ -178,9 +179,11 @@ status_t CameraSource::stop() {
mCamera->stopRecording();
releaseQueuedFrames();
- LOGI("Frames received/released: %d/%d, timestamp (us) last/first: %lld/%lld",
- mNumFrames, mNumFramesReleased,
+ LOGI("Frames received/encoded/dropped: %d/%d/%d, timestamp (us) last/first: %lld/%lld",
+ mNumFramesReceived, mNumFramesEncoded, mNumFramesDropped,
mLastFrameTimestampUs, mFirstFrameTimeUs);
+
+ CHECK_EQ(mNumFramesReceived, mNumFramesEncoded + mNumFramesDropped);
return OK;
}
@@ -190,7 +193,7 @@ void CameraSource::releaseQueuedFrames() {
it = mFrames.begin();
mCamera->releaseRecordingFrame(*it);
mFrames.erase(it);
- ++mNumFramesReleased;
+ ++mNumFramesDropped;
}
}
@@ -231,7 +234,7 @@ status_t CameraSource::read(
frameTime = *mFrameTimes.begin();
mFrameTimes.erase(mFrameTimes.begin());
- ++mNumFramesReleased;
+ ++mNumFramesEncoded;
}
*buffer = new MediaBuffer(frame->size());
@@ -252,15 +255,15 @@ void CameraSource::dataCallbackTimestamp(int64_t timestampUs,
Mutex::Autolock autoLock(mLock);
if (!mStarted) {
mCamera->releaseRecordingFrame(data);
- ++mNumFrames;
- ++mNumFramesReleased;
+ ++mNumFramesReceived;
+ ++mNumFramesDropped;
return;
}
- if (mNumFrames == 0) {
+ if (mNumFramesReceived == 0) {
mFirstFrameTimeUs = timestampUs;
}
- ++mNumFrames;
+ ++mNumFramesReceived;
mFrames.push_back(data);
mFrameTimes.push_back(timestampUs - mFirstFrameTimeUs);