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

Commit d015ccf6 authored by James Dong's avatar James Dong
Browse files

HW audio encoder expects timestamp via kKeyTime from each input buffer

- This fixes media server crashes on droid

Change-Id: I7191cadc5275107425ec3ee3d437b2c5295858dc
parent 4c7d3f28
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ enum {
    kKeyNTPTime           = 'ntpT',  // uint64_t (ntp-timestamp)
    kKeyTargetTime        = 'tarT',  // int64_t (usecs)
    kKeyDriftTime         = 'dftT',  // int64_t (usecs)
    kKeyAnchorTime        = 'ancT',  // int64_t (usecs)
    kKeyDuration          = 'dura',  // int64_t (usecs)
    kKeyColorFormat       = 'colf',
    kKeyPlatformPrivate   = 'priv',  // pointer
+3 −1
Original line number Diff line number Diff line
@@ -316,8 +316,10 @@ status_t AudioSource::read(
        }

        if (numFramesRecorded == 0) {
            buffer->meta_data()->setInt64(kKeyTime, mStartTimeUs);
            buffer->meta_data()->setInt64(kKeyAnchorTime, mStartTimeUs);
        }

        buffer->meta_data()->setInt64(kKeyTime, mStartTimeUs + mPrevSampleTimeUs);
        buffer->meta_data()->setInt64(kKeyDriftTime, readTimeUs - mInitialReadTimeUs);
        CHECK(timestampUs > mPrevSampleTimeUs);
        mPrevSampleTimeUs = timestampUs;
+1 −1
Original line number Diff line number Diff line
@@ -243,7 +243,7 @@ status_t AACEncoder::read(
            if (mInputBuffer->meta_data()->findInt64(kKeyDriftTime, &timeUs)) {
                wallClockTimeUs = timeUs;
            }
            if (mInputBuffer->meta_data()->findInt64(kKeyTime, &timeUs)) {
            if (mInputBuffer->meta_data()->findInt64(kKeyAnchorTime, &timeUs)) {
                mAnchorTimeUs = timeUs;
            }
            readFromSource = true;
+1 −1
Original line number Diff line number Diff line
@@ -174,7 +174,7 @@ status_t AMRNBEncoder::read(
            if (mInputBuffer->meta_data()->findInt64(kKeyDriftTime, &timeUs)) {
                wallClockTimeUs = timeUs;
            }
            if (mInputBuffer->meta_data()->findInt64(kKeyTime, &timeUs)) {
            if (mInputBuffer->meta_data()->findInt64(kKeyAnchorTime, &timeUs)) {
                mAnchorTimeUs = timeUs;
            }
        } else {
+1 −1
Original line number Diff line number Diff line
@@ -224,7 +224,7 @@ status_t AMRWBEncoder::read(
            if (mInputBuffer->meta_data()->findInt64(kKeyDriftTime, &timeUs)) {
                wallClockTimeUs = timeUs;
            }
            if (mInputBuffer->meta_data()->findInt64(kKeyTime, &timeUs)) {
            if (mInputBuffer->meta_data()->findInt64(kKeyAnchorTime, &timeUs)) {
                mAnchorTimeUs = timeUs;
            }
            readFromSource = true;