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

Unified Diff: chrome/renderer/media/cast_session_delegate.cc

Issue 236123003: Cast: Provide more meaningful stats. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix compile Created 6 years, 8 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
« no previous file with comments | « chrome/renderer/media/cast_session_delegate.h ('k') | media/cast/cast.gyp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/renderer/media/cast_session_delegate.cc
diff --git a/chrome/renderer/media/cast_session_delegate.cc b/chrome/renderer/media/cast_session_delegate.cc
index b4e6f4f36aed246f3b2d1aa0bb2c188685b9ed8c..35aa7cac57a7a571b3dafcabd952a88a2c69ae3f 100644
--- a/chrome/renderer/media/cast_session_delegate.cc
+++ b/chrome/renderer/media/cast_session_delegate.cc
@@ -13,11 +13,9 @@
#include "media/cast/cast_config.h"
#include "media/cast/cast_environment.h"
#include "media/cast/cast_sender.h"
-#include "media/cast/logging/encoding_event_subscriber.h"
#include "media/cast/logging/log_serializer.h"
#include "media/cast/logging/logging_defines.h"
-#include "media/cast/logging/stats_event_subscriber.h"
-#include "media/cast/logging/stats_util.h"
+#include "media/cast/logging/raw_event_subscriber_bundle.h"
#include "media/cast/transport/cast_transport_config.h"
#include "media/cast/transport/cast_transport_sender.h"
@@ -29,19 +27,6 @@ using media::cast::VideoSenderConfig;
static base::LazyInstance<CastThreads> g_cast_threads =
LAZY_INSTANCE_INITIALIZER;
-namespace {
-
-// Allow 9MB for serialized video / audio event logs.
-const int kMaxSerializedBytes = 9000000;
-
-// Assume serialized log data for each frame will take up to 150 bytes.
-const int kMaxVideoEventEntries = kMaxSerializedBytes / 150;
-
-// Assume serialized log data for each frame will take up to 75 bytes.
-const int kMaxAudioEventEntries = kMaxSerializedBytes / 75;
-
-} // namespace
-
CastSessionDelegate::CastSessionDelegate()
: io_message_loop_proxy_(
content::RenderThread::Get()->GetIOMessageLoopProxy()),
@@ -51,17 +36,6 @@ CastSessionDelegate::CastSessionDelegate()
CastSessionDelegate::~CastSessionDelegate() {
DCHECK(io_message_loop_proxy_->BelongsToCurrentThread());
-
- if (cast_environment_.get()) {
- if (audio_event_subscriber_.get()) {
- cast_environment_->Logging()->RemoveRawEventSubscriber(
- audio_event_subscriber_.get());
- }
- if (video_event_subscriber_.get()) {
- cast_environment_->Logging()->RemoveRawEventSubscriber(
- video_event_subscriber_.get());
- }
- }
}
void CastSessionDelegate::StartAudio(
@@ -129,6 +103,9 @@ void CastSessionDelegate::StartUDP(const net::IPEndPoint& remote_endpoint) {
g_cast_threads.Get().GetAudioEncodeMessageLoopProxy(),
g_cast_threads.Get().GetVideoEncodeMessageLoopProxy());
+ event_subscribers_.reset(
+ new media::cast::RawEventSubscriberBundle(cast_environment_));
+
// Rationale for using unretained: The callback cannot be called after the
// destruction of CastTransportSenderIPC, and they both share the same thread.
cast_transport_.reset(new CastTransportSenderIPC(
@@ -143,61 +120,13 @@ void CastSessionDelegate::StartUDP(const net::IPEndPoint& remote_endpoint) {
void CastSessionDelegate::ToggleLogging(bool is_audio, bool enable) {
DCHECK(io_message_loop_proxy_->BelongsToCurrentThread());
- if (!cast_environment_.get())
+ if (!event_subscribers_.get())
return;
- if (enable) {
- if (is_audio) {
- if (!audio_event_subscriber_.get()) {
- audio_event_subscriber_.reset(new media::cast::EncodingEventSubscriber(
- media::cast::AUDIO_EVENT, kMaxAudioEventEntries));
- cast_environment_->Logging()->AddRawEventSubscriber(
- audio_event_subscriber_.get());
- }
- if (!audio_stats_subscriber_.get()) {
- audio_stats_subscriber_.reset(
- new media::cast::StatsEventSubscriber(media::cast::AUDIO_EVENT));
- cast_environment_->Logging()->AddRawEventSubscriber(
- audio_stats_subscriber_.get());
- }
- } else {
- if (!video_event_subscriber_.get()) {
- video_event_subscriber_.reset(new media::cast::EncodingEventSubscriber(
- media::cast::VIDEO_EVENT, kMaxVideoEventEntries));
- cast_environment_->Logging()->AddRawEventSubscriber(
- video_event_subscriber_.get());
- }
- if (!video_stats_subscriber_.get()) {
- video_stats_subscriber_.reset(
- new media::cast::StatsEventSubscriber(media::cast::VIDEO_EVENT));
- cast_environment_->Logging()->AddRawEventSubscriber(
- video_stats_subscriber_.get());
- }
- }
- } else {
- if (is_audio) {
- if (audio_event_subscriber_.get()) {
- cast_environment_->Logging()->RemoveRawEventSubscriber(
- audio_event_subscriber_.get());
- audio_event_subscriber_.reset();
- }
- if (audio_stats_subscriber_.get()) {
- cast_environment_->Logging()->RemoveRawEventSubscriber(
- audio_stats_subscriber_.get());
- audio_stats_subscriber_.reset();
- }
- } else {
- if (video_event_subscriber_.get()) {
- cast_environment_->Logging()->RemoveRawEventSubscriber(
- video_event_subscriber_.get());
- video_event_subscriber_.reset();
- }
- if (video_stats_subscriber_.get()) {
- cast_environment_->Logging()->RemoveRawEventSubscriber(
- video_stats_subscriber_.get());
- video_stats_subscriber_.reset();
- }
- }
- }
+
+ if (enable)
+ event_subscribers_->AddEventSubscribers(is_audio);
+ else
+ event_subscribers_->RemoveEventSubscribers(is_audio);
}
void CastSessionDelegate::GetEventLogsAndReset(
@@ -205,8 +134,13 @@ void CastSessionDelegate::GetEventLogsAndReset(
const EventLogsCallback& callback) {
DCHECK(io_message_loop_proxy_->BelongsToCurrentThread());
+ if (!event_subscribers_.get()) {
+ callback.Run(make_scoped_ptr(new base::BinaryValue).Pass());
+ return;
+ }
+
media::cast::EncodingEventSubscriber* subscriber =
- is_audio ? audio_event_subscriber_.get() : video_event_subscriber_.get();
+ event_subscribers_->GetEncodingEventSubscriber(is_audio);
if (!subscriber) {
callback.Run(make_scoped_ptr(new base::BinaryValue).Pass());
return;
@@ -218,13 +152,13 @@ void CastSessionDelegate::GetEventLogsAndReset(
subscriber->GetEventsAndReset(&metadata, &frame_events, &packet_events);
- scoped_ptr<char[]> serialized_log(new char[kMaxSerializedBytes]);
+ scoped_ptr<char[]> serialized_log(new char[media::cast::kMaxSerializedBytes]);
int output_bytes;
bool success = media::cast::SerializeEvents(metadata,
frame_events,
packet_events,
true,
- kMaxSerializedBytes,
+ media::cast::kMaxSerializedBytes,
serialized_log.get(),
&output_bytes);
@@ -243,22 +177,23 @@ void CastSessionDelegate::GetEventLogsAndReset(
void CastSessionDelegate::GetStatsAndReset(bool is_audio,
const StatsCallback& callback) {
+ DCHECK(io_message_loop_proxy_->BelongsToCurrentThread());
+
+ if (!event_subscribers_.get()) {
+ callback.Run(make_scoped_ptr(new base::DictionaryValue).Pass());
+ return;
+ }
+
media::cast::StatsEventSubscriber* subscriber =
- is_audio ? audio_stats_subscriber_.get() : video_stats_subscriber_.get();
+ event_subscribers_->GetStatsEventSubscriber(is_audio);
if (!subscriber) {
callback.Run(make_scoped_ptr(new base::DictionaryValue).Pass());
return;
}
- media::cast::FrameStatsMap frame_stats;
- subscriber->GetFrameStats(&frame_stats);
- media::cast::PacketStatsMap packet_stats;
- subscriber->GetPacketStats(&packet_stats);
+ scoped_ptr<base::DictionaryValue> stats = subscriber->GetStats();
subscriber->Reset();
- scoped_ptr<base::DictionaryValue> stats = media::cast::ConvertStats(
- frame_stats, packet_stats);
-
callback.Run(stats.Pass());
}
« no previous file with comments | « chrome/renderer/media/cast_session_delegate.h ('k') | media/cast/cast.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698