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

Commit 702f70a0 authored by Manikanta Kanamarlapudi's avatar Manikanta Kanamarlapudi Committed by Ethan Chen
Browse files

libstagefright: Fix incorrect duration calculation

MPEG4Writer uses timescale parameter for calculating duration.
For HFR, divide timescale with HFR ratio factor to play
at 30fps. Added the same in MovieHeader(mvhd) and track
hdeader(tkhd) atom.

REF: CYNGNOS-922
Change-Id: I0ed92ef7a95c4b2b98567949b3b475d85d6bb16f
parent f91cceda
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -61,7 +61,7 @@ public:
    void endBox();
    uint32_t interleaveDuration() const { return mInterleaveDurationUs; }
    status_t setInterleaveDuration(uint32_t duration);
    int32_t getTimeScale() const { return mTimeScale; }
    int32_t getTimeScale() const { return (mTimeScale / mHFRRatio); }

    status_t setGeoData(int latitudex10000, int longitudex10000);
    virtual void setStartTimeOffsetMs(int ms) { mStartTimeOffsetMs = ms; }
+1 −1
Original line number Diff line number Diff line
@@ -975,7 +975,7 @@ void MPEG4Writer::writeMvhdBox(int64_t durationUs) {
    writeInt32(now);           // creation time
    writeInt32(now);           // modification time
    writeInt32(mTimeScale / mHFRRatio);    // mvhd timescale
    int32_t duration = (durationUs * mTimeScale + 5E5) / 1E6;
    int32_t duration = (durationUs * (mTimeScale / mHFRRatio) + 5E5) / 1E6;
    writeInt32(duration);
    writeInt32(0x10000);       // rate: 1.0
    writeInt16(0x100);         // volume