Skip to content

Commit d33b388

Browse files
theandi666Android (Google) Code Review
authored andcommitted
Merge "Signal an appropriate error even if there are no active streams yet."
2 parents 553e547 + 7922619 commit d33b388

File tree

6 files changed

+32
-27
lines changed

6 files changed

+32
-27
lines changed

media/libmediaplayerservice/nuplayer/HTTPLiveSource.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ NuPlayer::HTTPLiveSource::HTTPLiveSource(
4141
mUIDValid(uidValid),
4242
mUID(uid),
4343
mFlags(0),
44-
mEOS(false),
44+
mFinalResult(OK),
4545
mOffset(0) {
4646
if (headers) {
4747
mExtraHeaders = *headers;
@@ -95,9 +95,9 @@ sp<MetaData> NuPlayer::HTTPLiveSource::getFormat(bool audio) {
9595
return source->getFormat();
9696
}
9797

98-
bool NuPlayer::HTTPLiveSource::feedMoreTSData() {
99-
if (mEOS) {
100-
return false;
98+
status_t NuPlayer::HTTPLiveSource::feedMoreTSData() {
99+
if (mFinalResult != OK) {
100+
return mFinalResult;
101101
}
102102

103103
sp<LiveDataSource> source =
@@ -111,12 +111,12 @@ bool NuPlayer::HTTPLiveSource::feedMoreTSData() {
111111
break;
112112
} else if (n < 0) {
113113
if (n != ERROR_END_OF_STREAM) {
114-
LOGI("input data EOS reached, error %d", n);
114+
LOGI("input data EOS reached, error %ld", n);
115115
} else {
116116
LOGI("input data EOS reached.");
117117
}
118118
mTSParser->signalEOS(n);
119-
mEOS = true;
119+
mFinalResult = n;
120120
break;
121121
} else {
122122
if (buffer[0] == 0x00) {
@@ -133,7 +133,7 @@ bool NuPlayer::HTTPLiveSource::feedMoreTSData() {
133133
if (err != OK) {
134134
LOGE("TS Parser returned error %d", err);
135135
mTSParser->signalEOS(err);
136-
mEOS = true;
136+
mFinalResult = err;
137137
break;
138138
}
139139
}
@@ -142,7 +142,7 @@ bool NuPlayer::HTTPLiveSource::feedMoreTSData() {
142142
}
143143
}
144144

145-
return true;
145+
return OK;
146146
}
147147

148148
status_t NuPlayer::HTTPLiveSource::dequeueAccessUnit(
@@ -172,7 +172,7 @@ status_t NuPlayer::HTTPLiveSource::getDuration(int64_t *durationUs) {
172172
status_t NuPlayer::HTTPLiveSource::seekTo(int64_t seekTimeUs) {
173173
// We need to make sure we're not seeking until we have seen the very first
174174
// PTS timestamp in the whole stream (from the beginning of the stream).
175-
while (!mTSParser->PTSTimeDeltaEstablished() && feedMoreTSData()) {
175+
while (!mTSParser->PTSTimeDeltaEstablished() && feedMoreTSData() == OK) {
176176
usleep(100000);
177177
}
178178

media/libmediaplayerservice/nuplayer/HTTPLiveSource.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,7 @@ struct NuPlayer::HTTPLiveSource : public NuPlayer::Source {
3535

3636
virtual void start();
3737

38-
// Returns true iff more data was available, false on EOS.
39-
virtual bool feedMoreTSData();
38+
virtual status_t feedMoreTSData();
4039

4140
virtual sp<MetaData> getFormat(bool audio);
4241
virtual status_t dequeueAccessUnit(bool audio, sp<ABuffer> *accessUnit);
@@ -59,7 +58,7 @@ struct NuPlayer::HTTPLiveSource : public NuPlayer::Source {
5958
bool mUIDValid;
6059
uid_t mUID;
6160
uint32_t mFlags;
62-
bool mEOS;
61+
status_t mFinalResult;
6362
off64_t mOffset;
6463
sp<ALooper> mLiveLooper;
6564
sp<LiveSession> mLiveSession;

media/libmediaplayerservice/nuplayer/NuPlayer.cpp

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -235,11 +235,17 @@ void NuPlayer::onMessageReceived(const sp<AMessage> &msg) {
235235
instantiateDecoder(true, &mAudioDecoder);
236236
}
237237

238-
if (!mSource->feedMoreTSData()) {
238+
status_t err;
239+
if ((err = mSource->feedMoreTSData()) != OK) {
239240
if (mAudioDecoder == NULL && mVideoDecoder == NULL) {
240241
// We're not currently decoding anything (no audio or
241242
// video tracks found) and we just ran out of input data.
242-
notifyListener(MEDIA_PLAYBACK_COMPLETE, 0, 0);
243+
244+
if (err == ERROR_END_OF_STREAM) {
245+
notifyListener(MEDIA_PLAYBACK_COMPLETE, 0, 0);
246+
} else {
247+
notifyListener(MEDIA_ERROR, MEDIA_ERROR_UNKNOWN, err);
248+
}
243249
}
244250
break;
245251
}
@@ -267,7 +273,7 @@ void NuPlayer::onMessageReceived(const sp<AMessage> &msg) {
267273
audio, codecRequest);
268274

269275
if (err == -EWOULDBLOCK) {
270-
if (mSource->feedMoreTSData()) {
276+
if (mSource->feedMoreTSData() == OK) {
271277
msg->post();
272278
}
273279
}

media/libmediaplayerservice/nuplayer/NuPlayerSource.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,9 @@ struct NuPlayer::Source : public RefBase {
2929

3030
virtual void start() = 0;
3131

32-
// Returns true iff more data was available, false on EOS.
33-
virtual bool feedMoreTSData() = 0;
32+
// Returns OK iff more data was available,
33+
// an error or ERROR_END_OF_STREAM if not.
34+
virtual status_t feedMoreTSData() = 0;
3435

3536
virtual sp<MetaData> getFormat(bool audio) = 0;
3637

media/libmediaplayerservice/nuplayer/StreamingSource.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ namespace android {
3434

3535
NuPlayer::StreamingSource::StreamingSource(const sp<IStreamSource> &source)
3636
: mSource(source),
37-
mEOS(false) {
37+
mFinalResult(OK) {
3838
}
3939

4040
NuPlayer::StreamingSource::~StreamingSource() {
@@ -47,9 +47,9 @@ void NuPlayer::StreamingSource::start() {
4747
mStreamListener->start();
4848
}
4949

50-
bool NuPlayer::StreamingSource::feedMoreTSData() {
51-
if (mEOS) {
52-
return false;
50+
status_t NuPlayer::StreamingSource::feedMoreTSData() {
51+
if (mFinalResult != OK) {
52+
return mFinalResult;
5353
}
5454

5555
for (int32_t i = 0; i < 50; ++i) {
@@ -60,7 +60,7 @@ bool NuPlayer::StreamingSource::feedMoreTSData() {
6060
if (n == 0) {
6161
LOGI("input data EOS reached.");
6262
mTSParser->signalEOS(ERROR_END_OF_STREAM);
63-
mEOS = true;
63+
mFinalResult = ERROR_END_OF_STREAM;
6464
break;
6565
} else if (n == INFO_DISCONTINUITY) {
6666
ATSParser::DiscontinuityType type = ATSParser::DISCONTINUITY_SEEK;
@@ -92,14 +92,14 @@ bool NuPlayer::StreamingSource::feedMoreTSData() {
9292
LOGE("TS Parser returned error %d", err);
9393

9494
mTSParser->signalEOS(err);
95-
mEOS = true;
95+
mFinalResult = err;
9696
break;
9797
}
9898
}
9999
}
100100
}
101101

102-
return true;
102+
return OK;
103103
}
104104

105105
sp<MetaData> NuPlayer::StreamingSource::getFormat(bool audio) {

media/libmediaplayerservice/nuplayer/StreamingSource.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,7 @@ struct NuPlayer::StreamingSource : public NuPlayer::Source {
3131

3232
virtual void start();
3333

34-
// Returns true iff more data was available, false on EOS.
35-
virtual bool feedMoreTSData();
34+
virtual status_t feedMoreTSData();
3635

3736
virtual sp<MetaData> getFormat(bool audio);
3837
virtual status_t dequeueAccessUnit(bool audio, sp<ABuffer> *accessUnit);
@@ -42,7 +41,7 @@ struct NuPlayer::StreamingSource : public NuPlayer::Source {
4241

4342
private:
4443
sp<IStreamSource> mSource;
45-
bool mEOS;
44+
status_t mFinalResult;
4645
sp<NuPlayerStreamListener> mStreamListener;
4746
sp<ATSParser> mTSParser;
4847

0 commit comments

Comments
 (0)