15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef MEDIA_BASE_PIPELINE_STATUS_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MEDIA_BASE_PIPELINE_STATUS_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/callback.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace media { 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Status states for pipeline. All codes except PIPELINE_OK indicate errors. 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Logged to UMA, so never reuse a value, always add new/greater ones! 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(vrk/scherkus): Trim the unused status codes. (crbug.com/126070) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)enum PipelineStatus { 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PIPELINE_OK = 0, 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PIPELINE_ERROR_URL_NOT_FOUND = 1, 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PIPELINE_ERROR_NETWORK = 2, 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PIPELINE_ERROR_DECODE = 3, 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PIPELINE_ERROR_DECRYPT = 4, 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PIPELINE_ERROR_ABORT = 5, 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PIPELINE_ERROR_INITIALIZATION_FAILED = 6, 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PIPELINE_ERROR_COULD_NOT_RENDER = 8, 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PIPELINE_ERROR_READ = 9, 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PIPELINE_ERROR_OPERATION_PENDING = 10, 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PIPELINE_ERROR_INVALID_STATE = 11, 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Demuxer related errors. 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DEMUXER_ERROR_COULD_NOT_OPEN = 12, 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DEMUXER_ERROR_COULD_NOT_PARSE = 13, 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DEMUXER_ERROR_NO_SUPPORTED_STREAMS = 14, 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Decoder related errors. 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DECODER_ERROR_NOT_SUPPORTED = 15, 35a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Must be equal to the largest value ever logged. 36a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) PIPELINE_STATUS_MAX = DECODER_ERROR_NOT_SUPPORTED, 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef base::Callback<void(PipelineStatus)> PipelineStatusCB; 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(scherkus): this should be moved alongside host interface definitions. 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct PipelineStatistics { 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PipelineStatistics() 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : audio_bytes_decoded(0), 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) video_bytes_decoded(0), 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) video_frames_decoded(0), 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) video_frames_dropped(0) { 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32 audio_bytes_decoded; // Should be uint64? 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32 video_bytes_decoded; // Should be uint64? 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32 video_frames_decoded; 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32 video_frames_dropped; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Used for updating pipeline statistics. 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef base::Callback<void(const PipelineStatistics&)> StatisticsCB; 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace media 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // MEDIA_BASE_PIPELINE_STATUS_H_ 62