summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThe Android Open Source Project <initial-contribution@android.com>2009-03-18 17:39:46 -0700
committerThe Android Open Source Project <initial-contribution@android.com>2009-03-18 17:39:46 -0700
commit1179bc9b0e3d17c984e8f4ad38561c049dd102fa (patch)
tree1fd069efb58601650c80f77da0e2dc7d93641068
parentc048cae0367db6fbb4fe1127be5011910713d4ad (diff)
downloadframeworks_av-1179bc9b0e3d17c984e8f4ad38561c049dd102fa.zip
frameworks_av-1179bc9b0e3d17c984e8f4ad38561c049dd102fa.tar.gz
frameworks_av-1179bc9b0e3d17c984e8f4ad38561c049dd102fa.tar.bz2
auto import from //branches/cupcake_rel/...@140373
-rw-r--r--include/media/mediarecorder.h3
-rw-r--r--include/private/media/AudioTrackShared.h3
-rw-r--r--media/libmedia/AudioTrack.cpp4
-rw-r--r--media/libmedia/JetPlayer.cpp12
-rw-r--r--media/libmedia/mediarecorder.cpp5
5 files changed, 19 insertions, 8 deletions
diff --git a/include/media/mediarecorder.h b/include/media/mediarecorder.h
index 78d7621..b9ea0c6 100644
--- a/include/media/mediarecorder.h
+++ b/include/media/mediarecorder.h
@@ -104,7 +104,8 @@ enum media_recorder_error_type {
//
enum media_recorder_info_type {
MEDIA_RECORDER_INFO_UNKNOWN = 1,
- MEDIA_RECORDER_INFO_MAX_DURATION_REACHED = 800
+ MEDIA_RECORDER_INFO_MAX_DURATION_REACHED = 800,
+ MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED = 801
};
// ----------------------------------------------------------------------------
diff --git a/include/private/media/AudioTrackShared.h b/include/private/media/AudioTrackShared.h
index 1991aa7..bda969c 100644
--- a/include/private/media/AudioTrackShared.h
+++ b/include/private/media/AudioTrackShared.h
@@ -64,7 +64,8 @@ struct audio_track_cblk_t
uint16_t waitTimeMs; // Cumulated wait time
// Padding ensuring that data buffer starts on a cache line boundary (32 bytes).
// See AudioFlinger::TrackBase constructor
- int32_t Padding[3];
+ int32_t Padding[1];
+ // Cache line boundary
audio_track_cblk_t();
uint32_t stepUser(uint32_t frameCount);
diff --git a/media/libmedia/AudioTrack.cpp b/media/libmedia/AudioTrack.cpp
index d26b0c5..7537ddf 100644
--- a/media/libmedia/AudioTrack.cpp
+++ b/media/libmedia/AudioTrack.cpp
@@ -387,12 +387,10 @@ void AudioTrack::flush()
LOGV("flush");
if (!mActive) {
- mCblk->lock.lock();
mAudioTrack->flush();
// Release AudioTrack callback thread in case it was waiting for new buffers
// in AudioTrack::obtainBuffer()
mCblk->cv.signal();
- mCblk->lock.unlock();
}
}
@@ -443,7 +441,7 @@ void AudioTrack::setSampleRate(int rate)
if (rate > afSamplingRate*2) rate = afSamplingRate*2;
if (rate > MAX_SAMPLE_RATE) rate = MAX_SAMPLE_RATE;
- mCblk->sampleRate = rate;
+ mCblk->sampleRate = (uint16_t)rate;
}
uint32_t AudioTrack::getSampleRate()
diff --git a/media/libmedia/JetPlayer.cpp b/media/libmedia/JetPlayer.cpp
index 2c62104..77a9013 100644
--- a/media/libmedia/JetPlayer.cpp
+++ b/media/libmedia/JetPlayer.cpp
@@ -194,8 +194,15 @@ int JetPlayer::render() {
}
while (1) {
+
mMutex.lock(); // [[[[[[[[ LOCK ---------------------------------------
+ if (mEasData == NULL) {
+ mMutex.unlock();
+ LOGV("JetPlayer::render(): NULL EAS data, exiting render.");
+ goto threadExit;
+ }
+
// nothing to render, wait for client thread to wake us up
while (!mRender)
{
@@ -255,7 +262,10 @@ int JetPlayer::render() {
}//while (1)
threadExit:
- mAudioTrack->flush();
+ if (mAudioTrack) {
+ mAudioTrack->stop();
+ mAudioTrack->flush();
+ }
if (mAudioBuffer) {
delete [] mAudioBuffer;
mAudioBuffer = NULL;
diff --git a/media/libmedia/mediarecorder.cpp b/media/libmedia/mediarecorder.cpp
index 23b3b9d..6b26faf 100644
--- a/media/libmedia/mediarecorder.cpp
+++ b/media/libmedia/mediarecorder.cpp
@@ -367,8 +367,9 @@ status_t MediaRecorder::setParameters(const String8& params) {
status_t ret = mMediaRecorder->setParameters(params);
if (OK != ret) {
LOGE("setParameters(%s) failed: %d", params.string(), ret);
- mCurrentState = MEDIA_RECORDER_ERROR;
- return ret;
+ // Do not change our current state to MEDIA_RECORDER_ERROR, failures
+ // of the only currently supported parameters, "max-duration" and
+ // "max-filesize" are _not_ fatal.
}
return ret;