Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(608)

Unified Diff: content/renderer/media/peer_connection_tracker.cc

Issue 1009543003: Slight reduction in string copying for WebRTC stats. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/renderer/media/peer_connection_tracker.cc
diff --git a/content/renderer/media/peer_connection_tracker.cc b/content/renderer/media/peer_connection_tracker.cc
index 46eeee9f669b77888a794f966fd5ef93817861e6..728f218db531664e50e5bd098a2971075a764f6d 100644
--- a/content/renderer/media/peer_connection_tracker.cc
+++ b/content/renderer/media/peer_connection_tracker.cc
@@ -22,6 +22,8 @@
using std::string;
using webrtc::MediaConstraintsInterface;
+using webrtc::StatsReport;
+using webrtc::StatsReports;
using blink::WebRTCPeerConnectionHandlerClient;
namespace content {
@@ -204,8 +206,7 @@ static string GetIceGatheringStateString(
// Note:
// The format must be consistent with what webrtc_internals.js expects.
// If you change it here, you must change webrtc_internals.js as well.
-static base::DictionaryValue* GetDictValueStats(
- const webrtc::StatsReport& report) {
+static base::DictionaryValue* GetDictValueStats(const StatsReport& report) {
if (report.values().empty())
return NULL;
@@ -216,8 +217,30 @@ static base::DictionaryValue* GetDictValueStats(
dict->Set("values", values);
for (const auto& v : report.values()) {
- values->AppendString(v.second->display_name());
- values->AppendString(v.second->ToString());
+ const StatsReport::ValuePtr& value = v.second;
+ values->AppendString(value->display_name());
+ switch (value->type()) {
+ case StatsReport::Value::kInt:
+ values->AppendInteger(value->int_val());
+ break;
+ case StatsReport::Value::kFloat:
+ values->AppendDouble(value->float_val());
+ break;
+ case StatsReport::Value::kString:
+ values->AppendString(value->string_val());
+ break;
+ case StatsReport::Value::kStaticString:
+ values->AppendString(value->static_string_val());
+ break;
+ case StatsReport::Value::kBool:
+ values->AppendBoolean(value->bool_val());
+ break;
+ case StatsReport::Value::kInt64: // int64 isn't supported, so use string.
perkj_chrome 2015/03/16 10:36:39 todo:tommi fix int64 support?
tommi (sloooow) - chröme 2015/03/16 18:07:41 It's not supported by base::ListValue and apparent
+ case StatsReport::Value::kId:
+ default:
+ values->AppendString(value->ToString());
+ break;
+ }
}
return dict;
@@ -225,7 +248,7 @@ static base::DictionaryValue* GetDictValueStats(
// Builds a DictionaryValue from the StatsReport.
// The caller takes the ownership of the returned value.
-static base::DictionaryValue* GetDictValue(const webrtc::StatsReport& report) {
+static base::DictionaryValue* GetDictValue(const StatsReport& report) {
scoped_ptr<base::DictionaryValue> stats, result;
stats.reset(GetDictValueStats(report));
@@ -248,7 +271,7 @@ class InternalStatsObserver : public webrtc::StatsObserver {
InternalStatsObserver(int lid)
: lid_(lid), main_thread_(base::ThreadTaskRunnerHandle::Get()) {}
- void OnComplete(const webrtc::StatsReports& reports) override {
+ void OnComplete(const StatsReports& reports) override {
scoped_ptr<base::ListValue> list(new base::ListValue());
for (const auto* r : reports) {
« no previous file with comments | « content/browser/resources/media/stats_table.js ('k') | content/renderer/media/rtc_peer_connection_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698