diff options
author | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2022-12-06 02:44:14 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2022-12-06 02:44:14 +0000 |
commit | 40d3aeea11af7ee82ca65436651f5931aa061d6f (patch) | |
tree | e5d8e6c8d7809ff0d86118e56ac8e7f1954aef2e | |
parent | 20016efdd603930da1792739b7be3ae8874cbb74 (diff) | |
parent | 1814597d3549ae45f4ccf26510aa12482b022cd3 (diff) | |
download | av-android12-gsi.tar.gz |
Merge "Merge cherrypicks of [20068332] into sc-platform-release. am: e78e8a125b" into android12-gsiandroid12-gsi
-rw-r--r-- | media/libstagefright/NuMediaExtractor.cpp | 95 | ||||
-rw-r--r-- | media/libstagefright/include/media/stagefright/NuMediaExtractor.h | 2 |
2 files changed, 36 insertions, 61 deletions
diff --git a/media/libstagefright/NuMediaExtractor.cpp b/media/libstagefright/NuMediaExtractor.cpp index 68933242a8..2b45f2d16d 100644 --- a/media/libstagefright/NuMediaExtractor.cpp +++ b/media/libstagefright/NuMediaExtractor.cpp @@ -72,31 +72,17 @@ NuMediaExtractor::~NuMediaExtractor() { } } -status_t NuMediaExtractor::setDataSource( - const sp<MediaHTTPService> &httpService, - const char *path, - const KeyedVector<String8, String8> *headers) { - Mutex::Autolock autoLock(mLock); - - if (mImpl != NULL || path == NULL) { - return -EINVAL; - } - - sp<DataSource> dataSource = - DataSourceFactory::getInstance()->CreateFromURI(httpService, path, headers); - - if (dataSource == NULL) { - return -ENOENT; - } +status_t NuMediaExtractor::initMediaExtractor(const sp<DataSource>& dataSource) { + status_t err = OK; mImpl = MediaExtractorFactory::Create(dataSource); - if (mImpl == NULL) { + ALOGE("%s: failed to create MediaExtractor", __FUNCTION__); return ERROR_UNSUPPORTED; } + setEntryPointToRemoteMediaExtractor(); - status_t err = OK; if (!mCasToken.empty()) { err = mImpl->setMediaCas(mCasToken); if (err != OK) { @@ -105,6 +91,10 @@ status_t NuMediaExtractor::setDataSource( } } + // Get the name of the implementation. + mName = mImpl->name(); + + // Update the duration and bitrate err = updateDurationAndBitrate(); if (err == OK) { mDataSource = dataSource; @@ -113,6 +103,27 @@ status_t NuMediaExtractor::setDataSource( return OK; } +status_t NuMediaExtractor::setDataSource( + const sp<MediaHTTPService> &httpService, + const char *path, + const KeyedVector<String8, String8> *headers) { + Mutex::Autolock autoLock(mLock); + + if (mImpl != NULL || path == NULL) { + return -EINVAL; + } + + sp<DataSource> dataSource = + DataSourceFactory::getInstance()->CreateFromURI(httpService, path, headers); + + if (dataSource == NULL) { + return -ENOENT; + } + + // Initialize MediaExtractor using the data source + return initMediaExtractor(dataSource); +} + status_t NuMediaExtractor::setDataSource(int fd, off64_t offset, off64_t size) { ALOGV("setDataSource fd=%d (%s), offset=%lld, length=%lld", @@ -131,27 +142,8 @@ status_t NuMediaExtractor::setDataSource(int fd, off64_t offset, off64_t size) { return err; } - mImpl = MediaExtractorFactory::Create(fileSource); - - if (mImpl == NULL) { - return ERROR_UNSUPPORTED; - } - setEntryPointToRemoteMediaExtractor(); - - if (!mCasToken.empty()) { - err = mImpl->setMediaCas(mCasToken); - if (err != OK) { - ALOGE("%s: failed to setMediaCas (%d)", __FUNCTION__, err); - return err; - } - } - - err = updateDurationAndBitrate(); - if (err == OK) { - mDataSource = fileSource; - } - - return OK; + // Initialize MediaExtractor using the file source + return initMediaExtractor(fileSource); } status_t NuMediaExtractor::setDataSource(const sp<DataSource> &source) { @@ -166,32 +158,13 @@ status_t NuMediaExtractor::setDataSource(const sp<DataSource> &source) { return err; } - mImpl = MediaExtractorFactory::Create(source); - - if (mImpl == NULL) { - return ERROR_UNSUPPORTED; - } - setEntryPointToRemoteMediaExtractor(); - - if (!mCasToken.empty()) { - err = mImpl->setMediaCas(mCasToken); - if (err != OK) { - ALOGE("%s: failed to setMediaCas (%d)", __FUNCTION__, err); - return err; - } - } - - err = updateDurationAndBitrate(); - if (err == OK) { - mDataSource = source; - } - - return err; + // Initialize MediaExtractor using the given data source + return initMediaExtractor(source); } const char* NuMediaExtractor::getName() const { Mutex::Autolock autoLock(mLock); - return mImpl == nullptr ? nullptr : mImpl->name().string(); + return mImpl == nullptr ? nullptr : mName.string(); } static String8 arrayToString(const std::vector<uint8_t> &array) { diff --git a/media/libstagefright/include/media/stagefright/NuMediaExtractor.h b/media/libstagefright/include/media/stagefright/NuMediaExtractor.h index d17a480bb8..52ea28b9ca 100644 --- a/media/libstagefright/include/media/stagefright/NuMediaExtractor.h +++ b/media/libstagefright/include/media/stagefright/NuMediaExtractor.h @@ -146,6 +146,7 @@ private: Vector<TrackInfo> mSelectedTracks; int64_t mTotalBitrate; // in bits/sec int64_t mDurationUs; + String8 mName; void setEntryPointToRemoteMediaExtractor(); @@ -165,6 +166,7 @@ private: bool getTotalBitrate(int64_t *bitRate) const; status_t updateDurationAndBitrate(); status_t appendVorbisNumPageSamples(MediaBufferBase *mbuf, const sp<ABuffer> &buffer); + status_t initMediaExtractor(const sp<DataSource>& dataSource); DISALLOW_EVIL_CONSTRUCTORS(NuMediaExtractor); }; |