summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorManikanta Kanamarlapudi <kmanikan@codeaurora.org>2015-09-28 16:03:17 +0530
committerGerrit - the friendly Code Review server <code-review@localhost>2015-10-07 10:40:35 -0700
commita9961f6786d048c247cd41363e2b784e1a5aeab4 (patch)
treeeedcde0f3c776a49b360ed4c674db5ec3ac633bf
parentb3f0834aa448d6b4bf8dbddaff4fbcefa3ede422 (diff)
downloadframeworks_av-a9961f6786d048c247cd41363e2b784e1a5aeab4.zip
frameworks_av-a9961f6786d048c247cd41363e2b784e1a5aeab4.tar.gz
frameworks_av-a9961f6786d048c247cd41363e2b784e1a5aeab4.tar.bz2
libstagefright: Set Intra period
set intra period for HEVC encoder Change-Id: Id2b3e71b746eaaed76118126d44ad83458d68520
-rw-r--r--media/libavextensions/stagefright/AVExtensions.h5
-rw-r--r--media/libavextensions/stagefright/AVUtils.cpp6
-rw-r--r--media/libstagefright/ACodec.cpp4
3 files changed, 15 insertions, 0 deletions
diff --git a/media/libavextensions/stagefright/AVExtensions.h b/media/libavextensions/stagefright/AVExtensions.h
index 832fc28..fc04df1 100644
--- a/media/libavextensions/stagefright/AVExtensions.h
+++ b/media/libavextensions/stagefright/AVExtensions.h
@@ -34,6 +34,7 @@
#include <system/audio.h>
#include <camera/ICamera.h>
#include <media/mediarecorder.h>
+#include <media/IOMX.h>
namespace android {
@@ -183,6 +184,10 @@ struct AVUtils {
virtual void cacheCaptureBuffers(sp<ICamera> camera, video_encoder encoder);
virtual const char *getCustomCodecsLocation();
+ virtual void setIntraPeriod(
+ int nPFrames, int nBFrames, const sp<IOMX> OMXhandle,
+ IOMX::node_id nodeID);
+
private:
HEVCMuxer mHEVCMuxer;
// ----- NO TRESSPASSING BEYOND THIS LINE ------
diff --git a/media/libavextensions/stagefright/AVUtils.cpp b/media/libavextensions/stagefright/AVUtils.cpp
index 9219fc2..324ff9b 100644
--- a/media/libavextensions/stagefright/AVUtils.cpp
+++ b/media/libavextensions/stagefright/AVUtils.cpp
@@ -169,6 +169,12 @@ const char *AVUtils::getCustomCodecsLocation() {
return "/etc/media_codecs.xml";
}
+void AVUtils::setIntraPeriod(
+ int, int, const sp<IOMX>,
+ IOMX::node_id) {
+ return;
+}
+
// ----- NO TRESSPASSING BEYOND THIS LINE ------
AVUtils::AVUtils() {}
diff --git a/media/libstagefright/ACodec.cpp b/media/libstagefright/ACodec.cpp
index 43006f3..78ab3db 100644
--- a/media/libstagefright/ACodec.cpp
+++ b/media/libstagefright/ACodec.cpp
@@ -54,6 +54,8 @@
#include "include/avc_utils.h"
+#include <stagefright/AVExtensions.h>
+
namespace android {
// OMX errors are directly mapped into status_t range if
@@ -3510,6 +3512,8 @@ status_t ACodec::setupHEVCEncoderParameters(const sp<AMessage> &msg) {
frameRate = (float)tmp;
}
+ AVUtils::get()->setIntraPeriod(setPFramesSpacing(iFrameInterval, frameRate), 0, mOMX, mNode);
+
OMX_VIDEO_PARAM_HEVCTYPE hevcType;
InitOMXParams(&hevcType);
hevcType.nPortIndex = kPortIndexOutput;