blob: 9f39e571a1fdc35ae28492fb819e604ff3fced7a [file] [log] [blame]
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COBALT_MEDIA_BASE_MEDIA_LOG_EVENT_H_
#define COBALT_MEDIA_BASE_MEDIA_LOG_EVENT_H_
#include <stdint.h>
#include "base/memory/scoped_ptr.h"
#include "base/time.h"
#include "base/values.h"
namespace media {
struct MediaLogEvent {
MediaLogEvent() {}
MediaLogEvent(const MediaLogEvent& event) { *this = event; }
MediaLogEvent& operator=(const MediaLogEvent& event) {
id = event.id;
type = event.type;
scoped_ptr<base::DictionaryValue> event_copy(event.params.DeepCopy());
params.Swap(event_copy.get());
time = event.time;
return *this;
}
enum Type {
// A WebMediaPlayer is being created or destroyed.
// params: none.
WEBMEDIAPLAYER_CREATED,
WEBMEDIAPLAYER_DESTROYED,
// A media player is loading a resource.
// params: "url": <URL of the resource>.
LOAD,
// A media player has started seeking.
// params: "seek_target": <number of seconds to which to seek>.
SEEK,
// A media player has been told to play or pause.
// params: none.
PLAY,
PAUSE,
// The state of Pipeline has changed.
// params: "pipeline_state": <string name of the state>.
PIPELINE_STATE_CHANGED,
// An error has occurred in the pipeline.
// params: "pipeline_error": <string name of the error>.
PIPELINE_ERROR,
// The size of the video has been determined.
// params: "width": <integral width of the video>.
// "height": <integral height of the video>.
VIDEO_SIZE_SET,
// A property of the pipeline has been set by a filter.
// These take a single parameter based upon the name of the event and of
// the appropriate type. e.g. DURATION_SET: "duration" of type TimeDelta.
DURATION_SET,
TOTAL_BYTES_SET,
NETWORK_ACTIVITY_SET,
// Audio/Video stream playback has ended.
ENDED,
// Text stream playback has ended.
TEXT_ENDED,
// The extents of the sliding buffer have changed.
// params: "buffer_start": <first buffered byte>.
// "buffer_current": <current offset>.
// "buffer_end": <last buffered byte>.
BUFFERED_EXTENTS_CHANGED,
// Error log reported by media code such as reasons of playback error.
MEDIA_ERROR_LOG_ENTRY,
// params: "error": Error string describing the error detected.
// Informative log reported by media code.
MEDIA_INFO_LOG_ENTRY,
// params: "info": String with details of an informative log entry.
// Debug log reported by media code.
MEDIA_DEBUG_LOG_ENTRY,
// params: "debug": String with details of a debug log entry.
// A property has changed without any special event occurring.
PROPERTY_CHANGE,
// Indicates that updated watch time statistics are available.
WATCH_TIME_UPDATE,
TYPE_LAST = WATCH_TIME_UPDATE
};
int32_t id;
Type type;
base::DictionaryValue params;
base::TimeTicks time;
};
} // namespace media
#endif // COBALT_MEDIA_BASE_MEDIA_LOG_EVENT_H_