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_PIPELINE_STATUS_H_ 6#define MEDIA_BASE_PIPELINE_STATUS_H_ 7 8#include "base/callback.h" 9 10#include <string> 11 12namespace media { 13 14// Status states for pipeline. All codes except PIPELINE_OK indicate errors. 15// Logged to UMA, so never reuse a value, always add new/greater ones! 16// TODO(vrk/scherkus): Trim the unused status codes. (crbug.com/126070) 17enum PipelineStatus { 18 PIPELINE_OK = 0, 19 PIPELINE_ERROR_URL_NOT_FOUND = 1, 20 PIPELINE_ERROR_NETWORK = 2, 21 PIPELINE_ERROR_DECODE = 3, 22 PIPELINE_ERROR_DECRYPT = 4, 23 PIPELINE_ERROR_ABORT = 5, 24 PIPELINE_ERROR_INITIALIZATION_FAILED = 6, 25 PIPELINE_ERROR_COULD_NOT_RENDER = 8, 26 PIPELINE_ERROR_READ = 9, 27 PIPELINE_ERROR_OPERATION_PENDING = 10, 28 PIPELINE_ERROR_INVALID_STATE = 11, 29 // Demuxer related errors. 30 DEMUXER_ERROR_COULD_NOT_OPEN = 12, 31 DEMUXER_ERROR_COULD_NOT_PARSE = 13, 32 DEMUXER_ERROR_NO_SUPPORTED_STREAMS = 14, 33 // Decoder related errors. 34 DECODER_ERROR_NOT_SUPPORTED = 15, 35 PIPELINE_STATUS_MAX, // Must be greater than all other values logged. 36}; 37 38typedef base::Callback<void(PipelineStatus)> PipelineStatusCB; 39 40// TODO(scherkus): this should be moved alongside host interface definitions. 41struct PipelineStatistics { 42 PipelineStatistics() 43 : audio_bytes_decoded(0), 44 video_bytes_decoded(0), 45 video_frames_decoded(0), 46 video_frames_dropped(0) { 47 } 48 49 uint32 audio_bytes_decoded; // Should be uint64? 50 uint32 video_bytes_decoded; // Should be uint64? 51 uint32 video_frames_decoded; 52 uint32 video_frames_dropped; 53}; 54 55// Used for updating pipeline statistics. 56typedef base::Callback<void(const PipelineStatistics&)> StatisticsCB; 57 58} // namespace media 59 60#endif // MEDIA_BASE_PIPELINE_STATUS_H_ 61