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

Side by Side Diff: media/cast/logging/raw_event_subscriber_bundle.h

Issue 236123003: Cast: Provide more meaningful stats. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed miu's comments 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef MEDIA_CAST_LOGGING_RAW_EVENT_SUBSCRIBER_BUNDLE_H_
6 #define MEDIA_CAST_LOGGING_RAW_EVENT_SUBSCRIBER_BUNDLE_H_
7
8 #include "base/macros.h"
9 #include "base/memory/ref_counted.h"
10 #include "media/cast/logging/encoding_event_subscriber.h"
11 #include "media/cast/logging/stats_event_subscriber.h"
12
13 namespace media {
14 namespace cast {
15
16 class CastEnvironment;
17 class ReceiverTimeOffsetEstimator;
18
19 // Allow 9MB for serialized video / audio event logs.
20 const int kMaxSerializedBytes = 9000000;
21
22 // Assume serialized log data for each frame will take up to 150 bytes.
23 const int kMaxVideoEventEntries = kMaxSerializedBytes / 150;
24
25 // Assume serialized log data for each frame will take up to 75 bytes.
26 const int kMaxAudioEventEntries = kMaxSerializedBytes / 75;
27
28 // A bundle for raw event subscribers for a single stream.
29 // It contains an EncodingEventSubscriber and a StatsSubscriber.
30 class RawEventSubscriberBundleForStream {
31 public:
32 RawEventSubscriberBundleForStream(
33 const scoped_refptr<CastEnvironment>& cast_environment,
34 bool is_audio,
35 ReceiverTimeOffsetEstimator* offset_estimator);
36 ~RawEventSubscriberBundleForStream();
37
38 EncodingEventSubscriber* GetEncodingEventSubscriber();
39 StatsEventSubscriber* GetStatsEventSubscriber();
40
41 private:
42 const scoped_refptr<CastEnvironment> cast_environment_;
43 EncodingEventSubscriber event_subscriber_;
44 StatsEventSubscriber stats_subscriber_;
45
46 DISALLOW_COPY_AND_ASSIGN(RawEventSubscriberBundleForStream);
47 };
48
49 // A bundle of subscribers for all streams. An instance of this object
50 // is associated with a CastEnvironment.
51 // This class can be used for managing event subscribers
52 // in a session where they could be multiple streams (i.e. CastSessionDelegate).
53 // It also contains a ReceiverTimeOffsetEstimator that is shared by subscribers
54 // of different streams.
55 class RawEventSubscriberBundle {
56 public:
57 explicit RawEventSubscriberBundle(
58 const scoped_refptr<CastEnvironment>& cast_environment);
59 ~RawEventSubscriberBundle();
60
61 void AddEventSubscribers(bool is_audio);
62 void RemoveEventSubscribers(bool is_audio);
63 EncodingEventSubscriber* GetEncodingEventSubscriber(
64 bool is_audio);
65 StatsEventSubscriber* GetStatsEventSubscriber(bool is_audio);
66
67 private:
68 // Map from (is_audio) -> RawEventSubscriberBundleForStream.
69 // TODO(imcheng): This works because we only have 1 audio and 1 video stream.
70 // This needs to scale better.
71 typedef std::map<bool, linked_ptr<RawEventSubscriberBundleForStream> >
72 SubscribersMapByStream;
73 const scoped_refptr<CastEnvironment> cast_environment_;
74 SubscribersMapByStream subscribers_;
75 scoped_ptr<ReceiverTimeOffsetEstimator> receiver_offset_estimator_;
76
77 DISALLOW_COPY_AND_ASSIGN(RawEventSubscriberBundle);
78 };
79
80 } // namespace cast
81 } // namespace media
82
83 #endif // MEDIA_CAST_LOGGING_RAW_EVENT_SUBSCRIBER_BUNDLE_H_
84
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698