From 8480835b4bc1350646376aa7f3ae33742a7adeb1 Mon Sep 17 00:00:00 2001 From: James Dong Date: Tue, 2 Nov 2010 13:20:11 -0700 Subject: Use meta data in the media recording framework o This patch allows us to do 720p video recording Change-Id: I2ea37e80a59630145396b08ebcdc6ee71df53333 --- media/libmediaplayerservice/StagefrightRecorder.cpp | 14 ++++++++++++-- media/libmediaplayerservice/StagefrightRecorder.h | 1 + 2 files changed, 13 insertions(+), 2 deletions(-) (limited to 'media/libmediaplayerservice') diff --git a/media/libmediaplayerservice/StagefrightRecorder.cpp b/media/libmediaplayerservice/StagefrightRecorder.cpp index 913d953..6a25dc5 100644 --- a/media/libmediaplayerservice/StagefrightRecorder.cpp +++ b/media/libmediaplayerservice/StagefrightRecorder.cpp @@ -1035,7 +1035,8 @@ void StagefrightRecorder::clipVideoFrameHeight() { } } -status_t StagefrightRecorder::setupCameraSource(sp *cameraSource) { +status_t StagefrightRecorder::setupCameraSource( + sp *cameraSource) { status_t err = OK; if ((err = checkVideoEncoderCapabilities()) != OK) { return err; @@ -1051,7 +1052,8 @@ status_t StagefrightRecorder::setupCameraSource(sp *cameraSource) *cameraSource = mCameraSourceTimeLapse; } else { *cameraSource = CameraSource::CreateFromCamera( - mCamera, mCameraId, videoSize, mFrameRate, mPreviewSurface); + mCamera, mCameraId, videoSize, mFrameRate, + mPreviewSurface, true /*storeMetaDataInVideoBuffers*/); } CHECK(*cameraSource != NULL); @@ -1067,6 +1069,10 @@ status_t StagefrightRecorder::setupCameraSource(sp *cameraSource) } CHECK(mFrameRate != -1); + + mIsMetaDataStoredInVideoBuffers = + (*cameraSource)->isMetaDataStoredInVideoBuffers(); + return OK; } @@ -1135,6 +1141,9 @@ status_t StagefrightRecorder::setupVideoEncoder( // Use software codec for time lapse uint32_t encoder_flags = (mCaptureTimeLapse) ? OMXCodec::kPreferSoftwareCodecs : 0; + if (mIsMetaDataStoredInVideoBuffers) { + encoder_flags |= OMXCodec::kStoreMetaDataInVideoBuffers; + } sp encoder = OMXCodec::Create( client.interface(), enc_meta, true /* createEncoder */, cameraSource, @@ -1412,6 +1421,7 @@ status_t StagefrightRecorder::reset() { mCaptureAuxVideo = false; mCameraSourceSplitter = NULL; mCameraSourceTimeLapse = NULL; + mIsMetaDataStoredInVideoBuffers = false; mEncoderProfiles = MediaProfiles::getInstance(); mOutputFd = -1; diff --git a/media/libmediaplayerservice/StagefrightRecorder.h b/media/libmediaplayerservice/StagefrightRecorder.h index 7d2549f..d11d7e0 100644 --- a/media/libmediaplayerservice/StagefrightRecorder.h +++ b/media/libmediaplayerservice/StagefrightRecorder.h @@ -103,6 +103,7 @@ private: String8 mParams; int mOutputFd, mOutputFdAux; + bool mIsMetaDataStoredInVideoBuffers; MediaProfiles *mEncoderProfiles; status_t setupMPEG4Recording( -- cgit v1.1