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