From 3a0ef0dc71f3776d115f30d87f1d8867daefea88 Mon Sep 17 00:00:00 2001 From: Andreas Huber Date: Fri, 28 Sep 2012 11:34:41 -0700 Subject: Tell the encoder to emit SPS/PPS before IDR frames in wifi display code. Change-Id: Ic40e09b66784dd2e370d30b688d50561a47ab85a related-to-bug: 7245308 --- media/libstagefright/ACodec.cpp | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'media/libstagefright/ACodec.cpp') diff --git a/media/libstagefright/ACodec.cpp b/media/libstagefright/ACodec.cpp index af7a459..2b4220f 100644 --- a/media/libstagefright/ACodec.cpp +++ b/media/libstagefright/ACodec.cpp @@ -32,6 +32,8 @@ #include #include +#include + #include #include "include/avc_utils.h" @@ -881,6 +883,33 @@ status_t ACodec::configureCodec( } } + int32_t prependSPSPPS; + if (encoder + && msg->findInt32("prepend-sps-pps-to-idr-frames", &prependSPSPPS) + && prependSPSPPS != 0) { + OMX_INDEXTYPE index; + err = mOMX->getExtensionIndex( + mNode, + "OMX.google.android.index.prependSPSPPSToIDRFrames", + &index); + + if (err == OK) { + PrependSPSPPSToIDRFramesParams params; + InitOMXParams(¶ms); + params.bEnable = OMX_TRUE; + + err = mOMX->setParameter( + mNode, index, ¶ms, sizeof(params)); + } + + if (err != OK) { + ALOGE("Encoder could not be configured to emit SPS/PPS before " + "IDR frames. (err %d)", err); + + return err; + } + } + if (!strncasecmp(mime, "video/", 6)) { if (encoder) { err = setupVideoEncoder(mime, msg); -- cgit v1.1