summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/wifi-display/source/PlaybackSession.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'media/libstagefright/wifi-display/source/PlaybackSession.cpp')
-rw-r--r--media/libstagefright/wifi-display/source/PlaybackSession.cpp38
1 files changed, 21 insertions, 17 deletions
diff --git a/media/libstagefright/wifi-display/source/PlaybackSession.cpp b/media/libstagefright/wifi-display/source/PlaybackSession.cpp
index 775f23b..829a16d 100644
--- a/media/libstagefright/wifi-display/source/PlaybackSession.cpp
+++ b/media/libstagefright/wifi-display/source/PlaybackSession.cpp
@@ -75,8 +75,6 @@ struct WifiDisplaySource::PlaybackSession::Track : public AHandler {
status_t start();
void stopAsync();
- bool isStopped() const { return !mStarted; }
-
void queueAccessUnit(const sp<ABuffer> &accessUnit);
sp<ABuffer> dequeueAccessUnit();
@@ -200,6 +198,8 @@ void WifiDisplaySource::PlaybackSession::Track::onMessageReceived(
sp<AMessage> notify = mNotify->dup();
notify->setInt32("what", kWhatStopped);
notify->post();
+
+ ALOGI("kWhatStopped %s posted", mIsAudio ? "audio" : "video");
break;
}
@@ -267,9 +267,11 @@ WifiDisplaySource::PlaybackSession::PlaybackSession(
mNumRTPOctetsSent(0),
mNumSRsSent(0),
mSendSRPending(false),
- mFirstPacketTimeUs(-1ll),
- mHistoryLength(0),
- mTotalBytesSent(0ll)
+ mHistoryLength(0)
+#if TRACK_BANDWIDTH
+ ,mFirstPacketTimeUs(-1ll),
+ ,mTotalBytesSent(0ll)
+#endif
#if LOG_TRANSPORT_STREAM
,mLogFile(NULL)
#endif
@@ -747,21 +749,18 @@ void WifiDisplaySource::PlaybackSession::onMessageReceived(
CHECK(msg->findSize("trackIndex", &trackIndex));
if (what == Track::kWhatStopped) {
- bool allTracksAreStopped = true;
- for (size_t i = 0; i < mTracks.size(); ++i) {
- const sp<Track> &track = mTracks.valueAt(i);
- if (!track->isStopped()) {
- allTracksAreStopped = false;
- break;
- }
- }
+ ALOGI("Track %d stopped", trackIndex);
- if (!allTracksAreStopped) {
+ sp<Track> track = mTracks.valueFor(trackIndex);
+ looper()->unregisterHandler(track->id());
+ mTracks.removeItem(trackIndex);
+ track.clear();
+
+ if (!mTracks.isEmpty()) {
+ ALOGI("not all tracks are stopped yet");
break;
}
- mTracks.clear();
-
mPacketizer.clear();
#if ENABLE_RETRANSMISSION
@@ -1074,12 +1073,15 @@ ssize_t WifiDisplaySource::PlaybackSession::appendTSData(
// flush
int64_t nowUs = ALooper::GetNowUs();
+
+#if TRACK_BANDWIDTH
if (mFirstPacketTimeUs < 0ll) {
mFirstPacketTimeUs = nowUs;
}
+#endif
// 90kHz time scale
- uint32_t rtpTime = ((nowUs - mFirstPacketTimeUs) * 9ll) / 100ll;
+ uint32_t rtpTime = (nowUs * 9ll) / 100ll;
uint8_t *rtp = mTSQueue->data();
rtp[0] = 0x80;
@@ -1115,6 +1117,7 @@ ssize_t WifiDisplaySource::PlaybackSession::appendTSData(
} else {
sendPacket(mRTPSessionID, rtp, mTSQueue->size());
+#if TRACK_BANDWIDTH
mTotalBytesSent += mTSQueue->size();
int64_t delayUs = ALooper::GetNowUs() - mFirstPacketTimeUs;
@@ -1122,6 +1125,7 @@ ssize_t WifiDisplaySource::PlaybackSession::appendTSData(
ALOGV("approx. net bandwidth used: %.2f Mbit/sec",
mTotalBytesSent * 8.0 / delayUs);
}
+#endif
}
mTSQueue->setInt32Data(mRTPSeqNo - 1);