Skip to content

Commit

Permalink
Provide msm7x27a video encoder patch
Browse files Browse the repository at this point in the history
  • Loading branch information
dazjo committed Apr 26, 2015
1 parent 3011829 commit 910cd46
Showing 1 changed file with 66 additions and 0 deletions.
66 changes: 66 additions & 0 deletions patches/frameworks_av/0001-msm7x27a-video-encoder.patch
@@ -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.

0 comments on commit 910cd46

Please sign in to comment.