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

Commit 51f680ff authored by Marco Nelissen's avatar Marco Nelissen Committed by android-build-merger
Browse files

Merge "Set duration to audio track format in MPEG2TSExtractor" am: 60109b6b

am: 71d2bd32

Change-Id: Id96f5cd2bd6b627ee763ade4a196861d66c453b3
parents b8564c83 71d2bd32
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();
        }
    }