summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2012-09-07 15:05:53 -0700
committerAndreas Huber <andih@google.com>2012-09-07 15:05:53 -0700
commit7977e85f7287f2b0e7a5de94e853e6073736e03b (patch)
tree46bf55f969c93f3ccfd3fe7e8ae7de5897281b05 /media
parentd06ab147394b0b49679c924a51d77c91dea04d82 (diff)
downloadframeworks_av-7977e85f7287f2b0e7a5de94e853e6073736e03b.zip
frameworks_av-7977e85f7287f2b0e7a5de94e853e6073736e03b.tar.gz
frameworks_av-7977e85f7287f2b0e7a5de94e853e6073736e03b.tar.bz2
Make wfd code work with both old and new dongles.
Change-Id: Idc750dc334c47a171791587dd7e7281d565ff566
Diffstat (limited to 'media')
-rw-r--r--media/libstagefright/wifi-display/ANetworkSession.cpp8
-rw-r--r--media/libstagefright/wifi-display/source/PlaybackSession.cpp42
2 files changed, 26 insertions, 24 deletions
diff --git a/media/libstagefright/wifi-display/ANetworkSession.cpp b/media/libstagefright/wifi-display/ANetworkSession.cpp
index 4ddd778..1c4f535 100644
--- a/media/libstagefright/wifi-display/ANetworkSession.cpp
+++ b/media/libstagefright/wifi-display/ANetworkSession.cpp
@@ -331,11 +331,15 @@ status_t ANetworkSession::Session::readMore() {
notify->post();
#if 1
- // XXX The dongle sends the wrong content length header on a
+ // XXX The (old) dongle sends the wrong content length header on a
// SET_PARAMETER request that signals a "wfd_idr_request".
// (17 instead of 19).
const char *content = msg->getContent();
- if (content && !memcmp(content, "wfd_idr_request\r\n", 17)) {
+ if (content
+ && !memcmp(content, "wfd_idr_request\r\n", 17)
+ && length >= 19
+ && mInBuffer.c_str()[length] == '\r'
+ && mInBuffer.c_str()[length + 1] == '\n') {
length += 2;
}
#endif
diff --git a/media/libstagefright/wifi-display/source/PlaybackSession.cpp b/media/libstagefright/wifi-display/source/PlaybackSession.cpp
index 6c01c7b..5665093 100644
--- a/media/libstagefright/wifi-display/source/PlaybackSession.cpp
+++ b/media/libstagefright/wifi-display/source/PlaybackSession.cpp
@@ -42,7 +42,6 @@
#include <media/stagefright/MPEG2TSWriter.h>
#include <media/stagefright/SurfaceMediaSource.h>
#include <media/stagefright/Utils.h>
-#include <ui/DisplayInfo.h>
#include <OMX_IVCommon.h>
@@ -598,10 +597,6 @@ status_t WifiDisplaySource::PlaybackSession::setupPacketizer() {
mCodecLooper = new ALooper;
mCodecLooper->start();
- DisplayInfo info;
- SurfaceComposerClient::getDisplayInfo(0, &info);
-
- // sp<SurfaceMediaSource> source = new SurfaceMediaSource(info.w, info.h);
sp<SurfaceMediaSource> source = new SurfaceMediaSource(width(), height());
#if 0
@@ -642,7 +637,8 @@ status_t WifiDisplaySource::PlaybackSession::setupPacketizer() {
CHECK(service != NULL);
// Add one reference to account for the serializer.
- err = source->setMaxAcquiredBufferCount(numInputBuffers + 1);
+ // Add another one for unknown reasons.
+ err = source->setMaxAcquiredBufferCount(numInputBuffers + 2);
CHECK_EQ(err, (status_t)OK);
mBufferQueue = source->getBufferQueue();
@@ -650,7 +646,6 @@ status_t WifiDisplaySource::PlaybackSession::setupPacketizer() {
if (mLegacyMode) {
service->connectDisplay(mBufferQueue);
}
-#endif
#if 0
sp<AudioSource> audioSource = new AudioSource(
@@ -658,24 +653,27 @@ status_t WifiDisplaySource::PlaybackSession::setupPacketizer() {
48000 /* sampleRate */,
2 /* channelCount */); // XXX AUDIO_CHANNEL_IN_STEREO?
- CHECK_EQ((status_t)OK, audioSource->initCheck());
-
- audioSource->setUseLooperTime(true);
+ if (audioSource->initCheck() == OK) {
+ audioSource->setUseLooperTime(true);
- index = mSerializer->addSource(audioSource);
- CHECK_GE(index, 0);
+ index = mSerializer->addSource(audioSource);
+ CHECK_GE(index, 0);
- sp<AMessage> audioFormat;
- err = convertMetaDataToMessage(audioSource->getFormat(), &audioFormat);
- CHECK_EQ(err, (status_t)OK);
+ sp<AMessage> audioFormat;
+ err = convertMetaDataToMessage(audioSource->getFormat(), &audioFormat);
+ CHECK_EQ(err, (status_t)OK);
- sp<AMessage> audioNotify = new AMessage(kWhatConverterNotify, id());
- audioNotify->setSize("trackIndex", index);
+ sp<AMessage> audioNotify = new AMessage(kWhatConverterNotify, id());
+ audioNotify->setSize("trackIndex", index);
- converter = new Converter(audioNotify, mCodecLooper, audioFormat);
- looper()->registerHandler(converter);
+ converter = new Converter(audioNotify, mCodecLooper, audioFormat);
+ looper()->registerHandler(converter);
- mTracks.add(index, new Track(converter));
+ mTracks.add(index, new Track(converter));
+ } else {
+ ALOGW("Unable to instantiate audio source");
+ }
+#endif
#endif
return OK;
@@ -686,11 +684,11 @@ sp<ISurfaceTexture> WifiDisplaySource::PlaybackSession::getSurfaceTexture() {
}
int32_t WifiDisplaySource::PlaybackSession::width() const {
- return 720;
+ return mLegacyMode ? 720 : 1280;
}
int32_t WifiDisplaySource::PlaybackSession::height() const {
- return 1280;
+ return mLegacyMode ? 1280 : 720;
}
void WifiDisplaySource::PlaybackSession::scheduleSendSR() {