Loading media/libstagefright/wifi-display/MediaSender.cpp +9 −2 Original line number Diff line number Diff line Loading @@ -124,10 +124,14 @@ status_t MediaSender::initAsync( looper()->registerHandler(mTSSender); err = mTSSender->initAsync( transportMode, remoteHost, remoteRTPPort, transportMode, // rtpMode remoteRTCPPort, (transportMode == RTPSender::TRANSPORT_UDP && remoteRTCPPort >= 0) ? transportMode : RTPSender::TRANSPORT_NONE, // rtcpMode localRTPPort); if (err != OK) { Loading Loading @@ -174,10 +178,13 @@ status_t MediaSender::initAsync( looper()->registerHandler(info->mSender); status_t err = info->mSender->initAsync( transportMode, remoteHost, remoteRTPPort, transportMode, // rtpMode remoteRTCPPort, (transportMode == RTPSender::TRANSPORT_UDP && remoteRTCPPort >= 0) ? transportMode : RTPSender::TRANSPORT_NONE, // rtcpMode localRTPPort); if (err != OK) { Loading media/libstagefright/wifi-display/rtp/RTPBase.h +1 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ struct RTPBase { enum TransportMode { TRANSPORT_UNDEFINED, TRANSPORT_NONE, TRANSPORT_UDP, TRANSPORT_TCP, TRANSPORT_TCP_INTERLEAVED, Loading media/libstagefright/wifi-display/rtp/RTPSender.cpp +34 −21 Original line number Diff line number Diff line Loading @@ -38,7 +38,8 @@ RTPSender::RTPSender( const sp<AMessage> ¬ify) : mNetSession(netSession), mNotify(notify), mMode(TRANSPORT_UNDEFINED), mRTPMode(TRANSPORT_UNDEFINED), mRTCPMode(TRANSPORT_UNDEFINED), mRTPSessionID(0), mRTCPSessionID(0), mRTPConnected(false), Loading Loading @@ -74,18 +75,24 @@ int32_t RTPBase::PickRandomRTPPort() { } status_t RTPSender::initAsync( TransportMode mode, const char *remoteHost, int32_t remoteRTPPort, TransportMode rtpMode, int32_t remoteRTCPPort, TransportMode rtcpMode, int32_t *outLocalRTPPort) { if (mMode != TRANSPORT_UNDEFINED || mode == TRANSPORT_UNDEFINED) { if (mRTPMode != TRANSPORT_UNDEFINED || rtpMode == TRANSPORT_UNDEFINED || rtpMode == TRANSPORT_NONE || rtcpMode == TRANSPORT_UNDEFINED) { return INVALID_OPERATION; } CHECK_NE(mMode, TRANSPORT_TCP_INTERLEAVED); CHECK_NE(rtpMode, TRANSPORT_TCP_INTERLEAVED); CHECK_NE(rtcpMode, TRANSPORT_TCP_INTERLEAVED); if (mode == TRANSPORT_TCP && remoteRTCPPort >= 0) { if (rtcpMode == TRANSPORT_NONE && remoteRTCPPort >= 0 || rtcpMode != TRANSPORT_NONE && remoteRTCPPort < 0) { return INVALID_OPERATION; } Loading @@ -105,7 +112,7 @@ status_t RTPSender::initAsync( localRTPPort = PickRandomRTPPort(); status_t err; if (mode == TRANSPORT_UDP) { if (rtpMode == TRANSPORT_UDP) { err = mNetSession->createUDPSession( localRTPPort, remoteHost, Loading @@ -113,7 +120,7 @@ status_t RTPSender::initAsync( rtpNotify, &mRTPSessionID); } else { CHECK_EQ(mode, TRANSPORT_TCP); CHECK_EQ(rtpMode, TRANSPORT_TCP); err = mNetSession->createTCPDatagramSession( localRTPPort, remoteHost, Loading @@ -130,7 +137,7 @@ status_t RTPSender::initAsync( break; } if (mode == TRANSPORT_UDP) { if (rtcpMode == TRANSPORT_UDP) { err = mNetSession->createUDPSession( localRTPPort + 1, remoteHost, Loading @@ -138,7 +145,7 @@ status_t RTPSender::initAsync( rtcpNotify, &mRTCPSessionID); } else { CHECK_EQ(mode, TRANSPORT_TCP); CHECK_EQ(rtcpMode, TRANSPORT_TCP); err = mNetSession->createTCPDatagramSession( localRTPPort + 1, remoteHost, Loading @@ -155,15 +162,20 @@ status_t RTPSender::initAsync( mRTPSessionID = 0; } if (mode == TRANSPORT_UDP) { if (rtpMode == TRANSPORT_UDP) { mRTPConnected = true; } if (rtcpMode == TRANSPORT_UDP) { mRTCPConnected = true; } mMode = mode; mRTPMode = rtpMode; mRTCPMode = rtcpMode; *outLocalRTPPort = localRTPPort; if (mMode == TRANSPORT_UDP) { if (mRTPMode == TRANSPORT_UDP && (mRTCPMode == TRANSPORT_UDP || mRTCPMode == TRANSPORT_NONE)) { notifyInitDone(OK); } Loading Loading @@ -496,13 +508,13 @@ void RTPSender::onNetNotify(bool isRTP, const sp<AMessage> &msg) { mRTCPSessionID = 0; } if (mMode == TRANSPORT_TCP) { if (!mRTPConnected || (mRTCPSessionID > 0 && !mRTCPConnected)) { || (mRTPMode != TRANSPORT_NONE && !mRTCPConnected)) { // We haven't completed initialization, attach the error // to the notification instead. notifyInitDone(err); break; } } notifyError(err); break; Loading @@ -523,20 +535,21 @@ void RTPSender::onNetNotify(bool isRTP, const sp<AMessage> &msg) { case ANetworkSession::kWhatConnected: { CHECK_EQ(mMode, TRANSPORT_TCP); int32_t sessionID; CHECK(msg->findInt32("sessionID", &sessionID)); if (isRTP) { CHECK_EQ(mRTPMode, TRANSPORT_TCP); CHECK_EQ(sessionID, mRTPSessionID); mRTPConnected = true; } else { CHECK_EQ(mRTCPMode, TRANSPORT_TCP); CHECK_EQ(sessionID, mRTCPSessionID); mRTCPConnected = true; } if (mRTPConnected && (mRTCPSessionID == 0 || mRTCPConnected)) { if (mRTPConnected && (mRTCPMode == TRANSPORT_NONE || mRTCPConnected)) { notifyInitDone(OK); } break; Loading media/libstagefright/wifi-display/rtp/RTPSender.h +4 −2 Original line number Diff line number Diff line Loading @@ -43,10 +43,11 @@ struct RTPSender : public RTPBase, public AHandler { const sp<AMessage> ¬ify); status_t initAsync( TransportMode mode, const char *remoteHost, int32_t remoteRTPPort, TransportMode rtpMode, int32_t remoteRTCPPort, TransportMode rtcpMode, int32_t *outLocalRTPPort); status_t queueBuffer( Loading @@ -72,7 +73,8 @@ private: sp<ANetworkSession> mNetSession; sp<AMessage> mNotify; TransportMode mMode; TransportMode mRTPMode; TransportMode mRTCPMode; int32_t mRTPSessionID; int32_t mRTCPSessionID; bool mRTPConnected; Loading Loading
media/libstagefright/wifi-display/MediaSender.cpp +9 −2 Original line number Diff line number Diff line Loading @@ -124,10 +124,14 @@ status_t MediaSender::initAsync( looper()->registerHandler(mTSSender); err = mTSSender->initAsync( transportMode, remoteHost, remoteRTPPort, transportMode, // rtpMode remoteRTCPPort, (transportMode == RTPSender::TRANSPORT_UDP && remoteRTCPPort >= 0) ? transportMode : RTPSender::TRANSPORT_NONE, // rtcpMode localRTPPort); if (err != OK) { Loading Loading @@ -174,10 +178,13 @@ status_t MediaSender::initAsync( looper()->registerHandler(info->mSender); status_t err = info->mSender->initAsync( transportMode, remoteHost, remoteRTPPort, transportMode, // rtpMode remoteRTCPPort, (transportMode == RTPSender::TRANSPORT_UDP && remoteRTCPPort >= 0) ? transportMode : RTPSender::TRANSPORT_NONE, // rtcpMode localRTPPort); if (err != OK) { Loading
media/libstagefright/wifi-display/rtp/RTPBase.h +1 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ struct RTPBase { enum TransportMode { TRANSPORT_UNDEFINED, TRANSPORT_NONE, TRANSPORT_UDP, TRANSPORT_TCP, TRANSPORT_TCP_INTERLEAVED, Loading
media/libstagefright/wifi-display/rtp/RTPSender.cpp +34 −21 Original line number Diff line number Diff line Loading @@ -38,7 +38,8 @@ RTPSender::RTPSender( const sp<AMessage> ¬ify) : mNetSession(netSession), mNotify(notify), mMode(TRANSPORT_UNDEFINED), mRTPMode(TRANSPORT_UNDEFINED), mRTCPMode(TRANSPORT_UNDEFINED), mRTPSessionID(0), mRTCPSessionID(0), mRTPConnected(false), Loading Loading @@ -74,18 +75,24 @@ int32_t RTPBase::PickRandomRTPPort() { } status_t RTPSender::initAsync( TransportMode mode, const char *remoteHost, int32_t remoteRTPPort, TransportMode rtpMode, int32_t remoteRTCPPort, TransportMode rtcpMode, int32_t *outLocalRTPPort) { if (mMode != TRANSPORT_UNDEFINED || mode == TRANSPORT_UNDEFINED) { if (mRTPMode != TRANSPORT_UNDEFINED || rtpMode == TRANSPORT_UNDEFINED || rtpMode == TRANSPORT_NONE || rtcpMode == TRANSPORT_UNDEFINED) { return INVALID_OPERATION; } CHECK_NE(mMode, TRANSPORT_TCP_INTERLEAVED); CHECK_NE(rtpMode, TRANSPORT_TCP_INTERLEAVED); CHECK_NE(rtcpMode, TRANSPORT_TCP_INTERLEAVED); if (mode == TRANSPORT_TCP && remoteRTCPPort >= 0) { if (rtcpMode == TRANSPORT_NONE && remoteRTCPPort >= 0 || rtcpMode != TRANSPORT_NONE && remoteRTCPPort < 0) { return INVALID_OPERATION; } Loading @@ -105,7 +112,7 @@ status_t RTPSender::initAsync( localRTPPort = PickRandomRTPPort(); status_t err; if (mode == TRANSPORT_UDP) { if (rtpMode == TRANSPORT_UDP) { err = mNetSession->createUDPSession( localRTPPort, remoteHost, Loading @@ -113,7 +120,7 @@ status_t RTPSender::initAsync( rtpNotify, &mRTPSessionID); } else { CHECK_EQ(mode, TRANSPORT_TCP); CHECK_EQ(rtpMode, TRANSPORT_TCP); err = mNetSession->createTCPDatagramSession( localRTPPort, remoteHost, Loading @@ -130,7 +137,7 @@ status_t RTPSender::initAsync( break; } if (mode == TRANSPORT_UDP) { if (rtcpMode == TRANSPORT_UDP) { err = mNetSession->createUDPSession( localRTPPort + 1, remoteHost, Loading @@ -138,7 +145,7 @@ status_t RTPSender::initAsync( rtcpNotify, &mRTCPSessionID); } else { CHECK_EQ(mode, TRANSPORT_TCP); CHECK_EQ(rtcpMode, TRANSPORT_TCP); err = mNetSession->createTCPDatagramSession( localRTPPort + 1, remoteHost, Loading @@ -155,15 +162,20 @@ status_t RTPSender::initAsync( mRTPSessionID = 0; } if (mode == TRANSPORT_UDP) { if (rtpMode == TRANSPORT_UDP) { mRTPConnected = true; } if (rtcpMode == TRANSPORT_UDP) { mRTCPConnected = true; } mMode = mode; mRTPMode = rtpMode; mRTCPMode = rtcpMode; *outLocalRTPPort = localRTPPort; if (mMode == TRANSPORT_UDP) { if (mRTPMode == TRANSPORT_UDP && (mRTCPMode == TRANSPORT_UDP || mRTCPMode == TRANSPORT_NONE)) { notifyInitDone(OK); } Loading Loading @@ -496,13 +508,13 @@ void RTPSender::onNetNotify(bool isRTP, const sp<AMessage> &msg) { mRTCPSessionID = 0; } if (mMode == TRANSPORT_TCP) { if (!mRTPConnected || (mRTCPSessionID > 0 && !mRTCPConnected)) { || (mRTPMode != TRANSPORT_NONE && !mRTCPConnected)) { // We haven't completed initialization, attach the error // to the notification instead. notifyInitDone(err); break; } } notifyError(err); break; Loading @@ -523,20 +535,21 @@ void RTPSender::onNetNotify(bool isRTP, const sp<AMessage> &msg) { case ANetworkSession::kWhatConnected: { CHECK_EQ(mMode, TRANSPORT_TCP); int32_t sessionID; CHECK(msg->findInt32("sessionID", &sessionID)); if (isRTP) { CHECK_EQ(mRTPMode, TRANSPORT_TCP); CHECK_EQ(sessionID, mRTPSessionID); mRTPConnected = true; } else { CHECK_EQ(mRTCPMode, TRANSPORT_TCP); CHECK_EQ(sessionID, mRTCPSessionID); mRTCPConnected = true; } if (mRTPConnected && (mRTCPSessionID == 0 || mRTCPConnected)) { if (mRTPConnected && (mRTCPMode == TRANSPORT_NONE || mRTCPConnected)) { notifyInitDone(OK); } break; Loading
media/libstagefright/wifi-display/rtp/RTPSender.h +4 −2 Original line number Diff line number Diff line Loading @@ -43,10 +43,11 @@ struct RTPSender : public RTPBase, public AHandler { const sp<AMessage> ¬ify); status_t initAsync( TransportMode mode, const char *remoteHost, int32_t remoteRTPPort, TransportMode rtpMode, int32_t remoteRTCPPort, TransportMode rtcpMode, int32_t *outLocalRTPPort); status_t queueBuffer( Loading @@ -72,7 +73,8 @@ private: sp<ANetworkSession> mNetSession; sp<AMessage> mNotify; TransportMode mMode; TransportMode mRTPMode; TransportMode mRTCPMode; int32_t mRTPSessionID; int32_t mRTCPSessionID; bool mRTPConnected; Loading