Home | History | Annotate | Download | only in base
      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 {
     14   MediaLogEvent() {}
     15 
     16   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