• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2012 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_BASE_MEDIA_LOG_EVENT_H_
6 #define MEDIA_BASE_MEDIA_LOG_EVENT_H_
7 
8 #include "base/time/time.h"
9 #include "base/values.h"
10 
11 namespace media {
12 
13 struct MediaLogEvent {
MediaLogEventMediaLogEvent14   MediaLogEvent() {}
15 
MediaLogEventMediaLogEvent16   MediaLogEvent(const MediaLogEvent& event) {
17     *this = event;
18   }
19 
20   MediaLogEvent& operator=(const MediaLogEvent& event) {
21     id = event.id;
22     type = event.type;
23     scoped_ptr<base::DictionaryValue> event_copy(event.params.DeepCopy());
24     params.Swap(event_copy.get());
25     time = event.time;
26     return *this;
27   }
28 
29   enum Type {
30     // A WebMediaPlayer is being created or destroyed.
31     // params: none.
32     WEBMEDIAPLAYER_CREATED,
33     WEBMEDIAPLAYER_DESTROYED,
34 
35     // A Pipeline is being created or destroyed.
36     // params: none.
37     PIPELINE_CREATED,
38     PIPELINE_DESTROYED,
39 
40     // A media player is loading a resource.
41     // params: "url": <URL of the resource>.
42     LOAD,
43 
44     // A media player has started seeking.
45     // params: "seek_target": <number of seconds to which to seek>.
46     SEEK,
47 
48     // A media player has been told to play or pause.
49     // params: none.
50     PLAY,
51     PAUSE,
52 
53     // The state of Pipeline has changed.
54     // params: "pipeline_state": <string name of the state>.
55     PIPELINE_STATE_CHANGED,
56 
57     // An error has occurred in the pipeline.
58     // params: "pipeline_error": <string name of the error>.
59     PIPELINE_ERROR,
60 
61     // The size of the video has been determined.
62     // params: "width": <integral width of the video>.
63     //         "height": <integral height of the video>.
64     VIDEO_SIZE_SET,
65 
66     // A property of the pipeline has been set by a filter.
67     // These take a single parameter based upon the name of the event and of
68     // the appropriate type. e.g. DURATION_SET: "duration" of type TimeDelta.
69     DURATION_SET,
70     TOTAL_BYTES_SET,
71     NETWORK_ACTIVITY_SET,
72 
73     // Audio/Video stream playback has ended.
74     ENDED,
75 
76     // Text stream playback has ended.
77     TEXT_ENDED,
78 
79     // The extents of the sliding buffer have changed.
80     // params: "buffer_start": <first buffered byte>.
81     //         "buffer_current": <current offset>.
82     //         "buffer_end": <last buffered byte>.
83     BUFFERED_EXTENTS_CHANGED,
84 
85     // Errors reported by Media Source Extensions code.
86     MEDIA_SOURCE_ERROR,
87     // params: "error": Error string describing the error detected.
88 
89     // A property has changed without any special event occurring.
90     PROPERTY_CHANGE,
91 
92     TYPE_LAST = PROPERTY_CHANGE
93   };
94 
95   int32 id;
96   Type type;
97   base::DictionaryValue params;
98   base::TimeTicks time;
99 };
100 
101 }  // namespace media
102 
103 #endif  // MEDIA_BASE_MEDIA_LOG_EVENT_H_
104