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

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

Issue 1176993005: Audio and video decoders for MediaCodecPlayer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: A better unittest fix, increased timeout for video Created 5 years, 6 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
« no previous file with comments | « media/base/android/test_data_factory.h ('k') | media/media.gyp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 #include "media/base/android/test_data_factory.h"
6
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"
11
12 namespace media {
13
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;
22
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;
31
32 case kCodecAAC: {
33 configs.audio_sampling_rate = 48000;
34 uint8 aac_extra_data[] = {0x13, 0x10};
35 configs.audio_extra_data =
36 std::vector<uint8>(aac_extra_data, aac_extra_data + 2);
37 } break;
38
39 default:
40 // Other codecs are not supported by this helper.
41 NOTREACHED();
42 break;
43 }
44
45 return configs;
46 }
47
48 DemuxerConfigs TestDataFactory::CreateVideoConfigs(
49 VideoCodec video_codec,
50 const base::TimeDelta& duration,
51 const gfx::Size& video_size) {
52 DemuxerConfigs configs;
53 configs.video_codec = video_codec;
54 configs.video_size = video_size;
55 configs.is_video_encrypted = false;
56 configs.duration = duration;
57
58 return configs;
59 }
60
61 TestDataFactory::TestDataFactory(const char* file_name_template,
62 const base::TimeDelta& duration,
63 const base::TimeDelta& frame_period)
64 : duration_(duration), frame_period_(frame_period) {
65 LoadPackets(file_name_template);
66 }
67
68 TestDataFactory::~TestDataFactory() {}
69
70 void TestDataFactory::CreateChunk(DemuxerData* chunk, base::TimeDelta* delay) {
71 DCHECK(chunk);
72 DCHECK(delay);
73
74 *delay = base::TimeDelta();
75
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;
80
81 unit.timestamp = regular_pts_;
82 regular_pts_ += frame_period_;
83
84 if (unit.timestamp > duration_) {
85 unit.is_end_of_stream = true;
86 break; // EOS units have no data.
87 }
88
89 unit.data = packet_[i];
90
91 // Allow for modification by subclasses.
92 ModifyAccessUnit(i, &unit);
93
94 // Maintain last PTS. FillAccessUnit can modify unit's PTS.
95 if (last_pts_ < unit.timestamp)
96 last_pts_ = unit.timestamp;
97 }
98 }
99
100 void TestDataFactory::LoadPackets(const char* file_name_template) {
101 for (int i = 0; i < 4; ++i) {
102 scoped_refptr<DecoderBuffer> buffer =
103 ReadTestDataFile(base::StringPrintf(file_name_template, i));
104 packet_[i] = std::vector<uint8>(buffer->data(),
105 buffer->data() + buffer->data_size());
106 }
107 }
108
109 } // namespace media
OLDNEW
« no previous file with comments | « media/base/android/test_data_factory.h ('k') | media/media.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698