From d015ccf62b4e87756e2f7785af92338d35a21c15 Mon Sep 17 00:00:00 2001 From: James Dong Date: Wed, 8 Sep 2010 15:07:21 -0700 Subject: HW audio encoder expects timestamp via kKeyTime from each input buffer - This fixes media server crashes on droid Change-Id: I7191cadc5275107425ec3ee3d437b2c5295858dc --- media/libstagefright/AudioSource.cpp | 4 +++- media/libstagefright/codecs/aacenc/AACEncoder.cpp | 2 +- media/libstagefright/codecs/amrnb/enc/AMRNBEncoder.cpp | 2 +- media/libstagefright/codecs/amrwbenc/AMRWBEncoder.cpp | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) (limited to 'media') diff --git a/media/libstagefright/AudioSource.cpp b/media/libstagefright/AudioSource.cpp index c2f79e8..8d7ada3 100644 --- a/media/libstagefright/AudioSource.cpp +++ b/media/libstagefright/AudioSource.cpp @@ -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; diff --git a/media/libstagefright/codecs/aacenc/AACEncoder.cpp b/media/libstagefright/codecs/aacenc/AACEncoder.cpp index e391c72..df9f107 100644 --- a/media/libstagefright/codecs/aacenc/AACEncoder.cpp +++ b/media/libstagefright/codecs/aacenc/AACEncoder.cpp @@ -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; diff --git a/media/libstagefright/codecs/amrnb/enc/AMRNBEncoder.cpp b/media/libstagefright/codecs/amrnb/enc/AMRNBEncoder.cpp index 858e6d0..94a79ab 100644 --- a/media/libstagefright/codecs/amrnb/enc/AMRNBEncoder.cpp +++ b/media/libstagefright/codecs/amrnb/enc/AMRNBEncoder.cpp @@ -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 { diff --git a/media/libstagefright/codecs/amrwbenc/AMRWBEncoder.cpp b/media/libstagefright/codecs/amrwbenc/AMRWBEncoder.cpp index cd28413..002f055 100644 --- a/media/libstagefright/codecs/amrwbenc/AMRWBEncoder.cpp +++ b/media/libstagefright/codecs/amrwbenc/AMRWBEncoder.cpp @@ -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; -- cgit v1.1