summaryrefslogtreecommitdiffstats
path: root/media/libmediaplayerservice/StagefrightRecorder.cpp
diff options
context:
space:
mode:
authorMichael Bestas <mikeioannina@gmail.com>2015-12-12 21:59:49 +0200
committerMichael Bestas <mikeioannina@gmail.com>2015-12-12 22:21:07 +0200
commit743c7e272014386c42fd5d946bdee336d751b571 (patch)
tree36291403657f21a8a718f73394126fb8c945f296 /media/libmediaplayerservice/StagefrightRecorder.cpp
parent4d1793b8a90eb4b9e19184532f713c6aba7828cf (diff)
downloadframeworks_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.cpp19
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: