Loading media/libstagefright/ACodec.cpp +29 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,8 @@ #include <media/stagefright/OMXClient.h> #include <media/stagefright/OMXCodec.h> #include <media/hardware/HardwareAPI.h> #include <OMX_Component.h> #include "include/avc_utils.h" Loading Loading @@ -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); Loading media/libstagefright/wifi-display/source/Converter.cpp +8 −0 Original line number Diff line number Diff line Loading @@ -53,6 +53,13 @@ Converter::Converter( } mInitCheck = initEncoder(); if (mInitCheck != OK) { if (mEncoder != NULL) { mEncoder->release(); mEncoder.clear(); } } } Converter::~Converter() { Loading Loading @@ -127,6 +134,7 @@ status_t Converter::initEncoder() { mOutputFormat->setInt32("bitrate", videoBitrate); mOutputFormat->setInt32("frame-rate", 24); mOutputFormat->setInt32("i-frame-interval", 1); // Iframes every 1 secs // mOutputFormat->setInt32("prepend-sps-pps-to-idr-frames", 1); } ALOGV("output format is '%s'", mOutputFormat->debugString(0).c_str()); Loading media/libstagefright/wifi-display/source/PlaybackSession.cpp +4 −1 Original line number Diff line number Diff line Loading @@ -846,7 +846,10 @@ status_t WifiDisplaySource::PlaybackSession::addSource( sp<Converter> converter = new Converter(notify, codecLooper, format); CHECK_EQ(converter->initCheck(), (status_t)OK); if (converter->initCheck() != OK) { return converter->initCheck(); } looper()->registerHandler(converter); Loading Loading
media/libstagefright/ACodec.cpp +29 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,8 @@ #include <media/stagefright/OMXClient.h> #include <media/stagefright/OMXCodec.h> #include <media/hardware/HardwareAPI.h> #include <OMX_Component.h> #include "include/avc_utils.h" Loading Loading @@ -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); Loading
media/libstagefright/wifi-display/source/Converter.cpp +8 −0 Original line number Diff line number Diff line Loading @@ -53,6 +53,13 @@ Converter::Converter( } mInitCheck = initEncoder(); if (mInitCheck != OK) { if (mEncoder != NULL) { mEncoder->release(); mEncoder.clear(); } } } Converter::~Converter() { Loading Loading @@ -127,6 +134,7 @@ status_t Converter::initEncoder() { mOutputFormat->setInt32("bitrate", videoBitrate); mOutputFormat->setInt32("frame-rate", 24); mOutputFormat->setInt32("i-frame-interval", 1); // Iframes every 1 secs // mOutputFormat->setInt32("prepend-sps-pps-to-idr-frames", 1); } ALOGV("output format is '%s'", mOutputFormat->debugString(0).c_str()); Loading
media/libstagefright/wifi-display/source/PlaybackSession.cpp +4 −1 Original line number Diff line number Diff line Loading @@ -846,7 +846,10 @@ status_t WifiDisplaySource::PlaybackSession::addSource( sp<Converter> converter = new Converter(notify, codecLooper, format); CHECK_EQ(converter->initCheck(), (status_t)OK); if (converter->initCheck() != OK) { return converter->initCheck(); } looper()->registerHandler(converter); Loading