Fix keyboard accessibility feedback
[chromium-blink-merge.git] / media / base / android / test_data_factory.cc
blob759c494bb223224f9a4df28fc865f638450d8b5c
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.
5 #include "media/base/android/test_data_factory.h"
7 #include "base/strings/stringprintf.h"
8 #include "media/base/android/demuxer_stream_player_params.h"
9 #include "media/base/decoder_buffer.h"
10 #include "media/base/test_data_util.h"
12 namespace media {
14 DemuxerConfigs TestDataFactory::CreateAudioConfigs(
15 AudioCodec audio_codec,
16 const base::TimeDelta& duration) {
17 DemuxerConfigs configs;
18 configs.audio_codec = audio_codec;
19 configs.audio_channels = 2;
20 configs.is_audio_encrypted = false;
21 configs.duration = duration;
23 switch (audio_codec) {
24 case kCodecVorbis: {
25 configs.audio_sampling_rate = 44100;
26 scoped_refptr<DecoderBuffer> buffer =
27 ReadTestDataFile("vorbis-extradata");
28 configs.audio_extra_data = std::vector<uint8>(
29 buffer->data(), buffer->data() + buffer->data_size());
30 } break;
32 case kCodecAAC: {
33 configs.audio_sampling_rate = 44100;
34 configs.audio_extra_data = {0x12, 0x10};
35 } break;
37 default:
38 // Other codecs are not supported by this helper.
39 NOTREACHED();
40 break;
43 return configs;
46 DemuxerConfigs TestDataFactory::CreateVideoConfigs(
47 VideoCodec video_codec,
48 const base::TimeDelta& duration,
49 const gfx::Size& video_size) {
50 DemuxerConfigs configs;
51 configs.video_codec = video_codec;
52 configs.video_size = video_size;
53 configs.is_video_encrypted = false;
54 configs.duration = duration;
56 return configs;
59 TestDataFactory::TestDataFactory(const char* file_name_template,
60 const base::TimeDelta& duration,
61 const base::TimeDelta& frame_period)
62 : duration_(duration),
63 frame_period_(frame_period),
64 starvation_mode_(false) {
65 LoadPackets(file_name_template);
68 TestDataFactory::~TestDataFactory() {}
70 bool TestDataFactory::CreateChunk(DemuxerData* chunk, base::TimeDelta* delay) {
71 DCHECK(chunk);
72 DCHECK(delay);
74 *delay = base::TimeDelta();
76 for (int i = 0; i < 4; ++i) {
77 chunk->access_units.push_back(AccessUnit());
78 AccessUnit& unit = chunk->access_units.back();
79 unit.status = DemuxerStream::kOk;
81 unit.timestamp = regular_pts_;
82 regular_pts_ += frame_period_;
84 if (unit.timestamp > duration_) {
85 if (starvation_mode_)
86 return false;
88 unit.is_end_of_stream = true;
89 break; // EOS units have no data.
92 unit.data = packet_[i];
94 // Allow for modification by subclasses.
95 ModifyAccessUnit(i, &unit);
97 // Maintain last PTS. ModifyAccessUnit() can modify unit's PTS.
98 if (last_pts_ < unit.timestamp)
99 last_pts_ = unit.timestamp;
102 return true;
105 void TestDataFactory::LoadPackets(const char* file_name_template) {
106 for (int i = 0; i < 4; ++i) {
107 scoped_refptr<DecoderBuffer> buffer =
108 ReadTestDataFile(base::StringPrintf(file_name_template, i));
109 packet_[i] = std::vector<uint8>(buffer->data(),
110 buffer->data() + buffer->data_size());
114 } // namespace media