Merge "Make wfd code work with both old and new dongles." into jb-mr1-dev
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 @@
         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 @@
     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 @@
     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 @@
     if (mLegacyMode) {
         service->connectDisplay(mBufferQueue);
     }
-#endif
 
 #if 0
     sp<AudioSource> audioSource = new AudioSource(
@@ -658,24 +653,27 @@
             48000 /* sampleRate */,
             2 /* channelCount */);  // XXX AUDIO_CHANNEL_IN_STEREO?
 
-    CHECK_EQ((status_t)OK, audioSource->initCheck());
+    if (audioSource->initCheck() == OK) {
+        audioSource->setUseLooperTime(true);
 
-    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 @@
 }
 
 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() {