Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Provide msm7x27a video encoder patch
- Loading branch information
Showing
1 changed file
with
66 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
From 7c5867815a8fcd7c8ae2e419e79929264c9051cd Mon Sep 17 00:00:00 2001 | ||
From: Mahesh Lanka <mlanka@codeaurora.org> | ||
Date: Fri, 23 Dec 2011 13:17:09 +0000 | ||
Subject: [PATCH] libstagefright: Enable meta mode for 7x27a video encoder | ||
|
||
msm7627a family of chipsets supports only one input frame at | ||
one time. camera expects the input frame to be released before | ||
sending another frame. so send one input buffer and available | ||
output bufefrs to video encoder component. Release the input | ||
buffer to camera (to get another frame) after receiving input | ||
frame done callback from video encoder component. | ||
|
||
Change-Id: I8fbc911f046ff7e2a3047dd65d8c09ac2d8608e2 | ||
--- | ||
media/libmediaplayerservice/Android.mk | 4 ++++ | ||
media/libmediaplayerservice/StagefrightRecorder.cpp | 8 ++++++++ | ||
2 files changed, 12 insertions(+) | ||
|
||
diff --git a/media/libmediaplayerservice/Android.mk b/media/libmediaplayerservice/Android.mk | ||
index badb84c..1c8c32d 100644 | ||
--- a/media/libmediaplayerservice/Android.mk | ||
+++ b/media/libmediaplayerservice/Android.mk | ||
@@ -77,6 +77,10 @@ ifeq ($(TARGET_ENABLE_QC_AV_ENHANCEMENTS),true) | ||
endif | ||
endif #TARGET_ENABLE_QC_AV_ENHANCEMENTS | ||
|
||
+ifeq ($(TARGET_BOARD_PLATFORM),msm7x27a) | ||
+ LOCAL_CFLAGS += -DUSE_SUBMIT_ONE_INPUT_BUFFER | ||
+endif | ||
+ | ||
include $(BUILD_SHARED_LIBRARY) | ||
|
||
include $(call all-makefiles-under,$(LOCAL_PATH)) | ||
diff --git a/media/libmediaplayerservice/StagefrightRecorder.cpp b/media/libmediaplayerservice/StagefrightRecorder.cpp | ||
index 5d9245f..4fac975 100644 | ||
--- a/media/libmediaplayerservice/StagefrightRecorder.cpp | ||
+++ b/media/libmediaplayerservice/StagefrightRecorder.cpp | ||
@@ -1284,6 +1284,9 @@ void StagefrightRecorder::clipVideoFrameWidth() { | ||
|
||
status_t StagefrightRecorder::checkVideoEncoderCapabilities( | ||
bool *supportsCameraSourceMetaDataMode) { | ||
+#ifdef USE_SUBMIT_ONE_INPUT_BUFFER | ||
+ *supportsCameraSourceMetaDataMode = true; | ||
+#else | ||
/* hardware codecs must support camera source meta data mode */ | ||
Vector<CodecCapabilities> codecs; | ||
OMXClient client; | ||
@@ -1295,6 +1298,7 @@ status_t StagefrightRecorder::checkVideoEncoderCapabilities( | ||
mVideoEncoder == VIDEO_ENCODER_H264 ? MEDIA_MIMETYPE_VIDEO_AVC : ""), | ||
false /* decoder */, true /* hwCodec */, &codecs); | ||
*supportsCameraSourceMetaDataMode = codecs.size() > 0; | ||
+#endif | ||
ALOGV("encoder %s camera source meta-data mode", | ||
*supportsCameraSourceMetaDataMode ? "supports" : "DOES NOT SUPPORT"); | ||
|
||
@@ -1653,6 +1657,10 @@ status_t StagefrightRecorder::setupVideoEncoder( | ||
uint32_t encoder_flags = 0; | ||
if (mIsMetaDataStoredInVideoBuffers) { | ||
encoder_flags |= OMXCodec::kStoreMetaDataInVideoBuffers; | ||
+#ifdef USE_SUBMIT_ONE_INPUT_BUFFER | ||
+ ALOGW("msm7627 family of chipsets supports, only one buffer at a time"); | ||
+ encoder_flags |= OMXCodec::kOnlySubmitOneInputBufferAtOneTime; | ||
+#endif | ||
} | ||
|
||
// Do not wait for all the input buffers to become available. |