OLD | NEW |
| (Empty) |
1 // Copyright 2014 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 CHROMECAST_MEDIA_CMA_BASE_MOCK_FRAME_CONSUMER_H_ | |
6 #define CHROMECAST_MEDIA_CMA_BASE_MOCK_FRAME_CONSUMER_H_ | |
7 | |
8 #include <vector> | |
9 | |
10 #include "base/callback.h" | |
11 #include "base/macros.h" | |
12 | |
13 namespace media { | |
14 class AudioDecoderConfig; | |
15 class VideoDecoderConfig; | |
16 } | |
17 | |
18 namespace chromecast { | |
19 namespace media { | |
20 class CodedFrameProvider; | |
21 class DecoderBufferBase; | |
22 class FrameGeneratorForTest; | |
23 | |
24 class MockFrameConsumer { | |
25 public: | |
26 explicit MockFrameConsumer(CodedFrameProvider* coded_frame_provider); | |
27 ~MockFrameConsumer(); | |
28 | |
29 void Configure(const std::vector<bool>& delayed_task_pattern, | |
30 bool last_read_aborted_by_flush, | |
31 scoped_ptr<FrameGeneratorForTest> frame_generator); | |
32 | |
33 // Starts consuming frames. Invoke |done_cb| when all the expected frames | |
34 // have been received. | |
35 void Start(const base::Closure& done_cb); | |
36 | |
37 private: | |
38 void ReadFrame(); | |
39 void OnNewFrame(const scoped_refptr<DecoderBufferBase>& buffer, | |
40 const ::media::AudioDecoderConfig& audio_config, | |
41 const ::media::VideoDecoderConfig& video_config); | |
42 | |
43 void OnFlushCompleted(); | |
44 | |
45 CodedFrameProvider* const coded_frame_provider_; | |
46 | |
47 base::Closure done_cb_; | |
48 | |
49 // Parameterization of the frame consumer: | |
50 // |delayed_task_pattern_| indicates the pattern for fetching frames, | |
51 // i.e. after receiving a frame, either fetch a frame right away | |
52 // or wait some time before fetching another frame. | |
53 // |pattern_idx_| is the current index in the pattern. | |
54 // |last_read_aborted_by_flush_| indicates whether the last buffer request | |
55 // should be aborted by a Flush. | |
56 std::vector<bool> delayed_task_pattern_; | |
57 size_t pattern_idx_; | |
58 bool last_read_aborted_by_flush_; | |
59 | |
60 // Expected results. | |
61 scoped_ptr<FrameGeneratorForTest> frame_generator_; | |
62 | |
63 DISALLOW_COPY_AND_ASSIGN(MockFrameConsumer); | |
64 }; | |
65 | |
66 } // namespace media | |
67 } // namespace chromecast | |
68 | |
69 #endif // CHROMECAST_MEDIA_CMA_BASE_MOCK_FRAME_CONSUMER_H_ | |
OLD | NEW |