Merge "Set duration to audio track format in MPEG2TSExtractor" am: 60109b6bf5 am: 71d2bd32a8

am: 51f680ff84

Change-Id: I3203a8f8a6aee688a3b877730555cbc76578a7c9
gugelfrei
Marco Nelissen 6 years ago committed by android-build-merger
commit f1188418c6

@ -272,9 +272,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;
@ -308,17 +305,32 @@ void MPEG2TSExtractor::init() {
}
}
}
status_t err;
int64_t bufferedDurationUs;
bufferedDurationUs = impl->getBufferedDurationUs(&err);
if (err == ERROR_END_OF_STREAM) {
durationUs = bufferedDurationUs;
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 = impl->getBufferedDurationUs(&err);
if (err == ERROR_END_OF_STREAM) {
trackDurationUs = bufferedDurationUs;
}
if (trackDurationUs > 0) {
ALOGV("[SourceType%d] durationUs=%" PRId64 "", type, trackDurationUs);
const sp<MetaData> meta = impl->getFormat();
meta->setInt64(kKeyDuration, trackDurationUs);
impl->setFormat(meta);
found = true;
}
}
if (durationUs > 0) {
const sp<MetaData> meta = impl->getFormat();
meta->setInt64(kKeyDuration, durationUs);
impl->setFormat(meta);
} else {
if (!found) {
estimateDurationsFromTimesUsAtEnd();
}
}

Loading…
Cancel
Save