Loading include/media/stagefright/NuMediaExtractor.h +7 −1 Original line number Diff line number Diff line Loading @@ -19,7 +19,9 @@ #include <media/stagefright/foundation/ABase.h> #include <utils/Errors.h> #include <utils/KeyedVector.h> #include <utils/RefBase.h> #include <utils/String8.h> #include <utils/Vector.h> namespace android { Loading @@ -38,7 +40,11 @@ struct NuMediaExtractor : public RefBase { NuMediaExtractor(); status_t setDataSource(const char *path); status_t setDataSource( const char *path, const KeyedVector<String8, String8> *headers = NULL); status_t setDataSource(int fd, off64_t offset, off64_t size); size_t countTracks() const; status_t getTrackFormat(size_t index, sp<AMessage> *format) const; Loading media/libstagefright/DataSource.cpp +13 −1 Original line number Diff line number Diff line Loading @@ -142,7 +142,19 @@ sp<DataSource> DataSource::CreateFromURI( if (httpSource->connect(uri, headers) != OK) { return NULL; } source = new NuCachedSource2(httpSource); String8 cacheConfig; bool disconnectAtHighwatermark; if (headers != NULL) { KeyedVector<String8, String8> copy = *headers; NuCachedSource2::RemoveCacheSpecificHeaders( ©, &cacheConfig, &disconnectAtHighwatermark); } source = new NuCachedSource2( httpSource, cacheConfig.isEmpty() ? NULL : cacheConfig.string()); # if CHROMIUM_AVAILABLE } else if (!strncasecmp("data:", uri, 5)) { source = new DataUriSource(uri); Loading media/libstagefright/NuMediaExtractor.cpp +34 −2 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ #include <media/stagefright/foundation/ADebug.h> #include <media/stagefright/foundation/AMessage.h> #include <media/stagefright/DataSource.h> #include <media/stagefright/FileSource.h> #include <media/stagefright/MediaBuffer.h> #include <media/stagefright/MediaDefs.h> #include <media/stagefright/MediaErrors.h> Loading @@ -51,8 +52,13 @@ NuMediaExtractor::~NuMediaExtractor() { mSelectedTracks.clear(); } status_t NuMediaExtractor::setDataSource(const char *path) { sp<DataSource> dataSource = DataSource::CreateFromURI(path); status_t NuMediaExtractor::setDataSource( const char *path, const KeyedVector<String8, String8> *headers) { if (mImpl != NULL) { return -EINVAL; } sp<DataSource> dataSource = DataSource::CreateFromURI(path, headers); if (dataSource == NULL) { return -ENOENT; Loading @@ -67,6 +73,27 @@ status_t NuMediaExtractor::setDataSource(const char *path) { return OK; } status_t NuMediaExtractor::setDataSource(int fd, off64_t offset, off64_t size) { if (mImpl != NULL) { return -EINVAL; } sp<FileSource> fileSource = new FileSource(dup(fd), offset, size); status_t err = fileSource->initCheck(); if (err != OK) { return err; } mImpl = MediaExtractor::Create(fileSource); if (mImpl == NULL) { return ERROR_UNSUPPORTED; } return OK; } size_t NuMediaExtractor::countTracks() const { return mImpl == NULL ? 0 : mImpl->countTracks(); } Loading @@ -91,6 +118,11 @@ status_t NuMediaExtractor::getTrackFormat( sp<AMessage> msg = new AMessage; msg->setString("mime", mime); int64_t durationUs; if (meta->findInt64(kKeyDuration, &durationUs)) { msg->setInt64("durationUs", durationUs); } if (!strncasecmp("video/", mime, 6)) { int32_t width, height; CHECK(meta->findInt32(kKeyWidth, &width)); Loading Loading
include/media/stagefright/NuMediaExtractor.h +7 −1 Original line number Diff line number Diff line Loading @@ -19,7 +19,9 @@ #include <media/stagefright/foundation/ABase.h> #include <utils/Errors.h> #include <utils/KeyedVector.h> #include <utils/RefBase.h> #include <utils/String8.h> #include <utils/Vector.h> namespace android { Loading @@ -38,7 +40,11 @@ struct NuMediaExtractor : public RefBase { NuMediaExtractor(); status_t setDataSource(const char *path); status_t setDataSource( const char *path, const KeyedVector<String8, String8> *headers = NULL); status_t setDataSource(int fd, off64_t offset, off64_t size); size_t countTracks() const; status_t getTrackFormat(size_t index, sp<AMessage> *format) const; Loading
media/libstagefright/DataSource.cpp +13 −1 Original line number Diff line number Diff line Loading @@ -142,7 +142,19 @@ sp<DataSource> DataSource::CreateFromURI( if (httpSource->connect(uri, headers) != OK) { return NULL; } source = new NuCachedSource2(httpSource); String8 cacheConfig; bool disconnectAtHighwatermark; if (headers != NULL) { KeyedVector<String8, String8> copy = *headers; NuCachedSource2::RemoveCacheSpecificHeaders( ©, &cacheConfig, &disconnectAtHighwatermark); } source = new NuCachedSource2( httpSource, cacheConfig.isEmpty() ? NULL : cacheConfig.string()); # if CHROMIUM_AVAILABLE } else if (!strncasecmp("data:", uri, 5)) { source = new DataUriSource(uri); Loading
media/libstagefright/NuMediaExtractor.cpp +34 −2 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ #include <media/stagefright/foundation/ADebug.h> #include <media/stagefright/foundation/AMessage.h> #include <media/stagefright/DataSource.h> #include <media/stagefright/FileSource.h> #include <media/stagefright/MediaBuffer.h> #include <media/stagefright/MediaDefs.h> #include <media/stagefright/MediaErrors.h> Loading @@ -51,8 +52,13 @@ NuMediaExtractor::~NuMediaExtractor() { mSelectedTracks.clear(); } status_t NuMediaExtractor::setDataSource(const char *path) { sp<DataSource> dataSource = DataSource::CreateFromURI(path); status_t NuMediaExtractor::setDataSource( const char *path, const KeyedVector<String8, String8> *headers) { if (mImpl != NULL) { return -EINVAL; } sp<DataSource> dataSource = DataSource::CreateFromURI(path, headers); if (dataSource == NULL) { return -ENOENT; Loading @@ -67,6 +73,27 @@ status_t NuMediaExtractor::setDataSource(const char *path) { return OK; } status_t NuMediaExtractor::setDataSource(int fd, off64_t offset, off64_t size) { if (mImpl != NULL) { return -EINVAL; } sp<FileSource> fileSource = new FileSource(dup(fd), offset, size); status_t err = fileSource->initCheck(); if (err != OK) { return err; } mImpl = MediaExtractor::Create(fileSource); if (mImpl == NULL) { return ERROR_UNSUPPORTED; } return OK; } size_t NuMediaExtractor::countTracks() const { return mImpl == NULL ? 0 : mImpl->countTracks(); } Loading @@ -91,6 +118,11 @@ status_t NuMediaExtractor::getTrackFormat( sp<AMessage> msg = new AMessage; msg->setString("mime", mime); int64_t durationUs; if (meta->findInt64(kKeyDuration, &durationUs)) { msg->setInt64("durationUs", durationUs); } if (!strncasecmp("video/", mime, 6)) { int32_t width, height; CHECK(meta->findInt32(kKeyWidth, &width)); Loading