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

Side by Side Diff: media/base/android/test_data_factory.h

Issue 2283493003: Delete browser MSE implementation. (Closed)
Patch Set: Actually delete MSP. Cleanse references. Remove AudioTrack usage. Created 4 years, 2 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
(Empty)
1 // Copyright 2015 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 MEDIA_BASE_ANDROID_TEST_DATA_FACTORY_H_
6 #define MEDIA_BASE_ANDROID_TEST_DATA_FACTORY_H_
7
8 #include <stddef.h>
9 #include <stdint.h>
10 #include <set>
11 #include <vector>
12 #include "base/memory/ref_counted.h"
13 #include "base/time/time.h"
14 #include "media/base/android/demuxer_stream_player_params.h"
15
16 namespace media {
17
18 // TestDataFactory is used by MediaCodecDecoder unit test and MediaCodecPlayer
19 // unit test to simulate the audio or video access unit stream.
20 class TestDataFactory {
21 public:
22 // These methods return corresponding demuxer configs.
23 static DemuxerConfigs CreateAudioConfigs(AudioCodec audio_codec,
24 base::TimeDelta duration);
25 static DemuxerConfigs CreateVideoConfigs(VideoCodec video_codec,
26 base::TimeDelta duration,
27 const gfx::Size& video_size);
28
29 // Constructor calls |LoadPackets| to load packets from files.
30 // Parameters:
31 // file_name_template: the sprintf format string used to generate a file
32 // name for the packet in the form e.g. "h264-AxB-%d"
33 // The |%d| will be replaced by 0, 1, 2, 3.
34 // duration: after the last AU exceeds duration the factory generates EOS
35 // unit and stops.
36 // frame_period: PTS increment between units.
37 TestDataFactory(const char* file_name_template,
38 const base::TimeDelta duration,
39 const base::TimeDelta frame_period);
40 virtual ~TestDataFactory();
41
42 // Returns demuxer configuration for this factory.
43 virtual DemuxerConfigs GetConfigs() const = 0;
44
45 // Populates next chunk and the corresponding delay and returns true if
46 // duration is not exceeded, otherwise returns false.
47 // Default implementation repeatedly uses |packet_| array in order 0-1-2-3
48 // and monotonically increases timestamps from 0 to |duration_|.
49 // The first unit to exceed |duration_| becomes EOS. The delay is set to 0.
50 virtual bool CreateChunk(DemuxerData* chunk, base::TimeDelta* delay);
51
52 // In starvation mode we do not add EOS at the end.
53 void SetStarvationMode(bool value) { starvation_mode_ = value; }
54
55 // Resets the timestamp for the next access unit.
56 void SeekTo(const base::TimeDelta& seek_time);
57
58 // Request that a chunk containing sole |kConfigChanged| unit is generated
59 // before the first true data chunk.
60 void RequestInitialConfigs();
61
62 void RequestConfigChange(base::TimeDelta config_position);
63
64 // Returns the maximum PTS, taking into account possible modifications
65 // by subclasses. The SeekTo() resets this value.
66 base::TimeDelta last_pts() const { return last_pts_; }
67
68 protected:
69 // Called by constructor to load packets from files referred by
70 // |file_name_template|.
71 virtual void LoadPackets(const char* file_name_template);
72
73 // Used to modify the generated chunk by a subclass.
74 virtual void ModifyChunk(DemuxerData* chunk) {}
75
76 base::TimeDelta duration_;
77 base::TimeDelta frame_period_;
78
79 private:
80 typedef std::set<base::TimeDelta> PTSSet;
81
82 // |left| is included in the interval, |right| is excluded.
83 // If |left| == |right|, the interval is empty and the method returns false.
84 bool HasReconfigForInterval(base::TimeDelta left,
85 base::TimeDelta right) const;
86
87 void AddConfiguration(DemuxerData* chunk);
88
89 std::vector<uint8_t> packet_[4];
90 base::TimeDelta regular_pts_; // monotonically increasing PTS
91 base::TimeDelta chunk_begin_pts_; // beginning of chunk time interval
92 base::TimeDelta last_pts_; // subclass can modify PTS, maintain the last
93 PTSSet reconfigs_; // ConfigChange requests
94 size_t total_chunks_; // total number of chunks returned
95 bool starvation_mode_; // true means no EOS at the end
96 bool eos_reached_; // true if CreateChunk() returned EOS frame
97 };
98
99 } // namespace media
100
101 #endif // MEDIA_BASE_ANDROID_TEST_DATA_FACTORY_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698