Loading include/media/stagefright/ACodec.h +4 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,8 @@ struct ACodec : public AHierarchicalStateMachine { void signalResume(); void initiateShutdown(bool keepComponentAllocated = false); void signalSetParameters(const sp<AMessage> &msg); void initiateAllocateComponent(const sp<AMessage> &msg); void initiateConfigureComponent(const sp<AMessage> &msg); void initiateStart(); Loading Loading @@ -105,6 +107,7 @@ private: kWhatConfigureComponent = 'conf', kWhatStart = 'star', kWhatRequestIDRFrame = 'ridr', kWhatSetParameters = 'setP', }; enum { Loading Loading @@ -270,6 +273,7 @@ private: status_t internalError = UNKNOWN_ERROR); status_t requestIDRFrame(); status_t setParameters(const sp<AMessage> ¶ms); DISALLOW_EVIL_CONSTRUCTORS(ACodec); }; Loading include/media/stagefright/MediaCodec.h +5 −0 Original line number Diff line number Diff line Loading @@ -115,6 +115,8 @@ struct MediaCodec : public AHandler { status_t getName(AString *componentName) const; status_t setParameters(const sp<AMessage> ¶ms); protected: virtual ~MediaCodec(); virtual void onMessageReceived(const sp<AMessage> &msg); Loading Loading @@ -157,6 +159,7 @@ private: kWhatRequestIDRFrame = 'ridr', kWhatRequestActivityNotification = 'racN', kWhatGetName = 'getN', kWhatSetParameters = 'setP', }; enum { Loading Loading @@ -230,6 +233,8 @@ private: void postActivityNotificationIfPossible(); status_t onSetParameters(const sp<AMessage> ¶ms); DISALLOW_EVIL_CONSTRUCTORS(MediaCodec); }; Loading media/libstagefright/ACodec.cpp +48 −0 Original line number Diff line number Diff line Loading @@ -374,6 +374,12 @@ void ACodec::initiateSetup(const sp<AMessage> &msg) { msg->post(); } void ACodec::signalSetParameters(const sp<AMessage> ¶ms) { sp<AMessage> msg = new AMessage(kWhatSetParameters, id()); msg->setMessage("params", params); msg->post(); } void ACodec::initiateAllocateComponent(const sp<AMessage> &msg) { msg->setWhat(kWhatAllocateComponent); msg->setTarget(id()); Loading Loading @@ -3550,6 +3556,23 @@ bool ACodec::ExecutingState::onMessageReceived(const sp<AMessage> &msg) { break; } case kWhatSetParameters: { sp<AMessage> params; CHECK(msg->findMessage("params", ¶ms)); status_t err = mCodec->setParameters(params); sp<AMessage> reply; if (msg->findMessage("reply", &reply)) { reply->setInt32("err", err); reply->post(); } handled = true; break; } default: handled = BaseState::onMessageReceived(msg); break; Loading @@ -3558,6 +3581,31 @@ bool ACodec::ExecutingState::onMessageReceived(const sp<AMessage> &msg) { return handled; } status_t ACodec::setParameters(const sp<AMessage> ¶ms) { int32_t videoBitrate; if (params->findInt32("videoBitrate", &videoBitrate)) { OMX_VIDEO_CONFIG_BITRATETYPE configParams; InitOMXParams(&configParams); configParams.nPortIndex = kPortIndexOutput; configParams.nEncodeBitrate = videoBitrate; status_t err = mOMX->setConfig( mNode, OMX_IndexConfigVideoBitrate, &configParams, sizeof(configParams)); if (err != OK) { ALOGE("setConfig(OMX_IndexConfigVideoBitrate, %d) failed w/ err %d", videoBitrate, err); return err; } } return OK; } bool ACodec::ExecutingState::onOMXEvent( OMX_EVENTTYPE event, OMX_U32 data1, OMX_U32 data2) { switch (event) { Loading media/libstagefright/MediaCodec.cpp +31 −0 Original line number Diff line number Diff line Loading @@ -1203,6 +1203,23 @@ void MediaCodec::onMessageReceived(const sp<AMessage> &msg) { break; } case kWhatSetParameters: { uint32_t replyID; CHECK(msg->senderAwaitsResponse(&replyID)); sp<AMessage> params; CHECK(msg->findMessage("params", ¶ms)); status_t err = onSetParameters(params); sp<AMessage> response = new AMessage; response->setInt32("err", err); response->postReply(replyID); break; } default: TRESPASS(); } Loading Loading @@ -1556,4 +1573,18 @@ void MediaCodec::postActivityNotificationIfPossible() { } } status_t MediaCodec::setParameters(const sp<AMessage> ¶ms) { sp<AMessage> msg = new AMessage(kWhatSetParameters, id()); msg->setMessage("params", params); sp<AMessage> response; return PostAndAwaitResponse(msg, &response); } status_t MediaCodec::onSetParameters(const sp<AMessage> ¶ms) { mCodec->signalSetParameters(params); return OK; } } // namespace android media/libstagefright/wifi-display/source/Converter.cpp +14 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,7 @@ Converter::Converter( ,mFirstSilentFrameUs(-1ll) ,mInSilentMode(false) #endif ,mPrevVideoBitrate(-1) { AString mime; CHECK(mInputFormat->findString("mime", &mime)); Loading Loading @@ -185,6 +186,7 @@ status_t Converter::initEncoder() { int32_t audioBitrate = getBitrate("media.wfd.audio-bitrate", 128000); int32_t videoBitrate = getBitrate("media.wfd.video-bitrate", 5000000); mPrevVideoBitrate = videoBitrate; ALOGI("using audio bitrate of %d bps, video bitrate of %d bps", audioBitrate, videoBitrate); Loading Loading @@ -606,6 +608,18 @@ status_t Converter::feedEncoderInputBuffers() { } status_t Converter::doMoreWork() { if (mIsVideo) { int32_t videoBitrate = getBitrate("media.wfd.video-bitrate", 5000000); if (videoBitrate != mPrevVideoBitrate) { sp<AMessage> params = new AMessage; params->setInt32("videoBitrate", videoBitrate); mEncoder->setParameters(params); mPrevVideoBitrate = videoBitrate; } } status_t err; for (;;) { Loading Loading
include/media/stagefright/ACodec.h +4 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,8 @@ struct ACodec : public AHierarchicalStateMachine { void signalResume(); void initiateShutdown(bool keepComponentAllocated = false); void signalSetParameters(const sp<AMessage> &msg); void initiateAllocateComponent(const sp<AMessage> &msg); void initiateConfigureComponent(const sp<AMessage> &msg); void initiateStart(); Loading Loading @@ -105,6 +107,7 @@ private: kWhatConfigureComponent = 'conf', kWhatStart = 'star', kWhatRequestIDRFrame = 'ridr', kWhatSetParameters = 'setP', }; enum { Loading Loading @@ -270,6 +273,7 @@ private: status_t internalError = UNKNOWN_ERROR); status_t requestIDRFrame(); status_t setParameters(const sp<AMessage> ¶ms); DISALLOW_EVIL_CONSTRUCTORS(ACodec); }; Loading
include/media/stagefright/MediaCodec.h +5 −0 Original line number Diff line number Diff line Loading @@ -115,6 +115,8 @@ struct MediaCodec : public AHandler { status_t getName(AString *componentName) const; status_t setParameters(const sp<AMessage> ¶ms); protected: virtual ~MediaCodec(); virtual void onMessageReceived(const sp<AMessage> &msg); Loading Loading @@ -157,6 +159,7 @@ private: kWhatRequestIDRFrame = 'ridr', kWhatRequestActivityNotification = 'racN', kWhatGetName = 'getN', kWhatSetParameters = 'setP', }; enum { Loading Loading @@ -230,6 +233,8 @@ private: void postActivityNotificationIfPossible(); status_t onSetParameters(const sp<AMessage> ¶ms); DISALLOW_EVIL_CONSTRUCTORS(MediaCodec); }; Loading
media/libstagefright/ACodec.cpp +48 −0 Original line number Diff line number Diff line Loading @@ -374,6 +374,12 @@ void ACodec::initiateSetup(const sp<AMessage> &msg) { msg->post(); } void ACodec::signalSetParameters(const sp<AMessage> ¶ms) { sp<AMessage> msg = new AMessage(kWhatSetParameters, id()); msg->setMessage("params", params); msg->post(); } void ACodec::initiateAllocateComponent(const sp<AMessage> &msg) { msg->setWhat(kWhatAllocateComponent); msg->setTarget(id()); Loading Loading @@ -3550,6 +3556,23 @@ bool ACodec::ExecutingState::onMessageReceived(const sp<AMessage> &msg) { break; } case kWhatSetParameters: { sp<AMessage> params; CHECK(msg->findMessage("params", ¶ms)); status_t err = mCodec->setParameters(params); sp<AMessage> reply; if (msg->findMessage("reply", &reply)) { reply->setInt32("err", err); reply->post(); } handled = true; break; } default: handled = BaseState::onMessageReceived(msg); break; Loading @@ -3558,6 +3581,31 @@ bool ACodec::ExecutingState::onMessageReceived(const sp<AMessage> &msg) { return handled; } status_t ACodec::setParameters(const sp<AMessage> ¶ms) { int32_t videoBitrate; if (params->findInt32("videoBitrate", &videoBitrate)) { OMX_VIDEO_CONFIG_BITRATETYPE configParams; InitOMXParams(&configParams); configParams.nPortIndex = kPortIndexOutput; configParams.nEncodeBitrate = videoBitrate; status_t err = mOMX->setConfig( mNode, OMX_IndexConfigVideoBitrate, &configParams, sizeof(configParams)); if (err != OK) { ALOGE("setConfig(OMX_IndexConfigVideoBitrate, %d) failed w/ err %d", videoBitrate, err); return err; } } return OK; } bool ACodec::ExecutingState::onOMXEvent( OMX_EVENTTYPE event, OMX_U32 data1, OMX_U32 data2) { switch (event) { Loading
media/libstagefright/MediaCodec.cpp +31 −0 Original line number Diff line number Diff line Loading @@ -1203,6 +1203,23 @@ void MediaCodec::onMessageReceived(const sp<AMessage> &msg) { break; } case kWhatSetParameters: { uint32_t replyID; CHECK(msg->senderAwaitsResponse(&replyID)); sp<AMessage> params; CHECK(msg->findMessage("params", ¶ms)); status_t err = onSetParameters(params); sp<AMessage> response = new AMessage; response->setInt32("err", err); response->postReply(replyID); break; } default: TRESPASS(); } Loading Loading @@ -1556,4 +1573,18 @@ void MediaCodec::postActivityNotificationIfPossible() { } } status_t MediaCodec::setParameters(const sp<AMessage> ¶ms) { sp<AMessage> msg = new AMessage(kWhatSetParameters, id()); msg->setMessage("params", params); sp<AMessage> response; return PostAndAwaitResponse(msg, &response); } status_t MediaCodec::onSetParameters(const sp<AMessage> ¶ms) { mCodec->signalSetParameters(params); return OK; } } // namespace android
media/libstagefright/wifi-display/source/Converter.cpp +14 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,7 @@ Converter::Converter( ,mFirstSilentFrameUs(-1ll) ,mInSilentMode(false) #endif ,mPrevVideoBitrate(-1) { AString mime; CHECK(mInputFormat->findString("mime", &mime)); Loading Loading @@ -185,6 +186,7 @@ status_t Converter::initEncoder() { int32_t audioBitrate = getBitrate("media.wfd.audio-bitrate", 128000); int32_t videoBitrate = getBitrate("media.wfd.video-bitrate", 5000000); mPrevVideoBitrate = videoBitrate; ALOGI("using audio bitrate of %d bps, video bitrate of %d bps", audioBitrate, videoBitrate); Loading Loading @@ -606,6 +608,18 @@ status_t Converter::feedEncoderInputBuffers() { } status_t Converter::doMoreWork() { if (mIsVideo) { int32_t videoBitrate = getBitrate("media.wfd.video-bitrate", 5000000); if (videoBitrate != mPrevVideoBitrate) { sp<AMessage> params = new AMessage; params->setInt32("videoBitrate", videoBitrate); mEncoder->setParameters(params); mPrevVideoBitrate = videoBitrate; } } status_t err; for (;;) { Loading