OSDN Git Service

Disable our fancy logic to respect both sink and source's native formats
authorAndreas Huber <andih@google.com>
Thu, 7 Mar 2013 18:57:07 +0000 (10:57 -0800)
committerAndreas Huber <andih@google.com>
Thu, 7 Mar 2013 18:57:07 +0000 (10:57 -0800)
since it isn't actually supported by anything in the field.

Change-Id: I9cd038d7631105de26303312ca87c472d67034d4

media/libstagefright/wifi-display/VideoFormats.cpp
media/libstagefright/wifi-display/VideoFormats.h
media/libstagefright/wifi-display/source/WifiDisplaySource.cpp

index 9ad8c3c..d171c6f 100644 (file)
@@ -256,7 +256,7 @@ bool VideoFormats::parseFormatSpec(const char *spec) {
     return GetConfiguration(mNativeType, mNativeIndex, NULL, NULL, NULL, NULL);
 }
 
-AString VideoFormats::getFormatSpec() const {
+AString VideoFormats::getFormatSpec(bool forM4Message) const {
     CHECK_EQ(kNumResolutionTypes, 3);
 
     // wfd_video_formats:
@@ -277,7 +277,7 @@ AString VideoFormats::getFormatSpec() const {
 
     return StringPrintf(
             "%02x 00 02 02 %08x %08x %08x 00 0000 0000 00 none none",
-            (mNativeIndex << 3) | mNativeType,
+            forM4Message ? 0x00 : ((mNativeIndex << 3) | mNativeType),
             mResolutionEnabled[0],
             mResolutionEnabled[1],
             mResolutionEnabled[2]);
@@ -289,6 +289,10 @@ bool VideoFormats::PickBestFormat(
         const VideoFormats &sourceSupported,
         ResolutionType *chosenType,
         size_t *chosenIndex) {
+#if 0
+    // Support for the native format is a great idea, the spec includes
+    // these features, but nobody supports it and the tests don't validate it.
+
     ResolutionType nativeType;
     size_t nativeIndex;
     sinkSupported.getNativeResolution(&nativeType, &nativeIndex);
@@ -316,6 +320,7 @@ bool VideoFormats::PickBestFormat(
         ALOGW("Source advertised native resolution that it doesn't "
               "actually support... ignoring");
     }
+#endif
 
     bool first = true;
     uint32_t bestScore = 0;
index a84407a..69e2197 100644 (file)
@@ -60,7 +60,7 @@ struct VideoFormats {
             bool *interlaced);
 
     bool parseFormatSpec(const char *spec);
-    AString getFormatSpec() const;
+    AString getFormatSpec(bool forM4Message = false) const;
 
     static bool PickBestFormat(
             const VideoFormats &sinkSupported,
index 07eb237..b8524f6 100644 (file)
@@ -59,18 +59,10 @@ WifiDisplaySource::WifiDisplaySource(
       mHDCPPort(0),
       mHDCPInitializationComplete(false),
       mSetupTriggerDeferred(false) {
-    mSupportedSourceVideoFormats.enableAll();
+    mSupportedSourceVideoFormats.disableAll();
 
     mSupportedSourceVideoFormats.setNativeResolution(
             VideoFormats::RESOLUTION_CEA, 5);  // 1280x720 p30
-
-    // Disable resolutions above 1080p since the encoder won't be able to
-    // handle them.
-    mSupportedSourceVideoFormats.setResolutionEnabled(
-            VideoFormats::RESOLUTION_VESA, 28, false);  // 1920x1200 p30
-
-    mSupportedSourceVideoFormats.setResolutionEnabled(
-            VideoFormats::RESOLUTION_VESA, 29, false);  // 1920x1200 p60
 }
 
 WifiDisplaySource::~WifiDisplaySource() {
@@ -607,7 +599,7 @@ status_t WifiDisplaySource::sendM4(int32_t sessionID) {
         chosenVideoFormat.setNativeResolution(
                 mChosenVideoResolutionType, mChosenVideoResolutionIndex);
 
-        body.append(chosenVideoFormat.getFormatSpec());
+        body.append(chosenVideoFormat.getFormatSpec(true /* forM4Message */));
         body.append("\r\n");
     }