15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef MEDIA_BASE_MEDIA_LOG_EVENT_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MEDIA_BASE_MEDIA_LOG_EVENT_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/time/time.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/values.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace media {
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct MediaLogEvent {
14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  MediaLogEvent() {}
15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  MediaLogEvent(const MediaLogEvent& event) {
17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    *this = event;
18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  }
19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  MediaLogEvent& operator=(const MediaLogEvent& event) {
21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    id = event.id;
22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    type = event.type;
23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    scoped_ptr<base::DictionaryValue> event_copy(event.params.DeepCopy());
24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    params.Swap(event_copy.get());
25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    time = event.time;
26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    return *this;
27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  }
28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  enum Type {
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // A WebMediaPlayer is being created or destroyed.
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // params: none.
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    WEBMEDIAPLAYER_CREATED,
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    WEBMEDIAPLAYER_DESTROYED,
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // A Pipeline is being created or destroyed.
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // params: none.
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    PIPELINE_CREATED,
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    PIPELINE_DESTROYED,
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // A media player is loading a resource.
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // params: "url": <URL of the resource>.
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    LOAD,
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // A media player has started seeking.
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // params: "seek_target": <number of seconds to which to seek>.
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    SEEK,
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // A media player has been told to play or pause.
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // params: none.
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    PLAY,
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    PAUSE,
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // The state of Pipeline has changed.
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // params: "pipeline_state": <string name of the state>.
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    PIPELINE_STATE_CHANGED,
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // An error has occurred in the pipeline.
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // params: "pipeline_error": <string name of the error>.
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    PIPELINE_ERROR,
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // The size of the video has been determined.
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // params: "width": <integral width of the video>.
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    //         "height": <integral height of the video>.
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    VIDEO_SIZE_SET,
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // A property of the pipeline has been set by a filter.
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // These take a single parameter based upon the name of the event and of
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // the appropriate type. e.g. DURATION_SET: "duration" of type TimeDelta.
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    DURATION_SET,
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    TOTAL_BYTES_SET,
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    NETWORK_ACTIVITY_SET,
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    // Audio/Video stream playback has ended.
741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    ENDED,
751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    // Text stream playback has ended.
77f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    TEXT_ENDED,
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // The extents of the sliding buffer have changed.
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // params: "buffer_start": <first buffered byte>.
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    //         "buffer_current": <current offset>.
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    //         "buffer_end": <last buffered byte>.
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    BUFFERED_EXTENTS_CHANGED,
842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    // Errors reported by Media Source Extensions code.
862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    MEDIA_SOURCE_ERROR,
872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    // params: "error": Error string describing the error detected.
883240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch
893240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch    // A property has changed without any special event occurring.
903240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch    PROPERTY_CHANGE,
915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    TYPE_LAST = PROPERTY_CHANGE
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int32 id;
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Type type;
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::DictionaryValue params;
98eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  base::TimeTicks time;
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace media
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // MEDIA_BASE_MEDIA_LOG_EVENT_H_
104