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 12 namespace 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) 17 enum 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 // Must be equal to the largest value ever logged. 36 PIPELINE_STATUS_MAX = DECODER_ERROR_NOT_SUPPORTED, 37 }; 38 39 typedef base::Callback<void(PipelineStatus)> PipelineStatusCB; 40 41 // TODO(scherkus): this should be moved alongside host interface definitions. 42 struct PipelineStatistics { PipelineStatisticsPipelineStatistics43 PipelineStatistics() 44 : audio_bytes_decoded(0), 45 video_bytes_decoded(0), 46 video_frames_decoded(0), 47 video_frames_dropped(0) { 48 } 49 50 uint32 audio_bytes_decoded; // Should be uint64? 51 uint32 video_bytes_decoded; // Should be uint64? 52 uint32 video_frames_decoded; 53 uint32 video_frames_dropped; 54 }; 55 56 // Used for updating pipeline statistics. 57 typedef base::Callback<void(const PipelineStatistics&)> StatisticsCB; 58 59 } // namespace media 60 61 #endif // MEDIA_BASE_PIPELINE_STATUS_H_ 62