Loading include/media/stagefright/ACodec.h +1 −0 Original line number Diff line number Diff line Loading @@ -184,6 +184,7 @@ private: bool mChannelMaskPresent; int32_t mChannelMask; status_t setCyclicIntraMacroblockRefresh(const sp<AMessage> &msg, int32_t mode); status_t allocateBuffersOnPort(OMX_U32 portIndex); status_t freeBuffersOnPort(OMX_U32 portIndex); status_t freeBuffer(OMX_U32 portIndex, size_t i); Loading media/libstagefright/ACodec.cpp +49 −1 Original line number Diff line number Diff line Loading @@ -1630,6 +1630,43 @@ status_t ACodec::setupVideoEncoder(const char *mime, const sp<AMessage> &msg) { return err; } status_t ACodec::setCyclicIntraMacroblockRefresh(const sp<AMessage> &msg, int32_t mode) { OMX_VIDEO_PARAM_INTRAREFRESHTYPE params; InitOMXParams(¶ms); params.nPortIndex = kPortIndexOutput; params.eRefreshMode = static_cast<OMX_VIDEO_INTRAREFRESHTYPE>(mode); if (params.eRefreshMode == OMX_VIDEO_IntraRefreshCyclic || params.eRefreshMode == OMX_VIDEO_IntraRefreshBoth) { int32_t mbs; if (!msg->findInt32("intra-refresh-CIR-mbs", &mbs)) { return INVALID_OPERATION; } params.nCirMBs = mbs; } if (params.eRefreshMode == OMX_VIDEO_IntraRefreshAdaptive || params.eRefreshMode == OMX_VIDEO_IntraRefreshBoth) { int32_t mbs; if (!msg->findInt32("intra-refresh-AIR-mbs", &mbs)) { return INVALID_OPERATION; } params.nAirMBs = mbs; int32_t ref; if (!msg->findInt32("intra-refresh-AIR-ref", &ref)) { return INVALID_OPERATION; } params.nAirRef = ref; } status_t err = mOMX->setParameter( mNode, OMX_IndexParamVideoIntraRefresh, ¶ms, sizeof(params)); return err; } static OMX_U32 setPFramesSpacing(int32_t iFramesInterval, int32_t frameRate) { if (iFramesInterval < 0) { return 0xFFFFFFFF; Loading Loading @@ -1825,11 +1862,22 @@ status_t ACodec::setupAVCEncoderParameters(const sp<AMessage> &msg) { frameRate = (float)tmp; } status_t err = OK; int32_t intraRefreshMode = 0; if (msg->findInt32("intra-refresh-mode", &intraRefreshMode)) { err = setCyclicIntraMacroblockRefresh(msg, intraRefreshMode); if (err != OK) { ALOGE("Setting intra macroblock refresh mode (%d) failed: 0x%x", err, intraRefreshMode); return err; } } OMX_VIDEO_PARAM_AVCTYPE h264type; InitOMXParams(&h264type); h264type.nPortIndex = kPortIndexOutput; status_t err = mOMX->getParameter( err = mOMX->getParameter( mNode, OMX_IndexParamVideoAvc, &h264type, sizeof(h264type)); if (err != OK) { Loading Loading
include/media/stagefright/ACodec.h +1 −0 Original line number Diff line number Diff line Loading @@ -184,6 +184,7 @@ private: bool mChannelMaskPresent; int32_t mChannelMask; status_t setCyclicIntraMacroblockRefresh(const sp<AMessage> &msg, int32_t mode); status_t allocateBuffersOnPort(OMX_U32 portIndex); status_t freeBuffersOnPort(OMX_U32 portIndex); status_t freeBuffer(OMX_U32 portIndex, size_t i); Loading
media/libstagefright/ACodec.cpp +49 −1 Original line number Diff line number Diff line Loading @@ -1630,6 +1630,43 @@ status_t ACodec::setupVideoEncoder(const char *mime, const sp<AMessage> &msg) { return err; } status_t ACodec::setCyclicIntraMacroblockRefresh(const sp<AMessage> &msg, int32_t mode) { OMX_VIDEO_PARAM_INTRAREFRESHTYPE params; InitOMXParams(¶ms); params.nPortIndex = kPortIndexOutput; params.eRefreshMode = static_cast<OMX_VIDEO_INTRAREFRESHTYPE>(mode); if (params.eRefreshMode == OMX_VIDEO_IntraRefreshCyclic || params.eRefreshMode == OMX_VIDEO_IntraRefreshBoth) { int32_t mbs; if (!msg->findInt32("intra-refresh-CIR-mbs", &mbs)) { return INVALID_OPERATION; } params.nCirMBs = mbs; } if (params.eRefreshMode == OMX_VIDEO_IntraRefreshAdaptive || params.eRefreshMode == OMX_VIDEO_IntraRefreshBoth) { int32_t mbs; if (!msg->findInt32("intra-refresh-AIR-mbs", &mbs)) { return INVALID_OPERATION; } params.nAirMBs = mbs; int32_t ref; if (!msg->findInt32("intra-refresh-AIR-ref", &ref)) { return INVALID_OPERATION; } params.nAirRef = ref; } status_t err = mOMX->setParameter( mNode, OMX_IndexParamVideoIntraRefresh, ¶ms, sizeof(params)); return err; } static OMX_U32 setPFramesSpacing(int32_t iFramesInterval, int32_t frameRate) { if (iFramesInterval < 0) { return 0xFFFFFFFF; Loading Loading @@ -1825,11 +1862,22 @@ status_t ACodec::setupAVCEncoderParameters(const sp<AMessage> &msg) { frameRate = (float)tmp; } status_t err = OK; int32_t intraRefreshMode = 0; if (msg->findInt32("intra-refresh-mode", &intraRefreshMode)) { err = setCyclicIntraMacroblockRefresh(msg, intraRefreshMode); if (err != OK) { ALOGE("Setting intra macroblock refresh mode (%d) failed: 0x%x", err, intraRefreshMode); return err; } } OMX_VIDEO_PARAM_AVCTYPE h264type; InitOMXParams(&h264type); h264type.nPortIndex = kPortIndexOutput; status_t err = mOMX->getParameter( err = mOMX->getParameter( mNode, OMX_IndexParamVideoAvc, &h264type, sizeof(h264type)); if (err != OK) { Loading