From a9961f6786d048c247cd41363e2b784e1a5aeab4 Mon Sep 17 00:00:00 2001 From: Manikanta Kanamarlapudi Date: Mon, 28 Sep 2015 16:03:17 +0530 Subject: libstagefright: Set Intra period set intra period for HEVC encoder Change-Id: Id2b3e71b746eaaed76118126d44ad83458d68520 --- media/libavextensions/stagefright/AVExtensions.h | 5 +++++ media/libavextensions/stagefright/AVUtils.cpp | 6 ++++++ media/libstagefright/ACodec.cpp | 4 ++++ 3 files changed, 15 insertions(+) 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 #include #include +#include namespace android { @@ -183,6 +184,10 @@ struct AVUtils { virtual void cacheCaptureBuffers(sp camera, video_encoder encoder); virtual const char *getCustomCodecsLocation(); + virtual void setIntraPeriod( + int nPFrames, int nBFrames, const sp 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::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 + namespace android { // OMX errors are directly mapped into status_t range if @@ -3510,6 +3512,8 @@ status_t ACodec::setupHEVCEncoderParameters(const sp &msg) { frameRate = (float)tmp; } + AVUtils::get()->setIntraPeriod(setPFramesSpacing(iFrameInterval, frameRate), 0, mOMX, mNode); + OMX_VIDEO_PARAM_HEVCTYPE hevcType; InitOMXParams(&hevcType); hevcType.nPortIndex = kPortIndexOutput; -- cgit v1.1