Loading media/libmediaplayer2/mediaplayer2.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -403,6 +403,15 @@ status_t MediaPlayer2::setDataSource(const sp<DataSourceDesc> &dsd) { if (dsd == NULL) { return BAD_VALUE; } // Microsecond is used in NuPlayer2. if (dsd->mStartPositionMs > INT64_MAX / 1000) { dsd->mStartPositionMs = INT64_MAX / 1000; ALOGW("setDataSource, start poistion clamped to %lld ms", (long long)dsd->mStartPositionMs); } if (dsd->mEndPositionMs > INT64_MAX / 1000) { dsd->mEndPositionMs = INT64_MAX / 1000; ALOGW("setDataSource, end poistion clamped to %lld ms", (long long)dsd->mStartPositionMs); } ALOGV("setDataSource type(%d), srcId(%lld)", dsd->mType, (long long)dsd->mId); sp<MediaPlayer2Interface> oldPlayer; Loading media/libmediaplayer2/nuplayer2/GenericSource2.cpp +15 −7 Original line number Diff line number Diff line Loading @@ -335,7 +335,7 @@ NuPlayer2::GenericSource2::~GenericSource2() { resetDataSource(); } void NuPlayer2::GenericSource2::prepareAsync() { void NuPlayer2::GenericSource2::prepareAsync(int64_t startTimeUs) { Mutex::Autolock _l(mLock); ALOGV("prepareAsync: (looper: %d)", (mLooper != NULL)); Loading @@ -350,10 +350,12 @@ void NuPlayer2::GenericSource2::prepareAsync() { } sp<AMessage> msg = new AMessage(kWhatPrepareAsync, this); msg->setInt64("startTimeUs", startTimeUs); msg->post(); } void NuPlayer2::GenericSource2::onPrepareAsync() { void NuPlayer2::GenericSource2::onPrepareAsync(int64_t startTimeUs) { ALOGV("onPrepareAsync: mDataSource: %d", (mDataSource != NULL)); // delayed data source creation Loading Loading @@ -429,6 +431,7 @@ void NuPlayer2::GenericSource2::onPrepareAsync() { FLAG_CAN_SEEK_FORWARD | FLAG_CAN_SEEK); doSeek(startTimeUs, MediaPlayer2SeekMode::SEEK_CLOSEST); finishPrepareAsync(); ALOGV("onPrepareAsync: Done"); Loading @@ -440,6 +443,7 @@ void NuPlayer2::GenericSource2::finishPrepareAsync() { if (mIsStreaming) { mCachedSource->resumeFetchingIfNecessary(); mPreparing = true; ++mPollBufferingGeneration; schedulePollBuffering(); } else { notifyPrepared(); Loading Loading @@ -544,7 +548,9 @@ void NuPlayer2::GenericSource2::onMessageReceived(const sp<AMessage> &msg) { switch (msg->what()) { case kWhatPrepareAsync: { onPrepareAsync(); int64_t startTimeUs; CHECK(msg->findInt64("startTimeUs", &startTimeUs)); onPrepareAsync(startTimeUs); break; } case kWhatFetchSubtitleData: Loading Loading @@ -1443,11 +1449,13 @@ void NuPlayer2::GenericSource2::notifyBufferingUpdate(int32_t percentage) { } void NuPlayer2::GenericSource2::schedulePollBuffering() { if (mIsStreaming) { sp<AMessage> msg = new AMessage(kWhatPollBuffering, this); msg->setInt32("generation", mPollBufferingGeneration); // Enquires buffering status every second. msg->post(1000000ll); } } void NuPlayer2::GenericSource2::onPollBuffering() { status_t finalStatus = UNKNOWN_ERROR; Loading media/libmediaplayer2/nuplayer2/GenericSource2.h +2 −2 Original line number Diff line number Diff line Loading @@ -62,7 +62,7 @@ struct NuPlayer2::GenericSource2 : public NuPlayer2::Source, BufferingSettings* buffering /* nonnull */) override; virtual status_t setBufferingSettings(const BufferingSettings& buffering) override; virtual void prepareAsync(); virtual void prepareAsync(int64_t startTimeUs); virtual void start(); virtual void stop(); Loading Loading @@ -194,7 +194,7 @@ private: void onSeek(const sp<AMessage>& msg); status_t doSeek(int64_t seekTimeUs, MediaPlayer2SeekMode mode); void onPrepareAsync(); void onPrepareAsync(int64_t startTimeUs); void fetchTextData( uint32_t what, media_track_type type, Loading media/libmediaplayer2/nuplayer2/HTTPLiveSource2.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -99,7 +99,8 @@ status_t NuPlayer2::HTTPLiveSource2::setBufferingSettings(const BufferingSetting return OK; } void NuPlayer2::HTTPLiveSource2::prepareAsync() { // TODO: fetch data starting from |startTimeUs| void NuPlayer2::HTTPLiveSource2::prepareAsync(int64_t /* startTimeUs */) { if (mLiveLooper == NULL) { mLiveLooper = new ALooper; mLiveLooper->setName("http live"); Loading media/libmediaplayer2/nuplayer2/HTTPLiveSource2.h +1 −1 Original line number Diff line number Diff line Loading @@ -38,7 +38,7 @@ struct NuPlayer2::HTTPLiveSource2 : public NuPlayer2::Source { BufferingSettings* buffering /* nonnull */) override; virtual status_t setBufferingSettings(const BufferingSettings& buffering) override; virtual void prepareAsync(); virtual void prepareAsync(int64_t startTimeUs); virtual void start(); virtual status_t dequeueAccessUnit(bool audio, sp<ABuffer> *accessUnit); Loading Loading
media/libmediaplayer2/mediaplayer2.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -403,6 +403,15 @@ status_t MediaPlayer2::setDataSource(const sp<DataSourceDesc> &dsd) { if (dsd == NULL) { return BAD_VALUE; } // Microsecond is used in NuPlayer2. if (dsd->mStartPositionMs > INT64_MAX / 1000) { dsd->mStartPositionMs = INT64_MAX / 1000; ALOGW("setDataSource, start poistion clamped to %lld ms", (long long)dsd->mStartPositionMs); } if (dsd->mEndPositionMs > INT64_MAX / 1000) { dsd->mEndPositionMs = INT64_MAX / 1000; ALOGW("setDataSource, end poistion clamped to %lld ms", (long long)dsd->mStartPositionMs); } ALOGV("setDataSource type(%d), srcId(%lld)", dsd->mType, (long long)dsd->mId); sp<MediaPlayer2Interface> oldPlayer; Loading
media/libmediaplayer2/nuplayer2/GenericSource2.cpp +15 −7 Original line number Diff line number Diff line Loading @@ -335,7 +335,7 @@ NuPlayer2::GenericSource2::~GenericSource2() { resetDataSource(); } void NuPlayer2::GenericSource2::prepareAsync() { void NuPlayer2::GenericSource2::prepareAsync(int64_t startTimeUs) { Mutex::Autolock _l(mLock); ALOGV("prepareAsync: (looper: %d)", (mLooper != NULL)); Loading @@ -350,10 +350,12 @@ void NuPlayer2::GenericSource2::prepareAsync() { } sp<AMessage> msg = new AMessage(kWhatPrepareAsync, this); msg->setInt64("startTimeUs", startTimeUs); msg->post(); } void NuPlayer2::GenericSource2::onPrepareAsync() { void NuPlayer2::GenericSource2::onPrepareAsync(int64_t startTimeUs) { ALOGV("onPrepareAsync: mDataSource: %d", (mDataSource != NULL)); // delayed data source creation Loading Loading @@ -429,6 +431,7 @@ void NuPlayer2::GenericSource2::onPrepareAsync() { FLAG_CAN_SEEK_FORWARD | FLAG_CAN_SEEK); doSeek(startTimeUs, MediaPlayer2SeekMode::SEEK_CLOSEST); finishPrepareAsync(); ALOGV("onPrepareAsync: Done"); Loading @@ -440,6 +443,7 @@ void NuPlayer2::GenericSource2::finishPrepareAsync() { if (mIsStreaming) { mCachedSource->resumeFetchingIfNecessary(); mPreparing = true; ++mPollBufferingGeneration; schedulePollBuffering(); } else { notifyPrepared(); Loading Loading @@ -544,7 +548,9 @@ void NuPlayer2::GenericSource2::onMessageReceived(const sp<AMessage> &msg) { switch (msg->what()) { case kWhatPrepareAsync: { onPrepareAsync(); int64_t startTimeUs; CHECK(msg->findInt64("startTimeUs", &startTimeUs)); onPrepareAsync(startTimeUs); break; } case kWhatFetchSubtitleData: Loading Loading @@ -1443,11 +1449,13 @@ void NuPlayer2::GenericSource2::notifyBufferingUpdate(int32_t percentage) { } void NuPlayer2::GenericSource2::schedulePollBuffering() { if (mIsStreaming) { sp<AMessage> msg = new AMessage(kWhatPollBuffering, this); msg->setInt32("generation", mPollBufferingGeneration); // Enquires buffering status every second. msg->post(1000000ll); } } void NuPlayer2::GenericSource2::onPollBuffering() { status_t finalStatus = UNKNOWN_ERROR; Loading
media/libmediaplayer2/nuplayer2/GenericSource2.h +2 −2 Original line number Diff line number Diff line Loading @@ -62,7 +62,7 @@ struct NuPlayer2::GenericSource2 : public NuPlayer2::Source, BufferingSettings* buffering /* nonnull */) override; virtual status_t setBufferingSettings(const BufferingSettings& buffering) override; virtual void prepareAsync(); virtual void prepareAsync(int64_t startTimeUs); virtual void start(); virtual void stop(); Loading Loading @@ -194,7 +194,7 @@ private: void onSeek(const sp<AMessage>& msg); status_t doSeek(int64_t seekTimeUs, MediaPlayer2SeekMode mode); void onPrepareAsync(); void onPrepareAsync(int64_t startTimeUs); void fetchTextData( uint32_t what, media_track_type type, Loading
media/libmediaplayer2/nuplayer2/HTTPLiveSource2.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -99,7 +99,8 @@ status_t NuPlayer2::HTTPLiveSource2::setBufferingSettings(const BufferingSetting return OK; } void NuPlayer2::HTTPLiveSource2::prepareAsync() { // TODO: fetch data starting from |startTimeUs| void NuPlayer2::HTTPLiveSource2::prepareAsync(int64_t /* startTimeUs */) { if (mLiveLooper == NULL) { mLiveLooper = new ALooper; mLiveLooper->setName("http live"); Loading
media/libmediaplayer2/nuplayer2/HTTPLiveSource2.h +1 −1 Original line number Diff line number Diff line Loading @@ -38,7 +38,7 @@ struct NuPlayer2::HTTPLiveSource2 : public NuPlayer2::Source { BufferingSettings* buffering /* nonnull */) override; virtual status_t setBufferingSettings(const BufferingSettings& buffering) override; virtual void prepareAsync(); virtual void prepareAsync(int64_t startTimeUs); virtual void start(); virtual status_t dequeueAccessUnit(bool audio, sp<ABuffer> *accessUnit); Loading