• 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   // 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