• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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   PIPELINE_STATUS_MAX,  // Must be greater than all other values logged.
36 };
37 
38 typedef base::Callback<void(PipelineStatus)> PipelineStatusCB;
39 
40 // TODO(scherkus): this should be moved alongside host interface definitions.
41 struct PipelineStatistics {
PipelineStatisticsPipelineStatistics42   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.
56 typedef base::Callback<void(const PipelineStatistics&)> StatisticsCB;
57 
58 }  // namespace media
59 
60 #endif  // MEDIA_BASE_PIPELINE_STATUS_H_
61