OSDN Git Service

Audio and video bitrate are now configurable through system properties
authorAndreas Huber <andih@google.com>
Wed, 12 Sep 2012 21:06:17 +0000 (14:06 -0700)
committerThe Android Automerger <android-build@android.com>
Thu, 13 Sep 2012 22:46:38 +0000 (15:46 -0700)
adb shell setprop media.wfd.audio-bitrate 64000
adb shell setprop media.wfd.video-bitrate 10000000

are the defaults.

Change-Id: Ib4d700748bdac2adffc6e7e31aff9c9f998e20f0

media/libstagefright/wifi-display/source/Converter.cpp

index 0b29df9..7c3b908 100644 (file)
@@ -20,6 +20,7 @@
 
 #include "Converter.h"
 
+#include <cutils/properties.h>
 #include <gui/SurfaceTextureClient.h>
 #include <media/ICrypto.h>
 #include <media/stagefright/foundation/ABuffer.h>
@@ -62,6 +63,20 @@ sp<AMessage> Converter::getOutputFormat() const {
     return mOutputFormat;
 }
 
+static int32_t getBitrate(const char *propName, int32_t defaultValue) {
+    char val[PROPERTY_VALUE_MAX];
+    if (property_get(propName, val, NULL)) {
+        char *end;
+        unsigned long x = strtoul(val, &end, 10);
+
+        if (*end == '\0' && end > val && x > 0) {
+            return x;
+        }
+    }
+
+    return defaultValue;
+}
+
 status_t Converter::initEncoder() {
     AString inputMIME;
     CHECK(mInputFormat->findString("mime", &inputMIME));
@@ -87,10 +102,16 @@ status_t Converter::initEncoder() {
     mOutputFormat = mInputFormat->dup();
     mOutputFormat->setString("mime", outputMIME.c_str());
 
+    int32_t audioBitrate = getBitrate("media.wfd.audio-bitrate", 64000);
+    int32_t videoBitrate = getBitrate("media.wfd.video-bitrate", 10000000);
+
+    ALOGI("using audio bitrate of %d bps, video bitrate of %d bps",
+          audioBitrate, videoBitrate);
+
     if (isAudio) {
-        mOutputFormat->setInt32("bitrate", 64000);      // 64 kBit/sec
+        mOutputFormat->setInt32("bitrate", audioBitrate);
     } else {
-        mOutputFormat->setInt32("bitrate", 10000000);    // 10Mbit/sec
+        mOutputFormat->setInt32("bitrate", videoBitrate);
         mOutputFormat->setInt32("frame-rate", 60);
         mOutputFormat->setInt32("i-frame-interval", 3);  // Iframes every 3 secs
     }