VT: Enhancements on RTP depacketizer (2)
- Send FIR if there was no I-frame within a sec in packetLost
- Fixed an issue dropped frame even it is completed. caused by
ABuffer marked as 'damaged'.
- Provides completed I-Frame only to prevent codec stuck.
- Change time mapping as realtime since rtp time is already covered
by jitter buffer.
- Removed periodic RTCP:FIR requests if video call. Cause i-frame
insertion should happened only if video stream is broken.
- Give default value for uninitialize TrackInfo Value because
video stucked at the first frame all the times by Uninitialized
trash TimeScale & NormalPlaytime values make AccessUnit's ntp time
wrong.
Bug: 165061754
Change-Id: Ied41ea57d4fa96d4c05d7f8eba3d96bcb8f3fc69
Signed-off-by: Kim Sungyeon <sy85.kim@samsung.com>
Signed-off-by: Byeongjo Park <bjo.park@samsung.com>
diff --git a/media/libmediaplayerservice/nuplayer/RTPSource.cpp b/media/libmediaplayerservice/nuplayer/RTPSource.cpp
index f2bb896..5388bfd 100644
--- a/media/libmediaplayerservice/nuplayer/RTPSource.cpp
+++ b/media/libmediaplayerservice/nuplayer/RTPSource.cpp
@@ -135,11 +135,16 @@
if (info->mIsAudio) {
mAudioTrack = source;
+ info->mTimeScale = 16000;
} else {
mVideoTrack = source;
+ info->mTimeScale = 90000;
}
info->mSource = source;
+ info->mRTPTime = 0;
+ info->mNormalPlaytimeUs = 0;
+ info->mNPTMappingValid = false;
}
if (mInPreparationPhase) {
@@ -346,6 +351,11 @@
schedulePollBuffering();
}
+bool NuPlayer::RTPSource::isRealTime() const {
+ ALOGD("RTPSource::isRealTime=%d", true);
+ return true;
+}
+
void NuPlayer::RTPSource::onMessageReceived(const sp<AMessage> &msg) {
ALOGV("onMessageReceived =%d", msg->what());
@@ -428,7 +438,6 @@
source->queueAccessUnit(accessUnit);
break;
}
- */
int64_t nptUs =
((double)rtpTime - (double)info->mRTPTime)
@@ -436,7 +445,8 @@
* 1000000ll
+ info->mNormalPlaytimeUs;
- accessUnit->meta()->setInt64("timeUs", nptUs);
+ */
+ accessUnit->meta()->setInt64("timeUs", ALooper::GetNowUs());
source->queueAccessUnit(accessUnit);
}