| Index: media/cast/logging/raw_event_subscriber_bundle.h
|
| diff --git a/media/cast/logging/raw_event_subscriber_bundle.h b/media/cast/logging/raw_event_subscriber_bundle.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..58ab21e6e8abaebc186d397c32294f2f6c0cb205
|
| --- /dev/null
|
| +++ b/media/cast/logging/raw_event_subscriber_bundle.h
|
| @@ -0,0 +1,84 @@
|
| +// Copyright 2014 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef MEDIA_CAST_LOGGING_RAW_EVENT_SUBSCRIBER_BUNDLE_H_
|
| +#define MEDIA_CAST_LOGGING_RAW_EVENT_SUBSCRIBER_BUNDLE_H_
|
| +
|
| +#include "base/macros.h"
|
| +#include "base/memory/ref_counted.h"
|
| +#include "media/cast/logging/encoding_event_subscriber.h"
|
| +#include "media/cast/logging/stats_event_subscriber.h"
|
| +
|
| +namespace media {
|
| +namespace cast {
|
| +
|
| +class CastEnvironment;
|
| +class ReceiverTimeOffsetEstimator;
|
| +
|
| +// 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;
|
| +
|
| +// A bundle for raw event subscribers for a single stream.
|
| +// It contains an EncodingEventSubscriber and a StatsSubscriber.
|
| +class RawEventSubscriberBundleForStream {
|
| + public:
|
| + RawEventSubscriberBundleForStream(
|
| + const scoped_refptr<CastEnvironment>& cast_environment,
|
| + bool is_audio,
|
| + ReceiverTimeOffsetEstimator* offset_estimator);
|
| + ~RawEventSubscriberBundleForStream();
|
| +
|
| + EncodingEventSubscriber* GetEncodingEventSubscriber();
|
| + StatsEventSubscriber* GetStatsEventSubscriber();
|
| +
|
| + private:
|
| + const scoped_refptr<CastEnvironment> cast_environment_;
|
| + EncodingEventSubscriber event_subscriber_;
|
| + StatsEventSubscriber stats_subscriber_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(RawEventSubscriberBundleForStream);
|
| +};
|
| +
|
| +// A bundle of subscribers for all streams. An instance of this object
|
| +// is associated with a CastEnvironment.
|
| +// This class can be used for managing event subscribers
|
| +// in a session where they could be multiple streams (i.e. CastSessionDelegate).
|
| +// It also contains a ReceiverTimeOffsetEstimator that is shared by subscribers
|
| +// of different streams.
|
| +class RawEventSubscriberBundle {
|
| + public:
|
| + explicit RawEventSubscriberBundle(
|
| + const scoped_refptr<CastEnvironment>& cast_environment);
|
| + ~RawEventSubscriberBundle();
|
| +
|
| + void AddEventSubscribers(bool is_audio);
|
| + void RemoveEventSubscribers(bool is_audio);
|
| + EncodingEventSubscriber* GetEncodingEventSubscriber(
|
| + bool is_audio);
|
| + StatsEventSubscriber* GetStatsEventSubscriber(bool is_audio);
|
| +
|
| + private:
|
| + // Map from (is_audio) -> RawEventSubscriberBundleForStream.
|
| + // TODO(imcheng): This works because we only have 1 audio and 1 video stream.
|
| + // This needs to scale better.
|
| + typedef std::map<bool, linked_ptr<RawEventSubscriberBundleForStream> >
|
| + SubscribersMapByStream;
|
| + const scoped_refptr<CastEnvironment> cast_environment_;
|
| + SubscribersMapByStream subscribers_;
|
| + scoped_ptr<ReceiverTimeOffsetEstimator> receiver_offset_estimator_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(RawEventSubscriberBundle);
|
| +};
|
| +
|
| +} // namespace cast
|
| +} // namespace media
|
| +
|
| +#endif // MEDIA_CAST_LOGGING_RAW_EVENT_SUBSCRIBER_BUNDLE_H_
|
| +
|
|
|