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

Commit 6a5c19ca authored by Robert Shih's avatar Robert Shih
Browse files

MPEG4Writer: fix diff between duration and timestamps

Bug: 62221065
Test: ExtractVideo Microvideo.jpg
Change-Id: Id0e47c242bd2108a0b8dfc90c867739cb298009a
parent fca1a3a3
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -343,6 +343,7 @@ private:

    void dumpTimeStamps();

    int64_t getStartTimeOffsetScaledTimeUs() const;
    int32_t getStartTimeOffsetScaledTime() const;

    static void *ThreadWrapper(void *me);
@@ -3162,7 +3163,7 @@ void MPEG4Writer::Track::bufferChunk(int64_t timestampUs) {
}

int64_t MPEG4Writer::Track::getDurationUs() const {
    return mTrackDurationUs;
    return mTrackDurationUs + getStartTimeOffsetScaledTimeUs();
}

int64_t MPEG4Writer::Track::getEstimatedTrackSizeBytes() const {
@@ -3646,14 +3647,18 @@ void MPEG4Writer::Track::writePaspBox() {
    mOwner->endBox();  // pasp
}

int32_t MPEG4Writer::Track::getStartTimeOffsetScaledTime() const {
int64_t MPEG4Writer::Track::getStartTimeOffsetScaledTimeUs() const {
    int64_t trackStartTimeOffsetUs = 0;
    int64_t moovStartTimeUs = mOwner->getStartTimestampUs();
    if (mStartTimestampUs != moovStartTimeUs) {
        CHECK_GT(mStartTimestampUs, moovStartTimeUs);
        trackStartTimeOffsetUs = mStartTimestampUs - moovStartTimeUs;
    }
    return (trackStartTimeOffsetUs *  mTimeScale + 500000LL) / 1000000LL;
    return trackStartTimeOffsetUs;
}

int32_t MPEG4Writer::Track::getStartTimeOffsetScaledTime() const {
    return (getStartTimeOffsetScaledTimeUs() *  mTimeScale + 500000LL) / 1000000LL;
}

void MPEG4Writer::Track::writeSttsBox() {