Loading media/libmediaplayerservice/nuplayer/GenericSource.cpp +32 −23 Original line number Diff line number Diff line Loading @@ -130,23 +130,37 @@ sp<MetaData> NuPlayer::GenericSource::getFileFormatMeta() const { status_t NuPlayer::GenericSource::initFromDataSource() { sp<MediaExtractor> extractor; CHECK(mDataSource != NULL); if (mIsWidevine) { String8 mimeType; float confidence; sp<AMessage> dummy; bool success; bool isWidevineStreaming = false; CHECK(mDataSource != NULL); success = SniffWVM(mDataSource, &mimeType, &confidence, &dummy); if (!success || strcasecmp( if (mIsWidevine) { isWidevineStreaming = SniffWVM( mDataSource, &mimeType, &confidence, &dummy); if (!isWidevineStreaming || strcasecmp( mimeType.string(), MEDIA_MIMETYPE_CONTAINER_WVM)) { ALOGE("unsupported widevine mime: %s", mimeType.string()); return UNKNOWN_ERROR; } } else if (mIsStreaming) { if (mSniffedMIME.empty()) { if (!mDataSource->sniff(&mimeType, &confidence, &dummy)) { return UNKNOWN_ERROR; } mSniffedMIME = mimeType.string(); } isWidevineStreaming = !strcasecmp( mSniffedMIME.c_str(), MEDIA_MIMETYPE_CONTAINER_WVM); } if (isWidevineStreaming) { // we don't want cached source for widevine streaming. mCachedSource.clear(); mDataSource = mHttpSource; mWVMExtractor = new WVMExtractor(mDataSource); mWVMExtractor->setAdaptiveStreamingMode(true); if (mUIDValid) { Loading Loading @@ -181,14 +195,6 @@ status_t NuPlayer::GenericSource::initFromDataSource() { if (mFileMeta->findCString(kKeyMIMEType, &fileMime) && !strncasecmp(fileMime, "video/wvm", 9)) { mIsWidevine = true; if (!mUri.empty()) { // streaming, but the app forgot to specify widevine:// url mWVMExtractor = static_cast<WVMExtractor *>(extractor.get()); mWVMExtractor->setAdaptiveStreamingMode(true); if (mUIDValid) { mWVMExtractor->setUID(mUID); } } } } } Loading Loading @@ -656,10 +662,10 @@ void NuPlayer::GenericSource::sendCacheStats() { int32_t kbps = 0; status_t err = UNKNOWN_ERROR; if (mCachedSource != NULL) { err = mCachedSource->getEstimatedBandwidthKbps(&kbps); } else if (mWVMExtractor != NULL) { if (mWVMExtractor != NULL) { err = mWVMExtractor->getEstimatedBandwidthKbps(&kbps); } else if (mCachedSource != NULL) { err = mCachedSource->getEstimatedBandwidthKbps(&kbps); } if (err == OK) { Loading @@ -681,7 +687,13 @@ void NuPlayer::GenericSource::onPollBuffering() { int64_t cachedDurationUs = -1ll; ssize_t cachedDataRemaining = -1; if (mCachedSource != NULL) { ALOGW_IF(mWVMExtractor != NULL && mCachedSource != NULL, "WVMExtractor and NuCachedSource both present"); if (mWVMExtractor != NULL) { cachedDurationUs = mWVMExtractor->getCachedDurationUs(&finalStatus); } else if (mCachedSource != NULL) { cachedDataRemaining = mCachedSource->approxDataRemaining(&finalStatus); Loading @@ -697,9 +709,6 @@ void NuPlayer::GenericSource::onPollBuffering() { cachedDurationUs = cachedDataRemaining * 8000000ll / bitrate; } } } else if (mWVMExtractor != NULL) { cachedDurationUs = mWVMExtractor->getCachedDurationUs(&finalStatus); } if (finalStatus != OK) { Loading Loading
media/libmediaplayerservice/nuplayer/GenericSource.cpp +32 −23 Original line number Diff line number Diff line Loading @@ -130,23 +130,37 @@ sp<MetaData> NuPlayer::GenericSource::getFileFormatMeta() const { status_t NuPlayer::GenericSource::initFromDataSource() { sp<MediaExtractor> extractor; CHECK(mDataSource != NULL); if (mIsWidevine) { String8 mimeType; float confidence; sp<AMessage> dummy; bool success; bool isWidevineStreaming = false; CHECK(mDataSource != NULL); success = SniffWVM(mDataSource, &mimeType, &confidence, &dummy); if (!success || strcasecmp( if (mIsWidevine) { isWidevineStreaming = SniffWVM( mDataSource, &mimeType, &confidence, &dummy); if (!isWidevineStreaming || strcasecmp( mimeType.string(), MEDIA_MIMETYPE_CONTAINER_WVM)) { ALOGE("unsupported widevine mime: %s", mimeType.string()); return UNKNOWN_ERROR; } } else if (mIsStreaming) { if (mSniffedMIME.empty()) { if (!mDataSource->sniff(&mimeType, &confidence, &dummy)) { return UNKNOWN_ERROR; } mSniffedMIME = mimeType.string(); } isWidevineStreaming = !strcasecmp( mSniffedMIME.c_str(), MEDIA_MIMETYPE_CONTAINER_WVM); } if (isWidevineStreaming) { // we don't want cached source for widevine streaming. mCachedSource.clear(); mDataSource = mHttpSource; mWVMExtractor = new WVMExtractor(mDataSource); mWVMExtractor->setAdaptiveStreamingMode(true); if (mUIDValid) { Loading Loading @@ -181,14 +195,6 @@ status_t NuPlayer::GenericSource::initFromDataSource() { if (mFileMeta->findCString(kKeyMIMEType, &fileMime) && !strncasecmp(fileMime, "video/wvm", 9)) { mIsWidevine = true; if (!mUri.empty()) { // streaming, but the app forgot to specify widevine:// url mWVMExtractor = static_cast<WVMExtractor *>(extractor.get()); mWVMExtractor->setAdaptiveStreamingMode(true); if (mUIDValid) { mWVMExtractor->setUID(mUID); } } } } } Loading Loading @@ -656,10 +662,10 @@ void NuPlayer::GenericSource::sendCacheStats() { int32_t kbps = 0; status_t err = UNKNOWN_ERROR; if (mCachedSource != NULL) { err = mCachedSource->getEstimatedBandwidthKbps(&kbps); } else if (mWVMExtractor != NULL) { if (mWVMExtractor != NULL) { err = mWVMExtractor->getEstimatedBandwidthKbps(&kbps); } else if (mCachedSource != NULL) { err = mCachedSource->getEstimatedBandwidthKbps(&kbps); } if (err == OK) { Loading @@ -681,7 +687,13 @@ void NuPlayer::GenericSource::onPollBuffering() { int64_t cachedDurationUs = -1ll; ssize_t cachedDataRemaining = -1; if (mCachedSource != NULL) { ALOGW_IF(mWVMExtractor != NULL && mCachedSource != NULL, "WVMExtractor and NuCachedSource both present"); if (mWVMExtractor != NULL) { cachedDurationUs = mWVMExtractor->getCachedDurationUs(&finalStatus); } else if (mCachedSource != NULL) { cachedDataRemaining = mCachedSource->approxDataRemaining(&finalStatus); Loading @@ -697,9 +709,6 @@ void NuPlayer::GenericSource::onPollBuffering() { cachedDurationUs = cachedDataRemaining * 8000000ll / bitrate; } } } else if (mWVMExtractor != NULL) { cachedDurationUs = mWVMExtractor->getCachedDurationUs(&finalStatus); } if (finalStatus != OK) { Loading