// Copyright 2014 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef MEDIA_CAST_LOGGING_ENCODING_EVENT_SUBSCRIBER_H_ #define MEDIA_CAST_LOGGING_ENCODING_EVENT_SUBSCRIBER_H_ #include <stddef.h> #include <map> #include <memory> #include <vector> #include "base/threading/thread_checker.h" #include "media/cast/logging/logging_defines.h" #include "media/cast/logging/proto/raw_events.pb.h" #include "media/cast/logging/raw_event_subscriber.h" namespace media { namespace cast { // Number of packets per frame recorded by the subscriber. // Once the max number of packets has been reached, a new aggregated proto // will be created. static const int kMaxPacketsPerFrame = …; // Number of events per frame/packet proto recorded by the subscriber. // Once the max number of events has been reached, a new aggregated proto // will be created. static const int kMaxEventsPerProto = …; // Max number of AggregatedFrameEvent / AggregatedPacketEvent protos stored for // a frame. Once the max number of protos has been reached for that frame, // further events for that frame will be dropped. static const int kMaxProtosPerFrame = …; FrameEventList; PacketEventList; // A RawEventSubscriber implementation that subscribes to events, // encodes them in protocol buffer format, and aggregates them into a more // compact structure. Aggregation is per-frame, and uses a map with RTP // timestamp as key. Periodically, old entries in the map will be transferred // to a storage vector. This helps keep the size of the map small and // lookup times fast. The storage itself is a circular buffer that will // overwrite old entries once it has reached the size configured by user. class EncodingEventSubscriber final : public RawEventSubscriber { … }; } // namespace cast } // namespace media #endif // MEDIA_CAST_LOGGING_ENCODING_EVENT_SUBSCRIBER_H_