Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 60109b6b authored by Marco Nelissen's avatar Marco Nelissen Committed by Gerrit Code Review
Browse files

Merge "Set duration to audio track format in MPEG2TSExtractor"

parents 8c545704 e6acea6a
Loading
Loading
Loading
Loading
+25 −13
Original line number Diff line number Diff line
@@ -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;
@@ -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();
        }
    }