Loading media/libmediaplayerservice/nuplayer/GenericSource.cpp +23 −9 Original line number Diff line number Diff line Loading @@ -88,6 +88,7 @@ void NuPlayer::GenericSource::resetDataSource() { mHTTPService.clear(); mHttpSource.clear(); mDisconnected = false; mUri.clear(); mUriHeaders.clear(); if (mFd >= 0) { Loading Loading @@ -159,15 +160,27 @@ sp<MetaData> NuPlayer::GenericSource::getFileFormatMeta() const { status_t NuPlayer::GenericSource::initFromDataSource() { sp<IMediaExtractor> extractor; CHECK(mDataSource != NULL); sp<DataSource> dataSource = mDataSource; extractor = MediaExtractorFactory::Create(mDataSource, NULL); mLock.unlock(); // This might take long time if data source is not reliable. extractor = MediaExtractorFactory::Create(dataSource, NULL); if (extractor == NULL) { ALOGE("initFromDataSource, cannot create extractor!"); return UNKNOWN_ERROR; } mFileMeta = extractor->getMetaData(); sp<MetaData> fileMeta = extractor->getMetaData(); size_t numtracks = extractor->countTracks(); if (numtracks == 0) { ALOGE("initFromDataSource, source has no track!"); return UNKNOWN_ERROR; } mLock.lock(); mFileMeta = fileMeta; if (mFileMeta != NULL) { int64_t duration; if (mFileMeta->findInt64(kKeyDuration, &duration)) { Loading @@ -177,12 +190,6 @@ status_t NuPlayer::GenericSource::initFromDataSource() { int32_t totalBitrate = 0; size_t numtracks = extractor->countTracks(); if (numtracks == 0) { ALOGE("initFromDataSource, source has no track!"); return UNKNOWN_ERROR; } mMimes.clear(); for (size_t i = 0; i < numtracks; ++i) { Loading Loading @@ -391,9 +398,15 @@ void NuPlayer::GenericSource::onPrepareAsync() { } } mDataSource = DataSourceFactory::CreateFromURI( mLock.unlock(); // This might take long time if connection has some issue. sp<DataSource> dataSource = DataSourceFactory::CreateFromURI( mHTTPService, uri, &mUriHeaders, &contentType, static_cast<HTTPBase *>(mHttpSource.get())); mLock.lock(); if (!mDisconnected) { mDataSource = dataSource; } } else { if (property_get_bool("media.stagefright.extractremote", true) && !FileSource::requiresDrm(mFd, mOffset, mLength, nullptr /* mime */)) { Loading Loading @@ -555,6 +568,7 @@ void NuPlayer::GenericSource::disconnect() { Mutex::Autolock _l(mLock); dataSource = mDataSource; httpSource = mHttpSource; mDisconnected = true; } if (dataSource != NULL) { Loading media/libmediaplayerservice/nuplayer/GenericSource.h +1 −0 Original line number Diff line number Diff line Loading @@ -158,6 +158,7 @@ private: int64_t mOffset; int64_t mLength; bool mDisconnected; sp<DataSource> mDataSource; sp<NuCachedSource2> mCachedSource; sp<DataSource> mHttpSource; Loading Loading
media/libmediaplayerservice/nuplayer/GenericSource.cpp +23 −9 Original line number Diff line number Diff line Loading @@ -88,6 +88,7 @@ void NuPlayer::GenericSource::resetDataSource() { mHTTPService.clear(); mHttpSource.clear(); mDisconnected = false; mUri.clear(); mUriHeaders.clear(); if (mFd >= 0) { Loading Loading @@ -159,15 +160,27 @@ sp<MetaData> NuPlayer::GenericSource::getFileFormatMeta() const { status_t NuPlayer::GenericSource::initFromDataSource() { sp<IMediaExtractor> extractor; CHECK(mDataSource != NULL); sp<DataSource> dataSource = mDataSource; extractor = MediaExtractorFactory::Create(mDataSource, NULL); mLock.unlock(); // This might take long time if data source is not reliable. extractor = MediaExtractorFactory::Create(dataSource, NULL); if (extractor == NULL) { ALOGE("initFromDataSource, cannot create extractor!"); return UNKNOWN_ERROR; } mFileMeta = extractor->getMetaData(); sp<MetaData> fileMeta = extractor->getMetaData(); size_t numtracks = extractor->countTracks(); if (numtracks == 0) { ALOGE("initFromDataSource, source has no track!"); return UNKNOWN_ERROR; } mLock.lock(); mFileMeta = fileMeta; if (mFileMeta != NULL) { int64_t duration; if (mFileMeta->findInt64(kKeyDuration, &duration)) { Loading @@ -177,12 +190,6 @@ status_t NuPlayer::GenericSource::initFromDataSource() { int32_t totalBitrate = 0; size_t numtracks = extractor->countTracks(); if (numtracks == 0) { ALOGE("initFromDataSource, source has no track!"); return UNKNOWN_ERROR; } mMimes.clear(); for (size_t i = 0; i < numtracks; ++i) { Loading Loading @@ -391,9 +398,15 @@ void NuPlayer::GenericSource::onPrepareAsync() { } } mDataSource = DataSourceFactory::CreateFromURI( mLock.unlock(); // This might take long time if connection has some issue. sp<DataSource> dataSource = DataSourceFactory::CreateFromURI( mHTTPService, uri, &mUriHeaders, &contentType, static_cast<HTTPBase *>(mHttpSource.get())); mLock.lock(); if (!mDisconnected) { mDataSource = dataSource; } } else { if (property_get_bool("media.stagefright.extractremote", true) && !FileSource::requiresDrm(mFd, mOffset, mLength, nullptr /* mime */)) { Loading Loading @@ -555,6 +568,7 @@ void NuPlayer::GenericSource::disconnect() { Mutex::Autolock _l(mLock); dataSource = mDataSource; httpSource = mHttpSource; mDisconnected = true; } if (dataSource != NULL) { Loading
media/libmediaplayerservice/nuplayer/GenericSource.h +1 −0 Original line number Diff line number Diff line Loading @@ -158,6 +158,7 @@ private: int64_t mOffset; int64_t mLength; bool mDisconnected; sp<DataSource> mDataSource; sp<NuCachedSource2> mCachedSource; sp<DataSource> mHttpSource; Loading