Loading cmds/stagefright/stagefright.cpp +8 −0 Original line number Diff line number Diff line Loading @@ -1048,6 +1048,10 @@ int main(int argc, char **argv) { bool haveVideo = false; for (size_t i = 0; i < numTracks; ++i) { sp<IMediaSource> source = extractor->getTrack(i); if (source == nullptr) { fprintf(stderr, "skip NULL track %zu, track count %zu.\n", i, numTracks); continue; } const char *mime; CHECK(source->getFormat()->findCString( Loading Loading @@ -1110,6 +1114,10 @@ int main(int argc, char **argv) { } mediaSource = extractor->getTrack(i); if (mediaSource == nullptr) { fprintf(stderr, "skip NULL track %zu, total tracks %zu.\n", i, numTracks); return -1; } } } Loading cmds/stagefright/stream.cpp +8 −2 Original line number Diff line number Diff line Loading @@ -171,7 +171,8 @@ MyConvertingStreamSource::MyConvertingStreamSource(const char *filename) mWriter = new MPEG2TSWriter( this, &MyConvertingStreamSource::WriteDataWrapper); for (size_t i = 0; i < extractor->countTracks(); ++i) { size_t numTracks = extractor->countTracks(); for (size_t i = 0; i < numTracks; ++i) { const sp<MetaData> &meta = extractor->getTrackMetaData(i); const char *mime; Loading @@ -181,7 +182,12 @@ MyConvertingStreamSource::MyConvertingStreamSource(const char *filename) continue; } CHECK_EQ(mWriter->addSource(extractor->getTrack(i)), (status_t)OK); sp<IMediaSource> track = extractor->getTrack(i); if (track == nullptr) { fprintf(stderr, "skip NULL track %zu, total tracks %zu\n", i, numTracks); continue; } CHECK_EQ(mWriter->addSource(track), (status_t)OK); } CHECK_EQ(mWriter->start(), (status_t)OK); Loading media/libmedia/include/media/IMediaExtractor.h +3 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,9 @@ public: DECLARE_META_INTERFACE(MediaExtractor); virtual size_t countTracks() = 0; // This function could return NULL IMediaSource even when index is within the // track count returned by countTracks, since it's possible the track is malformed // and it's not detected during countTracks call. virtual sp<IMediaSource> getTrack(size_t index) = 0; enum GetTrackMetaDataFlags { Loading media/libstagefright/NuMediaExtractor.cpp +4 −0 Original line number Diff line number Diff line Loading @@ -297,6 +297,10 @@ status_t NuMediaExtractor::selectTrack(size_t index) { sp<IMediaSource> source = mImpl->getTrack(index); if (source == nullptr) { return ERROR_MALFORMED; } status_t ret = source->start(); if (ret != OK) { return ret; Loading Loading
cmds/stagefright/stagefright.cpp +8 −0 Original line number Diff line number Diff line Loading @@ -1048,6 +1048,10 @@ int main(int argc, char **argv) { bool haveVideo = false; for (size_t i = 0; i < numTracks; ++i) { sp<IMediaSource> source = extractor->getTrack(i); if (source == nullptr) { fprintf(stderr, "skip NULL track %zu, track count %zu.\n", i, numTracks); continue; } const char *mime; CHECK(source->getFormat()->findCString( Loading Loading @@ -1110,6 +1114,10 @@ int main(int argc, char **argv) { } mediaSource = extractor->getTrack(i); if (mediaSource == nullptr) { fprintf(stderr, "skip NULL track %zu, total tracks %zu.\n", i, numTracks); return -1; } } } Loading
cmds/stagefright/stream.cpp +8 −2 Original line number Diff line number Diff line Loading @@ -171,7 +171,8 @@ MyConvertingStreamSource::MyConvertingStreamSource(const char *filename) mWriter = new MPEG2TSWriter( this, &MyConvertingStreamSource::WriteDataWrapper); for (size_t i = 0; i < extractor->countTracks(); ++i) { size_t numTracks = extractor->countTracks(); for (size_t i = 0; i < numTracks; ++i) { const sp<MetaData> &meta = extractor->getTrackMetaData(i); const char *mime; Loading @@ -181,7 +182,12 @@ MyConvertingStreamSource::MyConvertingStreamSource(const char *filename) continue; } CHECK_EQ(mWriter->addSource(extractor->getTrack(i)), (status_t)OK); sp<IMediaSource> track = extractor->getTrack(i); if (track == nullptr) { fprintf(stderr, "skip NULL track %zu, total tracks %zu\n", i, numTracks); continue; } CHECK_EQ(mWriter->addSource(track), (status_t)OK); } CHECK_EQ(mWriter->start(), (status_t)OK); Loading
media/libmedia/include/media/IMediaExtractor.h +3 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,9 @@ public: DECLARE_META_INTERFACE(MediaExtractor); virtual size_t countTracks() = 0; // This function could return NULL IMediaSource even when index is within the // track count returned by countTracks, since it's possible the track is malformed // and it's not detected during countTracks call. virtual sp<IMediaSource> getTrack(size_t index) = 0; enum GetTrackMetaDataFlags { Loading
media/libstagefright/NuMediaExtractor.cpp +4 −0 Original line number Diff line number Diff line Loading @@ -297,6 +297,10 @@ status_t NuMediaExtractor::selectTrack(size_t index) { sp<IMediaSource> source = mImpl->getTrack(index); if (source == nullptr) { return ERROR_MALFORMED; } status_t ret = source->start(); if (ret != OK) { return ret; Loading