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

Commit a6d72e59 authored by Kim Sungyeon's avatar Kim Sungyeon Committed by Lajos Molnar
Browse files

VT: Report all data about packet receiving up to application



 - A design change of RTP/RTCP recovery logic.
 - It's better to move logics about decision(ex. Call downgrading, TMMBR)
   to application side. So all ingredients for the decision must be sent to upper layer.
 - RTP stastics will be reported to upper layer for every seconds.

Bug: 165061754
Merged-in: I567a55926c27aafb2510313d9cd41acbc8110194
Change-Id: I567a55926c27aafb2510313d9cd41acbc8110194
Signed-off-by: default avatarKim Sungyeon <sy85.kim@samsung.com>
parent 4838661a
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -180,7 +180,10 @@ enum media_parameter_keys {
    KEY_PARAMETER_PLAYBACK_RATE_PERMILLE = 1300,                // set only

    // Set a Parcel containing the value of a parcelled Java AudioAttribute instance
    KEY_PARAMETER_AUDIO_ATTRIBUTES = 1400                       // set only
    KEY_PARAMETER_AUDIO_ATTRIBUTES = 1400,                       // set only

    // Set a Parcel containing the values of RTP attribute
    KEY_PARAMETER_RTP_ATTRIBUTES = 2000                       // set only
};

// Keep INVOKE_ID_* in sync with MediaPlayer.java.
+26 −0
Original line number Diff line number Diff line
@@ -1702,6 +1702,11 @@ void NuPlayer::updateInternalTimers() {
    updateRebufferingTimer(false /* stopping */, false /* exiting */);
}

void NuPlayer::setTargetBitrate(int bitrate) {
    if (mSource != NULL)
        mSource->setTargetBitrate(bitrate);
}

void NuPlayer::onPause() {

    updatePlaybackTimer(true /* stopping */, "onPause");
@@ -2868,6 +2873,27 @@ void NuPlayer::sendIMSRxNotice(const sp<AMessage> &msg) {
            }
            break;
        }
        case NuPlayer::RTPSource::RTP_QUALITY:
        {
            int32_t feedbackType, bitrate;
            int32_t highestSeqNum, baseSeqNum, prevExpected;
            int32_t numBufRecv, prevNumBufRecv;
            CHECK(msg->findInt32("feedback-type", &feedbackType));
            CHECK(msg->findInt32("bit-rate", &bitrate));
            CHECK(msg->findInt32("highest-seq-num", &highestSeqNum));
            CHECK(msg->findInt32("base-seq-num", &baseSeqNum));
            CHECK(msg->findInt32("prev-expected", &prevExpected));
            CHECK(msg->findInt32("num-buf-recv", &numBufRecv));
            CHECK(msg->findInt32("prev-num-buf-recv", &prevNumBufRecv));
            in.writeInt32(feedbackType);
            in.writeInt32(bitrate);
            in.writeInt32(highestSeqNum);
            in.writeInt32(baseSeqNum);
            in.writeInt32(prevExpected);
            in.writeInt32(numBufRecv);
            in.writeInt32(prevNumBufRecv);
            break;
        }
        case NuPlayer::RTPSource::RTP_CVO:
        {
            int32_t cvo;
+2 −0
Original line number Diff line number Diff line
@@ -102,6 +102,8 @@ struct NuPlayer : public AHandler {

    void updateInternalTimers();

    void setTargetBitrate(int bitrate);

protected:
    virtual ~NuPlayer();

+5 −1
Original line number Diff line number Diff line
@@ -817,7 +817,11 @@ void NuPlayerDriver::setAudioSink(const sp<AudioSink> &audioSink) {
}

status_t NuPlayerDriver::setParameter(
        int /* key */, const Parcel & /* request */) {
        int key, const Parcel& request ) {
    if (key == KEY_PARAMETER_RTP_ATTRIBUTES) {
        mPlayer->setTargetBitrate(request.readInt32());
        return OK;
    }
    return INVALID_OPERATION;
}

+2 −0
Original line number Diff line number Diff line
@@ -132,6 +132,8 @@ struct NuPlayer::Source : public AHandler {

    virtual void setOffloadAudio(bool /* offload */) {}

    virtual void setTargetBitrate(int32_t) {}

    // Modular DRM
    virtual status_t prepareDrm(
            const uint8_t /*uuid*/[16], const Vector<uint8_t> &/*drmSessionId*/,
Loading