summaryrefslogtreecommitdiff
path: root/media/libstagefright/wifi-display/source/PlaybackSession.cpp
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2012-10-04 11:46:29 -0700
committerAndreas Huber <andih@google.com>2012-10-04 13:31:04 -0700
commite7bd24af08ef0722fb124a550662bcec48c56f86 (patch)
treea64d2bf14eab3008fb53f63ea8c01ba7c600c8e1 /media/libstagefright/wifi-display/source/PlaybackSession.cpp
parentd69fd4d2567f9fce02252ce10d7ae3a28fc79e04 (diff)
Optionally emit LPCM audio instead of using AAC in wifi display code
related-to-bug: 7248248 May decrease power usage at the cost of significantly increasing audio bitrate. Use "adb shell setprop media.wfd.use-pcm-audio true" to turn it on (must be done before connecting). Change-Id: I7ebeadf3209e01522a2644948287b23d7c383c7e
Diffstat (limited to 'media/libstagefright/wifi-display/source/PlaybackSession.cpp')
-rw-r--r--media/libstagefright/wifi-display/source/PlaybackSession.cpp24
1 files changed, 14 insertions, 10 deletions
diff --git a/media/libstagefright/wifi-display/source/PlaybackSession.cpp b/media/libstagefright/wifi-display/source/PlaybackSession.cpp
index ffdafed9..6ef5e403 100644
--- a/media/libstagefright/wifi-display/source/PlaybackSession.cpp
+++ b/media/libstagefright/wifi-display/source/PlaybackSession.cpp
@@ -312,10 +312,11 @@ WifiDisplaySource::PlaybackSession::PlaybackSession(
status_t WifiDisplaySource::PlaybackSession::init(
const char *clientIP, int32_t clientRtp, int32_t clientRtcp,
- TransportMode transportMode) {
+ TransportMode transportMode,
+ bool usePCMAudio) {
mClientIP = clientIP;
- status_t err = setupPacketizer();
+ status_t err = setupPacketizer(usePCMAudio);
if (err != OK) {
return err;
@@ -823,7 +824,7 @@ void WifiDisplaySource::PlaybackSession::onMessageReceived(
}
}
-status_t WifiDisplaySource::PlaybackSession::setupPacketizer() {
+status_t WifiDisplaySource::PlaybackSession::setupPacketizer(bool usePCMAudio) {
mPacketizer = new TSPacketizer;
status_t err = addVideoSource();
@@ -832,12 +833,15 @@ status_t WifiDisplaySource::PlaybackSession::setupPacketizer() {
return err;
}
- return addAudioSource();
+ return addAudioSource(usePCMAudio);
}
status_t WifiDisplaySource::PlaybackSession::addSource(
bool isVideo, const sp<MediaSource> &source, bool isRepeaterSource,
- size_t *numInputBuffers) {
+ bool usePCMAudio, size_t *numInputBuffers) {
+ CHECK(!usePCMAudio || !isVideo);
+ CHECK(!isRepeaterSource || isVideo);
+
sp<ALooper> pullLooper = new ALooper;
pullLooper->setName("pull_looper");
@@ -875,7 +879,7 @@ status_t WifiDisplaySource::PlaybackSession::addSource(
notify->setSize("trackIndex", trackIndex);
sp<Converter> converter =
- new Converter(notify, codecLooper, format);
+ new Converter(notify, codecLooper, format, usePCMAudio);
if (converter->initCheck() != OK) {
return converter->initCheck();
@@ -928,12 +932,12 @@ status_t WifiDisplaySource::PlaybackSession::addVideoSource() {
size_t numInputBuffers;
status_t err = addSource(
true /* isVideo */, videoSource, true /* isRepeaterSource */,
- &numInputBuffers);
+ false /* usePCMAudio */, &numInputBuffers);
#else
size_t numInputBuffers;
status_t err = addSource(
true /* isVideo */, source, false /* isRepeaterSource */,
- &numInputBuffers);
+ false /* usePCMAudio */, &numInputBuffers);
#endif
if (err != OK) {
@@ -948,7 +952,7 @@ status_t WifiDisplaySource::PlaybackSession::addVideoSource() {
return OK;
}
-status_t WifiDisplaySource::PlaybackSession::addAudioSource() {
+status_t WifiDisplaySource::PlaybackSession::addAudioSource(bool usePCMAudio) {
sp<AudioSource> audioSource = new AudioSource(
AUDIO_SOURCE_REMOTE_SUBMIX,
48000 /* sampleRate */,
@@ -957,7 +961,7 @@ status_t WifiDisplaySource::PlaybackSession::addAudioSource() {
if (audioSource->initCheck() == OK) {
return addSource(
false /* isVideo */, audioSource, false /* isRepeaterSource */,
- NULL /* numInputBuffers */);
+ usePCMAudio, NULL /* numInputBuffers */);
}
ALOGW("Unable to instantiate audio source");