OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef MEDIA_CAST_LOGGING_LOGGING_RAW_H_ | 5 #ifndef MEDIA_CAST_LOGGING_LOGGING_RAW_H_ |
6 #define MEDIA_CAST_LOGGING_LOGGING_RAW_H_ | 6 #define MEDIA_CAST_LOGGING_LOGGING_RAW_H_ |
7 | 7 |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
11 #include "base/memory/linked_ptr.h" | 11 #include "base/memory/linked_ptr.h" |
12 #include "base/threading/non_thread_safe.h" | 12 #include "base/threading/non_thread_safe.h" |
13 #include "base/time/tick_clock.h" | 13 #include "base/time/tick_clock.h" |
14 #include "media/cast/logging/logging_defines.h" | 14 #include "media/cast/logging/logging_defines.h" |
15 #include "media/cast/logging/raw_event_subscriber.h" | 15 #include "media/cast/logging/raw_event_subscriber.h" |
16 | 16 |
17 namespace media { | 17 namespace media { |
18 namespace cast { | 18 namespace cast { |
19 | 19 |
20 // This class is not thread safe, and should only be called from the main | 20 // This class is not thread safe, and should only be called from the main |
21 // thread. | 21 // thread. |
22 class LoggingRaw : public base::NonThreadSafe { | 22 class LoggingRaw : public base::NonThreadSafe { |
23 public: | 23 public: |
24 LoggingRaw(); | 24 LoggingRaw(); |
25 ~LoggingRaw(); | 25 ~LoggingRaw(); |
26 | 26 |
27 // Inform of new event: two types of events: frame and packet. | 27 // Inform of new event: two types of events: frame and packet. |
28 // Frame events can be inserted with different parameters. | 28 // Frame events can be inserted with different parameters. |
29 void InsertFrameEvent(const base::TimeTicks& time_of_event, | 29 void InsertFrameEvent(const base::TimeTicks& time_of_event, |
30 CastLoggingEvent event, uint32 rtp_timestamp, | 30 CastLoggingEvent event, EventMediaType event_media_type, |
31 uint32 frame_id); | 31 uint32 rtp_timestamp, uint32 frame_id); |
32 | 32 |
33 // This function is only applicable for the following frame events: | 33 // This function is only applicable for FRAME_ENCODED event. |
34 // kAudioFrameEncoded, kVideoFrameEncoded | |
35 // |size| - Size of encoded frame. | 34 // |size| - Size of encoded frame. |
36 // |key_frame| - Whether the frame is a key frame. This field is only | 35 // |key_frame| - Whether the frame is a key frame. This field is only |
37 // applicable for kVideoFrameEncoded event. | 36 // applicable for video event. |
38 // |target_bitrate| - The target bitrate of the encoder the time the frame | 37 // |target_bitrate| - The target bitrate of the encoder the time the frame |
39 // was encoded. Only applicable for kVideoFrameEncoded event. | 38 // was encoded. Only applicable for video event. |
40 void InsertEncodedFrameEvent(const base::TimeTicks& time_of_event, | 39 void InsertEncodedFrameEvent(const base::TimeTicks& time_of_event, |
41 CastLoggingEvent event, uint32 rtp_timestamp, | 40 CastLoggingEvent event, |
42 uint32 frame_id, int size, bool key_frame, | 41 EventMediaType event_media_type, |
| 42 uint32 rtp_timestamp, uint32 frame_id, |
| 43 int size, bool key_frame, |
43 int target_bitrate); | 44 int target_bitrate); |
44 | 45 |
45 // Render/playout delay | 46 // Render/playout delay |
46 // This function is only applicable for the following frame events: | 47 // This function is only applicable for FRAME_PLAYOUT event. |
47 // kAudioPlayoutDelay, kVideoRenderDelay | |
48 void InsertFrameEventWithDelay(const base::TimeTicks& time_of_event, | 48 void InsertFrameEventWithDelay(const base::TimeTicks& time_of_event, |
49 CastLoggingEvent event, uint32 rtp_timestamp, | 49 CastLoggingEvent event, |
| 50 EventMediaType event_media_type, |
| 51 uint32 rtp_timestamp, |
50 uint32 frame_id, base::TimeDelta delay); | 52 uint32 frame_id, base::TimeDelta delay); |
51 | 53 |
52 // Insert a packet event. | 54 // Insert a packet event. |
53 void InsertPacketEvent(const base::TimeTicks& time_of_event, | 55 void InsertPacketEvent(const base::TimeTicks& time_of_event, |
54 CastLoggingEvent event, uint32 rtp_timestamp, | 56 CastLoggingEvent event, |
| 57 EventMediaType event_media_type, uint32 rtp_timestamp, |
55 uint32 frame_id, uint16 packet_id, | 58 uint32 frame_id, uint16 packet_id, |
56 uint16 max_packet_id, size_t size); | 59 uint16 max_packet_id, size_t size); |
57 | 60 |
58 // Adds |subscriber| so that it will start receiving events on main thread. | 61 // Adds |subscriber| so that it will start receiving events on main thread. |
59 // Note that this class does not own |subscriber|. | 62 // Note that this class does not own |subscriber|. |
60 // It is a no-op to add a subscriber that already exists. | 63 // It is a no-op to add a subscriber that already exists. |
61 void AddSubscriber(RawEventSubscriber* subscriber); | 64 void AddSubscriber(RawEventSubscriber* subscriber); |
62 | 65 |
63 // Removes |subscriber| so that it will stop receiving events. | 66 // Removes |subscriber| so that it will stop receiving events. |
64 // Note that this class does NOT own the subscribers. This function MUST be | 67 // Note that this class does NOT own the subscribers. This function MUST be |
65 // called before |subscriber| is destroyed if it was previously added. | 68 // called before |subscriber| is destroyed if it was previously added. |
66 // It is a no-op to remove a subscriber that doesn't exist. | 69 // It is a no-op to remove a subscriber that doesn't exist. |
67 void RemoveSubscriber(RawEventSubscriber* subscriber); | 70 void RemoveSubscriber(RawEventSubscriber* subscriber); |
68 | 71 |
69 private: | 72 private: |
70 void InsertBaseFrameEvent(const base::TimeTicks& time_of_event, | 73 void InsertBaseFrameEvent(const base::TimeTicks& time_of_event, |
71 CastLoggingEvent event, uint32 frame_id, | 74 CastLoggingEvent event, |
72 uint32 rtp_timestamp, base::TimeDelta delay, | 75 EventMediaType event_media_type, |
73 int size, bool key_frame, int target_bitrate); | 76 uint32 frame_id, uint32 rtp_timestamp, |
| 77 base::TimeDelta delay, int size, bool key_frame, |
| 78 int target_bitrate); |
74 | 79 |
75 // List of subscriber pointers. This class does not own the subscribers. | 80 // List of subscriber pointers. This class does not own the subscribers. |
76 std::vector<RawEventSubscriber*> subscribers_; | 81 std::vector<RawEventSubscriber*> subscribers_; |
77 | 82 |
78 DISALLOW_COPY_AND_ASSIGN(LoggingRaw); | 83 DISALLOW_COPY_AND_ASSIGN(LoggingRaw); |
79 }; | 84 }; |
80 | 85 |
81 } // namespace cast | 86 } // namespace cast |
82 } // namespace media | 87 } // namespace media |
83 | 88 |
84 #endif // MEDIA_CAST_LOGGING_LOGGING_RAW_H_ | 89 #endif // MEDIA_CAST_LOGGING_LOGGING_RAW_H_ |
OLD | NEW |