summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/wifi-display/source
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2013-02-05 17:55:48 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2013-02-05 17:55:48 +0000
commita0216af1a45b4c657a5801b766ec34a82fac1b3e (patch)
treea07cdb30af5365237b9744c41279309490d18514 /media/libstagefright/wifi-display/source
parent6bb6f2f9cba46aa2b853357a139ae5166c5b6713 (diff)
parent7cc0c29d6a7b76520ec588437ab51d5b8eac9ebc (diff)
downloadframeworks_av-a0216af1a45b4c657a5801b766ec34a82fac1b3e.zip
frameworks_av-a0216af1a45b4c657a5801b766ec34a82fac1b3e.tar.gz
frameworks_av-a0216af1a45b4c657a5801b766ec34a82fac1b3e.tar.bz2
Merge "Revive the code to support TCP interleaved transport"
Diffstat (limited to 'media/libstagefright/wifi-display/source')
-rw-r--r--media/libstagefright/wifi-display/source/PlaybackSession.cpp12
-rw-r--r--media/libstagefright/wifi-display/source/WifiDisplaySource.cpp40
-rw-r--r--media/libstagefright/wifi-display/source/WifiDisplaySource.h1
3 files changed, 34 insertions, 19 deletions
diff --git a/media/libstagefright/wifi-display/source/PlaybackSession.cpp b/media/libstagefright/wifi-display/source/PlaybackSession.cpp
index e542908..ede4e60 100644
--- a/media/libstagefright/wifi-display/source/PlaybackSession.cpp
+++ b/media/libstagefright/wifi-display/source/PlaybackSession.cpp
@@ -542,6 +542,18 @@ void WifiDisplaySource::PlaybackSession::onMessageReceived(
onFinishPlay2();
} else if (what == Sender::kWhatSessionDead) {
notifySessionDead();
+ } else if (what == Sender::kWhatBinaryData) {
+ sp<AMessage> notify = mNotify->dup();
+ notify->setInt32("what", kWhatBinaryData);
+
+ int32_t channel;
+ CHECK(msg->findInt32("channel", &channel));
+ notify->setInt32("channel", channel);
+
+ sp<ABuffer> data;
+ CHECK(msg->findBuffer("data", &data));
+ notify->setBuffer("data", data);
+ notify->post();
} else {
TRESPASS();
}
diff --git a/media/libstagefright/wifi-display/source/WifiDisplaySource.cpp b/media/libstagefright/wifi-display/source/WifiDisplaySource.cpp
index 981d5f9..825ebc6 100644
--- a/media/libstagefright/wifi-display/source/WifiDisplaySource.cpp
+++ b/media/libstagefright/wifi-display/source/WifiDisplaySource.cpp
@@ -597,15 +597,6 @@ status_t WifiDisplaySource::sendM3(int32_t sessionID) {
status_t WifiDisplaySource::sendM4(int32_t sessionID) {
CHECK_EQ(sessionID, mClientSessionID);
- AString transportString = "UDP";
-
- char val[PROPERTY_VALUE_MAX];
- if (property_get("media.wfd.enable-tcp", val, NULL)
- && (!strcasecmp("true", val) || !strcmp("1", val))) {
- ALOGI("Using TCP transport.");
- transportString = "TCP";
- }
-
AString body;
if (mSinkSupportsVideo) {
@@ -630,11 +621,11 @@ status_t WifiDisplaySource::sendM4(int32_t sessionID) {
body.append(
StringPrintf(
- "wfd_presentation_URL: rtsp://%s/wfd1.0/streamid=0 none\r\n"
- "wfd_client_rtp_ports: RTP/AVP/%s;unicast %d 0 mode=play\r\n",
- mClientInfo.mLocalIP.c_str(),
- transportString.c_str(),
- mChosenRTPPort));
+ "wfd_presentation_URL: rtsp://%s/wfd1.0/streamid=0 none\r\n",
+ mClientInfo.mLocalIP.c_str()));
+
+ body.append(mWfdClientRtpPorts);
+ body.append("\r\n");
AString request = "SET_PARAMETER rtsp://localhost/wfd1.0 RTSP/1.0\r\n";
AppendCommonResponse(&request, mNextCSeq);
@@ -797,18 +788,29 @@ status_t WifiDisplaySource::onReceiveM3Response(
return ERROR_MALFORMED;
}
- unsigned port0, port1;
+ unsigned port0 = 0, port1 = 0;
if (sscanf(value.c_str(),
"RTP/AVP/UDP;unicast %u %u mode=play",
&port0,
- &port1) != 2
- || port0 == 0 || port0 > 65535 || port1 != 0) {
- ALOGE("Sink chose its wfd_client_rtp_ports poorly (%s)",
+ &port1) == 2
+ || sscanf(value.c_str(),
+ "RTP/AVP/TCP;unicast %u %u mode=play",
+ &port0,
+ &port1) == 2) {
+ if (port0 == 0 || port0 > 65535 || port1 != 0) {
+ ALOGE("Sink chose its wfd_client_rtp_ports poorly (%s)",
+ value.c_str());
+
+ return ERROR_MALFORMED;
+ }
+ } else if (strcmp(value.c_str(), "RTP/AVP/TCP;interleaved mode=play")) {
+ ALOGE("Unsupported value for wfd_client_rtp_ports (%s)",
value.c_str());
- return ERROR_MALFORMED;
+ return ERROR_UNSUPPORTED;
}
+ mWfdClientRtpPorts = value;
mChosenRTPPort = port0;
if (!params->findParameter("wfd_video_formats", &value)) {
diff --git a/media/libstagefright/wifi-display/source/WifiDisplaySource.h b/media/libstagefright/wifi-display/source/WifiDisplaySource.h
index fec2c6d..724462c 100644
--- a/media/libstagefright/wifi-display/source/WifiDisplaySource.h
+++ b/media/libstagefright/wifi-display/source/WifiDisplaySource.h
@@ -119,6 +119,7 @@ private:
uint32_t mStopReplyID;
+ AString mWfdClientRtpPorts;
int32_t mChosenRTPPort; // extracted from "wfd_client_rtp_ports"
bool mSinkSupportsVideo;