diff options
author | Michael Bestas <mikeioannina@gmail.com> | 2015-12-12 21:59:49 +0200 |
---|---|---|
committer | Michael Bestas <mikeioannina@gmail.com> | 2015-12-12 22:21:07 +0200 |
commit | 743c7e272014386c42fd5d946bdee336d751b571 (patch) | |
tree | 36291403657f21a8a718f73394126fb8c945f296 /media/libmediaplayerservice/StagefrightRecorder.cpp | |
parent | 4d1793b8a90eb4b9e19184532f713c6aba7828cf (diff) | |
download | frameworks_av-743c7e272014386c42fd5d946bdee336d751b571.zip frameworks_av-743c7e272014386c42fd5d946bdee336d751b571.tar.gz frameworks_av-743c7e272014386c42fd5d946bdee336d751b571.tar.bz2 |
StagefrightRecorder: Add support for WAVE recording
* Forward port the cm-12.1 code
Change-Id: I77373a236108507b8fa76cc8d3016de36aade301
Diffstat (limited to 'media/libmediaplayerservice/StagefrightRecorder.cpp')
-rw-r--r-- | media/libmediaplayerservice/StagefrightRecorder.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/media/libmediaplayerservice/StagefrightRecorder.cpp b/media/libmediaplayerservice/StagefrightRecorder.cpp index b1f0742..9d4aa97 100644 --- a/media/libmediaplayerservice/StagefrightRecorder.cpp +++ b/media/libmediaplayerservice/StagefrightRecorder.cpp @@ -44,6 +44,7 @@ #include <media/stagefright/MediaCodecSource.h> #include <media/stagefright/OMXClient.h> #include <media/stagefright/OMXCodec.h> +#include <media/stagefright/WAVEWriter.h> #include <media/MediaProfiles.h> #include <camera/ICamera.h> #include <camera/CameraParameters.h> @@ -822,6 +823,10 @@ status_t StagefrightRecorder::prepareInternal() { status = setupMPEG2TSRecording(); break; + case OUTPUT_FORMAT_WAVE: + status = setupWAVERecording(); + break; + default: if (handleCustomRecording() != OK) { ALOGE("Unsupported output file format: %d", mOutputFormat); @@ -899,6 +904,7 @@ status_t StagefrightRecorder::start() { case OUTPUT_FORMAT_AAC_ADTS: case OUTPUT_FORMAT_RTP_AVP: case OUTPUT_FORMAT_MPEG2TS: + case OUTPUT_FORMAT_WAVE: { status = mWriter->start(); break; @@ -991,6 +997,9 @@ sp<MediaSource> StagefrightRecorder::createAudioSource() { format->setString("mime", MEDIA_MIMETYPE_AUDIO_AAC); format->setInt32("aac-profile", OMX_AUDIO_AACObjectELD); break; + case AUDIO_ENCODER_LPCM: + format->setString("mime", MEDIA_MIMETYPE_AUDIO_RAW); + break; default: if (handleCustomAudioSource(format) != OK) { @@ -1193,6 +1202,15 @@ status_t StagefrightRecorder::setupMPEG2TSRecording() { return OK; } +status_t StagefrightRecorder::setupWAVERecording() { + CHECK(mOutputFormat == OUTPUT_FORMAT_WAVE); + CHECK(mAudioEncoder == AUDIO_ENCODER_LPCM); + CHECK(mAudioSource != AUDIO_SOURCE_CNT); + + mWriter = new WAVEWriter(mOutputFd); + return setupRawAudioRecording(); +} + void StagefrightRecorder::clipVideoFrameRate() { ALOGV("clipVideoFrameRate: encoder %d", mVideoEncoder); if (mFrameRate == -1) { @@ -1662,6 +1680,7 @@ status_t StagefrightRecorder::setupAudioEncoder(const sp<MediaWriter>& writer) { case AUDIO_ENCODER_AAC: case AUDIO_ENCODER_HE_AAC: case AUDIO_ENCODER_AAC_ELD: + case AUDIO_ENCODER_LPCM: break; default: |