Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(252)

Side by Side Diff: media/filters/file_data_source.h

Issue 149350: Added new gmock-based MockFilterHost and deprecated the old one. (Closed)
Patch Set: Remove anon namespace Created 11 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef MEDIA_FILTERS_FILE_DATA_SOURCE_H_ 5 #ifndef MEDIA_FILTERS_FILE_DATA_SOURCE_H_
6 #define MEDIA_FILTERS_FILE_DATA_SOURCE_H_ 6 #define MEDIA_FILTERS_FILE_DATA_SOURCE_H_
7 7
8 #include <string> 8 #include <string>
9 9
10 #include "base/lock.h" 10 #include "base/lock.h"
11 #include "media/base/filters.h" 11 #include "media/base/filters.h"
12 #include "testing/gtest/include/gtest/gtest_prod.h"
12 13
13 namespace media { 14 namespace media {
14 15
15 // Basic data source that treats the URL as a file path, and uses the file 16 // Basic data source that treats the URL as a file path, and uses the file
16 // system to read data for a media pipeline. 17 // system to read data for a media pipeline.
17 // TODO(ralph): We will add a pure virtual interface so that the chrome
18 // media player delegate can give us the file handle, bytes downloaded so far,
19 // and file size.
20 class FileDataSource : public DataSource { 18 class FileDataSource : public DataSource {
21 public: 19 public:
22 // Public method to get a filter factory for the FileDataSource. 20 // Public method to get a filter factory for the FileDataSource.
23 static FilterFactory* CreateFactory() { 21 static FilterFactory* CreateFactory() {
24 return new FilterFactoryImpl0<FileDataSource>(); 22 return new FilterFactoryImpl0<FileDataSource>();
25 } 23 }
26 24
27 // Implementation of MediaFilter. 25 // Implementation of MediaFilter.
28 virtual void Stop(); 26 virtual void Stop();
29 27
30 // Implementation of DataSource. 28 // Implementation of DataSource.
31 virtual bool Initialize(const std::string& url); 29 virtual bool Initialize(const std::string& url);
32 virtual const MediaFormat& media_format(); 30 virtual const MediaFormat& media_format();
33 virtual size_t Read(uint8* data, size_t size); 31 virtual size_t Read(uint8* data, size_t size);
34 virtual bool GetPosition(int64* position_out); 32 virtual bool GetPosition(int64* position_out);
35 virtual bool SetPosition(int64 position); 33 virtual bool SetPosition(int64 position);
36 virtual bool GetSize(int64* size_out); 34 virtual bool GetSize(int64* size_out);
37 virtual bool IsSeekable(); 35 virtual bool IsSeekable();
38 36
39 private: 37 private:
38 // Only allow factories and tests to create this object.
39 //
40 // TODO(scherkus): I'm getting tired of these factories getting in the way
41 // of my tests!!!
42 FRIEND_TEST(FileDataSourceTest, OpenFile);
43 FRIEND_TEST(FileDataSourceTest, ReadData);
40 friend class FilterFactoryImpl0<FileDataSource>; 44 friend class FilterFactoryImpl0<FileDataSource>;
41 FileDataSource(); 45 FileDataSource();
42 virtual ~FileDataSource(); 46 virtual ~FileDataSource();
43 47
44 // File handle. Null if not initialized or an error occurs. 48 // File handle. NULL if not initialized or an error occurs.
45 FILE* file_; 49 FILE* file_;
46 50
47 // Size of the file in bytes. 51 // Size of the file in bytes.
48 int64 file_size_; 52 int64 file_size_;
49 53
50 // Media format handed out by the DataSource::GetMediaFormat method. 54 // Media format handed out by the DataSource::GetMediaFormat method.
51 MediaFormat media_format_; 55 MediaFormat media_format_;
52 56
53 // Critical section that protects all of the DataSource methods to prevent 57 // Critical section that protects all of the DataSource methods to prevent
54 // a Stop from happening while in the middle of a file I/O operation. 58 // a Stop from happening while in the middle of a file I/O operation.
55 // TODO(ralphl): Ideally this would use asynchronous I/O or we will know 59 // TODO(ralphl): Ideally this would use asynchronous I/O or we will know
56 // that we will block for a short period of time in reads. Othewise, we can 60 // that we will block for a short period of time in reads. Otherwise, we can
57 // hang the pipeline Stop. 61 // hang the pipeline Stop.
58 Lock lock_; 62 Lock lock_;
59 63
60 DISALLOW_COPY_AND_ASSIGN(FileDataSource); 64 DISALLOW_COPY_AND_ASSIGN(FileDataSource);
61 }; 65 };
62 66
63 } // namespace media 67 } // namespace media
64 68
65 #endif // MEDIA_FILTERS_FILE_DATA_SOURCE_H_ 69 #endif // MEDIA_FILTERS_FILE_DATA_SOURCE_H_
OLDNEW
« no previous file with comments | « media/filters/ffmpeg_video_decoder_unittest.cc ('k') | media/filters/file_data_source_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698