summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/wifi-display/Parameters.cpp
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2012-09-18 14:47:48 -0700
committerAndreas Huber <andih@google.com>2012-09-19 15:12:23 -0700
commitb8c7bd418f0ee5b88923b0e0817e3a4acc53cf8d (patch)
treeddaddb13e3cb8036d14ff3931fb1a8a39b8f105b /media/libstagefright/wifi-display/Parameters.cpp
parentefbb781c15abf8e085f5ab8d39710bd58ea0b6e4 (diff)
downloadframeworks_av-b8c7bd418f0ee5b88923b0e0817e3a4acc53cf8d.zip
frameworks_av-b8c7bd418f0ee5b88923b0e0817e3a4acc53cf8d.tar.gz
frameworks_av-b8c7bd418f0ee5b88923b0e0817e3a4acc53cf8d.tar.bz2
Instantiate HDCP module, add PES_private_data for encrypted streams.
Change-Id: I970f561a56a1d489a392c3480dec13f4ed7b43bd
Diffstat (limited to 'media/libstagefright/wifi-display/Parameters.cpp')
-rw-r--r--media/libstagefright/wifi-display/Parameters.cpp90
1 files changed, 90 insertions, 0 deletions
diff --git a/media/libstagefright/wifi-display/Parameters.cpp b/media/libstagefright/wifi-display/Parameters.cpp
new file mode 100644
index 0000000..f7118b3
--- /dev/null
+++ b/media/libstagefright/wifi-display/Parameters.cpp
@@ -0,0 +1,90 @@
+/*
+ * Copyright 2012, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "Parameters.h"
+
+#include <media/stagefright/MediaErrors.h>
+
+namespace android {
+
+// static
+sp<Parameters> Parameters::Parse(const char *data, size_t size) {
+ sp<Parameters> params = new Parameters;
+ status_t err = params->parse(data, size);
+
+ if (err != OK) {
+ return NULL;
+ }
+
+ return params;
+}
+
+Parameters::Parameters() {}
+
+Parameters::~Parameters() {}
+
+status_t Parameters::parse(const char *data, size_t size) {
+ size_t i = 0;
+ while (i < size) {
+ size_t nameStart = i;
+ while (i < size && data[i] != ':') {
+ ++i;
+ }
+
+ if (i == size || i == nameStart) {
+ return ERROR_MALFORMED;
+ }
+
+ AString name(&data[nameStart], i - nameStart);
+ name.trim();
+ name.tolower();
+
+ ++i;
+
+ size_t valueStart = i;
+
+ while (i + 1 < size && (data[i] != '\r' || data[i + 1] != '\n')) {
+ ++i;
+ }
+
+ AString value(&data[valueStart], i - valueStart);
+ value.trim();
+
+ mDict.add(name, value);
+
+ i += 2;
+ }
+
+ return OK;
+}
+
+bool Parameters::findParameter(const char *name, AString *value) const {
+ AString key = name;
+ key.tolower();
+
+ ssize_t index = mDict.indexOfKey(key);
+
+ if (index < 0) {
+ value->clear();
+
+ return false;
+ }
+
+ *value = mDict.valueAt(index);
+ return true;
+}
+
+} // namespace android