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

Unified 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/base/android/test_data_factory.h ('k') | media/media.gyp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/base/android/test_data_factory.cc
diff --git a/media/base/android/test_data_factory.cc b/media/base/android/test_data_factory.cc
new file mode 100644
index 0000000000000000000000000000000000000000..98c80a4f2bba5c08dc1ed3fade8f4ede76aa780f
--- /dev/null
+++ b/media/base/android/test_data_factory.cc
@@ -0,0 +1,109 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "media/base/android/test_data_factory.h"
+
+#include "base/strings/stringprintf.h"
+#include "media/base/android/demuxer_stream_player_params.h"
+#include "media/base/decoder_buffer.h"
+#include "media/base/test_data_util.h"
+
+namespace media {
+
+DemuxerConfigs TestDataFactory::CreateAudioConfigs(
+ AudioCodec audio_codec,
+ const base::TimeDelta& duration) {
+ DemuxerConfigs configs;
+ configs.audio_codec = audio_codec;
+ configs.audio_channels = 2;
+ configs.is_audio_encrypted = false;
+ configs.duration = duration;
+
+ switch (audio_codec) {
+ case kCodecVorbis: {
+ configs.audio_sampling_rate = 44100;
+ scoped_refptr<DecoderBuffer> buffer =
+ ReadTestDataFile("vorbis-extradata");
+ configs.audio_extra_data = std::vector<uint8>(
+ buffer->data(), buffer->data() + buffer->data_size());
+ } break;
+
+ case kCodecAAC: {
+ configs.audio_sampling_rate = 48000;
+ uint8 aac_extra_data[] = {0x13, 0x10};
+ configs.audio_extra_data =
+ std::vector<uint8>(aac_extra_data, aac_extra_data + 2);
+ } break;
+
+ default:
+ // Other codecs are not supported by this helper.
+ NOTREACHED();
+ break;
+ }
+
+ return configs;
+}
+
+DemuxerConfigs TestDataFactory::CreateVideoConfigs(
+ VideoCodec video_codec,
+ const base::TimeDelta& duration,
+ const gfx::Size& video_size) {
+ DemuxerConfigs configs;
+ configs.video_codec = video_codec;
+ configs.video_size = video_size;
+ configs.is_video_encrypted = false;
+ configs.duration = duration;
+
+ return configs;
+}
+
+TestDataFactory::TestDataFactory(const char* file_name_template,
+ const base::TimeDelta& duration,
+ const base::TimeDelta& frame_period)
+ : duration_(duration), frame_period_(frame_period) {
+ LoadPackets(file_name_template);
+}
+
+TestDataFactory::~TestDataFactory() {}
+
+void TestDataFactory::CreateChunk(DemuxerData* chunk, base::TimeDelta* delay) {
+ DCHECK(chunk);
+ DCHECK(delay);
+
+ *delay = base::TimeDelta();
+
+ for (int i = 0; i < 4; ++i) {
+ chunk->access_units.push_back(AccessUnit());
+ AccessUnit& unit = chunk->access_units.back();
+ unit.status = DemuxerStream::kOk;
+
+ unit.timestamp = regular_pts_;
+ regular_pts_ += frame_period_;
+
+ if (unit.timestamp > duration_) {
+ unit.is_end_of_stream = true;
+ break; // EOS units have no data.
+ }
+
+ unit.data = packet_[i];
+
+ // Allow for modification by subclasses.
+ ModifyAccessUnit(i, &unit);
+
+ // Maintain last PTS. FillAccessUnit can modify unit's PTS.
+ if (last_pts_ < unit.timestamp)
+ last_pts_ = unit.timestamp;
+ }
+}
+
+void TestDataFactory::LoadPackets(const char* file_name_template) {
+ for (int i = 0; i < 4; ++i) {
+ scoped_refptr<DecoderBuffer> buffer =
+ ReadTestDataFile(base::StringPrintf(file_name_template, i));
+ packet_[i] = std::vector<uint8>(buffer->data(),
+ buffer->data() + buffer->data_size());
+ }
+}
+
+} // namespace media
« 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