Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b486977a authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge changes from topic "rtsp_resume" into sc-dev

* changes:
  RTSP: Notify a seek event to ARTPSource.
  RTSP: RTSP streaming aborted by packet loss.
  RTSP: Do not close a rtsp socket before rtsp:teardown sent.
parents b03bd4e9 a1c64134
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -145,15 +145,17 @@ void NuPlayer::RTSPSource::stop() {
        return;
    }

    // Close socket before posting message to RTSPSource message handler.
    if (mHandler != NULL) {
        close(mHandler->getARTSPConnection()->getSocket());
    }

    sp<AMessage> msg = new AMessage(kWhatDisconnect, this);

    sp<AMessage> dummy;
    msg->postAndAwaitResponse(&dummy);

    // Close socket after posting message to RTSPSource message handler.
    if (mHandler != NULL && mHandler->getARTSPConnection()->getSocket() >= 0) {
        ALOGD("closing rtsp socket if not closed yet.");
        close(mHandler->getARTSPConnection()->getSocket());
    }

}

status_t NuPlayer::RTSPSource::feedMoreTSData() {
+11 −0
Original line number Diff line number Diff line
@@ -594,4 +594,15 @@ sp<MetaData> APacketSource::getFormat() {
    return mFormat;
}

bool APacketSource::isVideo() {
    bool isVideo = false;

    const char *mime;
    if (mFormat->findCString(kKeyMIMEType, &mime)) {
        isVideo = !strncasecmp(mime, "video/", 6);
    }

    return isVideo;
}

}  // namespace android
+2 −0
Original line number Diff line number Diff line
@@ -33,6 +33,8 @@ struct APacketSource : public RefBase {

    virtual sp<MetaData> getFormat();

    bool isVideo();

protected:
    virtual ~APacketSource();

+23 −0
Original line number Diff line number Diff line
@@ -104,6 +104,11 @@ void ARTPConnection::addStream(
    msg->post();
}

void ARTPConnection::seekStream() {
    sp<AMessage> msg = new AMessage(kWhatSeekStream, this);
    msg->post();
}

void ARTPConnection::removeStream(int rtpSocket, int rtcpSocket) {
    sp<AMessage> msg = new AMessage(kWhatRemoveStream, this);
    msg->setInt32("rtp-socket", rtpSocket);
@@ -283,6 +288,12 @@ void ARTPConnection::onMessageReceived(const sp<AMessage> &msg) {
            break;
        }

        case kWhatSeekStream:
        {
            onSeekStream(msg);
            break;
        }

        case kWhatRemoveStream:
        {
            onRemoveStream(msg);
@@ -353,6 +364,18 @@ void ARTPConnection::onAddStream(const sp<AMessage> &msg) {
    }
}

void ARTPConnection::onSeekStream(const sp<AMessage> &msg) {
    (void)msg; // unused param as of now.
    List<StreamInfo>::iterator it = mStreams.begin();
    while (it != mStreams.end()) {
        for (size_t i = 0; i < it->mSources.size(); ++i) {
            sp<ARTPSource> source = it->mSources.valueAt(i);
            source->timeReset();
        }
        ++it;
    }
}

void ARTPConnection::onRemoveStream(const sp<AMessage> &msg) {
    int32_t rtpSocket, rtcpSocket;
    CHECK(msg->findInt32("rtp-socket", &rtpSocket));
+3 −1
Original line number Diff line number Diff line
@@ -40,7 +40,7 @@ struct ARTPConnection : public AHandler {
            const sp<ASessionDescription> &sessionDesc, size_t index,
            const sp<AMessage> &notify,
            bool injected);

    void seekStream();
    void removeStream(int rtpSocket, int rtcpSocket);

    void injectPacket(int index, const sp<ABuffer> &buffer);
@@ -69,6 +69,7 @@ protected:
private:
    enum {
        kWhatAddStream,
        kWhatSeekStream,
        kWhatRemoveStream,
        kWhatPollStreams,
        kWhatInjectPacket,
@@ -94,6 +95,7 @@ private:
    int32_t mCumulativeBytes;

    void onAddStream(const sp<AMessage> &msg);
    void onSeekStream(const sp<AMessage> &msg);
    void onRemoveStream(const sp<AMessage> &msg);
    void onPollStreams();
    void onInjectPacket(const sp<AMessage> &msg);
Loading