1ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 2ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// found in the LICENSE file. 4ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 5ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#ifndef MEDIA_BASE_MEDIA_FILE_CHECKER_H_ 6ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#define MEDIA_BASE_MEDIA_FILE_CHECKER_H_ 7ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 8ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "base/basictypes.h" 95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/files/file.h" 10ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "media/base/media_export.h" 11ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 12ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochnamespace base { 13ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochclass TimeDelta; 14ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch} 15ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 16ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochnamespace media { 17ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 18ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// This class tries to determine if a file is a valid media file. The entire 19ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// file is not decoded so a positive result from this class does not make the 20ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// file safe to use in the browser process. 21ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochclass MEDIA_EXPORT MediaFileChecker { 22ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch public: 235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) explicit MediaFileChecker(base::File file); 24ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch ~MediaFileChecker(); 25ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 26ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // After opening |file|, up to |check_time| amount of wall-clock time is spent 27ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // decoding the file. The amount of audio/video data decoded will depend on 28ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // the bitrate of the file and the speed of the CPU. 29ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch bool Start(base::TimeDelta check_time); 30ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 31ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch private: 325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::File file_; 33ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 34ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch DISALLOW_COPY_AND_ASSIGN(MediaFileChecker); 35ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch}; 36ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 37ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch} // namespace media 38ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 39ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#endif // MEDIA_BASE_MEDIA_FILE_CHECKER_H_ 40