Loading media/extractors/mpeg2/MPEG2TSExtractor.cpp +25 −13 Original line number Diff line number Diff line Loading @@ -269,9 +269,6 @@ void MPEG2TSExtractor::init() { off64_t size; if (mDataSource->getSize(&size) == OK && (haveAudio || haveVideo)) { sp<AnotherPacketSource> impl = haveVideo ? mParser->getSource(ATSParser::VIDEO) : mParser->getSource(ATSParser::AUDIO); size_t prevSyncSize = 1; int64_t durationUs = -1; List<int64_t> durations; Loading Loading @@ -305,17 +302,32 @@ void MPEG2TSExtractor::init() { } } } bool found = false; for (int i = 0; i < ATSParser::NUM_SOURCE_TYPES; ++i) { ATSParser::SourceType type = static_cast<ATSParser::SourceType>(i); sp<AnotherPacketSource> impl = mParser->getSource(type); if (impl == NULL) { continue; } int64_t trackDurationUs = durationUs; status_t err; int64_t bufferedDurationUs; bufferedDurationUs = impl->getBufferedDurationUs(&err); int64_t bufferedDurationUs = impl->getBufferedDurationUs(&err); if (err == ERROR_END_OF_STREAM) { durationUs = bufferedDurationUs; trackDurationUs = bufferedDurationUs; } if (durationUs > 0) { if (trackDurationUs > 0) { ALOGV("[SourceType%d] durationUs=%" PRId64 "", type, trackDurationUs); const sp<MetaData> meta = impl->getFormat(); meta->setInt64(kKeyDuration, durationUs); meta->setInt64(kKeyDuration, trackDurationUs); impl->setFormat(meta); } else { found = true; } } if (!found) { estimateDurationsFromTimesUsAtEnd(); } } Loading Loading
media/extractors/mpeg2/MPEG2TSExtractor.cpp +25 −13 Original line number Diff line number Diff line Loading @@ -269,9 +269,6 @@ void MPEG2TSExtractor::init() { off64_t size; if (mDataSource->getSize(&size) == OK && (haveAudio || haveVideo)) { sp<AnotherPacketSource> impl = haveVideo ? mParser->getSource(ATSParser::VIDEO) : mParser->getSource(ATSParser::AUDIO); size_t prevSyncSize = 1; int64_t durationUs = -1; List<int64_t> durations; Loading Loading @@ -305,17 +302,32 @@ void MPEG2TSExtractor::init() { } } } bool found = false; for (int i = 0; i < ATSParser::NUM_SOURCE_TYPES; ++i) { ATSParser::SourceType type = static_cast<ATSParser::SourceType>(i); sp<AnotherPacketSource> impl = mParser->getSource(type); if (impl == NULL) { continue; } int64_t trackDurationUs = durationUs; status_t err; int64_t bufferedDurationUs; bufferedDurationUs = impl->getBufferedDurationUs(&err); int64_t bufferedDurationUs = impl->getBufferedDurationUs(&err); if (err == ERROR_END_OF_STREAM) { durationUs = bufferedDurationUs; trackDurationUs = bufferedDurationUs; } if (durationUs > 0) { if (trackDurationUs > 0) { ALOGV("[SourceType%d] durationUs=%" PRId64 "", type, trackDurationUs); const sp<MetaData> meta = impl->getFormat(); meta->setInt64(kKeyDuration, durationUs); meta->setInt64(kKeyDuration, trackDurationUs); impl->setFormat(meta); } else { found = true; } } if (!found) { estimateDurationsFromTimesUsAtEnd(); } } Loading