summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Michel Trivi <jmtrivi@google.com>2012-03-02 14:34:10 -0800
committerJean-Michel Trivi <jmtrivi@google.com>2012-03-05 10:59:38 -0800
commit8162c1a9f4df4bf4733e78f5b03398b2991ba79a (patch)
treee6381a284850cab09068411ae8570fd784775b5a
parent90b6191067990a7a3ee947d7ce08c64f780f0de7 (diff)
downloadframeworks_av-8162c1a9f4df4bf4733e78f5b03398b2991ba79a.zip
frameworks_av-8162c1a9f4df4bf4733e78f5b03398b2991ba79a.tar.gz
frameworks_av-8162c1a9f4df4bf4733e78f5b03398b2991ba79a.tar.bz2
Set channel mask when opening audio sink
Update the code to use the AudioSink::open() interface that takes a channel mask as an additional parameter. The code is only stereo, and returns an error when attempting to create a video editor audio sink with more than two channels. Change-Id: Ib9bba067da0b286c08656976b89fba7c8b42f99f
-rwxr-xr-xlibvideoeditor/lvpp/VideoEditorAudioPlayer.cpp2
-rwxr-xr-xlibvideoeditor/lvpp/VideoEditorPlayer.cpp22
-rwxr-xr-xlibvideoeditor/lvpp/VideoEditorPlayer.h2
3 files changed, 19 insertions, 7 deletions
diff --git a/libvideoeditor/lvpp/VideoEditorAudioPlayer.cpp b/libvideoeditor/lvpp/VideoEditorAudioPlayer.cpp
index 219b849..66800ea 100755
--- a/libvideoeditor/lvpp/VideoEditorAudioPlayer.cpp
+++ b/libvideoeditor/lvpp/VideoEditorAudioPlayer.cpp
@@ -511,7 +511,7 @@ status_t VideoEditorAudioPlayer::start(bool sourceAlreadyStarted) {
if (mAudioSink.get() != NULL) {
status_t err = mAudioSink->open(
- mSampleRate, numChannels, AUDIO_FORMAT_PCM_16_BIT,
+ mSampleRate, numChannels, CHANNEL_MASK_USE_CHANNEL_ORDER, AUDIO_FORMAT_PCM_16_BIT,
DEFAULT_AUDIOSINK_BUFFERCOUNT,
&VideoEditorAudioPlayer::AudioSinkCallback, this);
if (err != OK) {
diff --git a/libvideoeditor/lvpp/VideoEditorPlayer.cpp b/libvideoeditor/lvpp/VideoEditorPlayer.cpp
index fa2834a..cb2edde 100755
--- a/libvideoeditor/lvpp/VideoEditorPlayer.cpp
+++ b/libvideoeditor/lvpp/VideoEditorPlayer.cpp
@@ -383,7 +383,8 @@ status_t VideoEditorPlayer::VeAudioOutput::getPosition(uint32_t *position) {
}
status_t VideoEditorPlayer::VeAudioOutput::open(
- uint32_t sampleRate, int channelCount, audio_format_t format, int bufferCount,
+ uint32_t sampleRate, int channelCount, audio_channel_mask_t channelMask,
+ audio_format_t format, int bufferCount,
AudioCallback cb, void *cookie) {
mCallback = cb;
@@ -413,14 +414,26 @@ status_t VideoEditorPlayer::VeAudioOutput::open(
frameCount = (sampleRate*afFrameCount*bufferCount)/afSampleRate;
+ if (channelMask == CHANNEL_MASK_USE_CHANNEL_ORDER) {
+ switch(channelCount) {
+ case 1:
+ channelMask = AUDIO_CHANNEL_OUT_MONO;
+ break;
+ case 2:
+ channelMask = AUDIO_CHANNEL_OUT_STEREO;
+ break;
+ default:
+ return NO_INIT;
+ }
+ }
+
AudioTrack *t;
if (mCallback != NULL) {
t = new AudioTrack(
mStreamType,
sampleRate,
format,
- (channelCount == 2) ?
- AUDIO_CHANNEL_OUT_STEREO : AUDIO_CHANNEL_OUT_MONO,
+ channelMask,
frameCount,
0 /* flags */,
CallbackWrapper,
@@ -430,8 +443,7 @@ status_t VideoEditorPlayer::VeAudioOutput::open(
mStreamType,
sampleRate,
format,
- (channelCount == 2) ?
- AUDIO_CHANNEL_OUT_STEREO : AUDIO_CHANNEL_OUT_MONO,
+ channelMask,
frameCount);
}
diff --git a/libvideoeditor/lvpp/VideoEditorPlayer.h b/libvideoeditor/lvpp/VideoEditorPlayer.h
index 88a2aeb..34f9bc5 100755
--- a/libvideoeditor/lvpp/VideoEditorPlayer.h
+++ b/libvideoeditor/lvpp/VideoEditorPlayer.h
@@ -49,7 +49,7 @@ class VideoEditorPlayer : public MediaPlayerInterface {
virtual int getSessionId();
virtual status_t open(
- uint32_t sampleRate, int channelCount,
+ uint32_t sampleRate, int channelCount, audio_channel_mask_t channelMask,
audio_format_t format, int bufferCount,
AudioCallback cb, void *cookie);