OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <string> | 5 #include <string> |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "media/base/android/media_codec_bridge.h" | 10 #include "media/base/android/media_codec_bridge.h" |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
129 input_pts += base::TimeDelta::FromMicroseconds(33000); | 129 input_pts += base::TimeDelta::FromMicroseconds(33000); |
130 timestamp = new_timestamp; | 130 timestamp = new_timestamp; |
131 } | 131 } |
132 } | 132 } |
133 | 133 |
134 TEST(MediaCodecBridgeTest, Initialize) { | 134 TEST(MediaCodecBridgeTest, Initialize) { |
135 if (!MediaCodecBridge::IsAvailable()) | 135 if (!MediaCodecBridge::IsAvailable()) |
136 return; | 136 return; |
137 | 137 |
138 scoped_ptr<media::MediaCodecBridge> media_codec; | 138 scoped_ptr<media::MediaCodecBridge> media_codec; |
139 media_codec.reset(VideoCodecBridge::Create(kCodecH264)); | 139 media_codec.reset(VideoCodecBridge::Create(kCodecH264, false)); |
140 } | 140 } |
141 | 141 |
142 TEST(MediaCodecBridgeTest, DoNormal) { | 142 TEST(MediaCodecBridgeTest, DoNormal) { |
143 if (!MediaCodecBridge::IsAvailable()) | 143 if (!MediaCodecBridge::IsAvailable()) |
144 return; | 144 return; |
145 | 145 |
146 scoped_ptr<media::AudioCodecBridge> media_codec; | 146 scoped_ptr<media::AudioCodecBridge> media_codec; |
147 media_codec.reset(AudioCodecBridge::Create(kCodecMP3)); | 147 media_codec.reset(AudioCodecBridge::Create(kCodecMP3)); |
148 | 148 |
149 media_codec->Start(kCodecMP3, 44100, 2, NULL, 0, false, NULL); | 149 media_codec->Start(kCodecMP3, 44100, 2, NULL, 0, false, NULL); |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
228 EXPECT_FALSE(media_codec->Start( | 228 EXPECT_FALSE(media_codec->Start( |
229 kCodecVorbis, 44100, 2, very_large_header, 0x80000000, false, NULL)); | 229 kCodecVorbis, 44100, 2, very_large_header, 0x80000000, false, NULL)); |
230 delete[] very_large_header; | 230 delete[] very_large_header; |
231 } | 231 } |
232 | 232 |
233 TEST(MediaCodecBridgeTest, PresentationTimestampsDoNotDecrease) { | 233 TEST(MediaCodecBridgeTest, PresentationTimestampsDoNotDecrease) { |
234 if (!MediaCodecBridge::IsAvailable()) | 234 if (!MediaCodecBridge::IsAvailable()) |
235 return; | 235 return; |
236 | 236 |
237 scoped_ptr<VideoCodecBridge> media_codec; | 237 scoped_ptr<VideoCodecBridge> media_codec; |
238 media_codec.reset(VideoCodecBridge::Create(kCodecVP8)); | 238 media_codec.reset(VideoCodecBridge::Create(kCodecVP8, false)); |
239 EXPECT_TRUE(media_codec->Start( | 239 EXPECT_TRUE(media_codec->Start( |
240 kCodecVP8, gfx::Size(320, 240), NULL, NULL)); | 240 kCodecVP8, gfx::Size(320, 240), NULL, NULL)); |
241 scoped_refptr<DecoderBuffer> buffer = | 241 scoped_refptr<DecoderBuffer> buffer = |
242 ReadTestDataFile("vp8-I-frame-320x240"); | 242 ReadTestDataFile("vp8-I-frame-320x240"); |
243 DecodeMediaFrame( | 243 DecodeMediaFrame( |
244 media_codec.get(), buffer->data(), buffer->data_size(), | 244 media_codec.get(), buffer->data(), buffer->data_size(), |
245 base::TimeDelta(), base::TimeDelta()); | 245 base::TimeDelta(), base::TimeDelta()); |
246 | 246 |
247 // Simulate a seek to 10 seconds, and each chunk has 2 I-frames. | 247 // Simulate a seek to 10 seconds, and each chunk has 2 I-frames. |
248 std::vector<uint8> chunk(buffer->data(), | 248 std::vector<uint8> chunk(buffer->data(), |
249 buffer->data() + buffer->data_size()); | 249 buffer->data() + buffer->data_size()); |
250 chunk.insert(chunk.end(), buffer->data(), | 250 chunk.insert(chunk.end(), buffer->data(), |
251 buffer->data() + buffer->data_size()); | 251 buffer->data() + buffer->data_size()); |
252 media_codec->Reset(); | 252 media_codec->Reset(); |
253 DecodeMediaFrame(media_codec.get(), &chunk[0], chunk.size(), | 253 DecodeMediaFrame(media_codec.get(), &chunk[0], chunk.size(), |
254 base::TimeDelta::FromMicroseconds(10000000), | 254 base::TimeDelta::FromMicroseconds(10000000), |
255 base::TimeDelta::FromMicroseconds(9900000)); | 255 base::TimeDelta::FromMicroseconds(9900000)); |
256 | 256 |
257 // Simulate a seek to 5 seconds. | 257 // Simulate a seek to 5 seconds. |
258 media_codec->Reset(); | 258 media_codec->Reset(); |
259 DecodeMediaFrame(media_codec.get(), &chunk[0], chunk.size(), | 259 DecodeMediaFrame(media_codec.get(), &chunk[0], chunk.size(), |
260 base::TimeDelta::FromMicroseconds(5000000), | 260 base::TimeDelta::FromMicroseconds(5000000), |
261 base::TimeDelta::FromMicroseconds(4900000)); | 261 base::TimeDelta::FromMicroseconds(4900000)); |
262 } | 262 } |
263 | 263 |
264 TEST(MediaCodecBridgeTest, CreateUnsupportedCodec) { | 264 TEST(MediaCodecBridgeTest, CreateUnsupportedCodec) { |
265 EXPECT_EQ(NULL, AudioCodecBridge::Create(kUnknownAudioCodec)); | 265 EXPECT_EQ(NULL, AudioCodecBridge::Create(kUnknownAudioCodec)); |
266 EXPECT_EQ(NULL, VideoCodecBridge::Create(kUnknownVideoCodec)); | 266 EXPECT_EQ(NULL, VideoCodecBridge::Create(kUnknownVideoCodec, false)); |
267 } | 267 } |
268 | 268 |
269 } // namespace media | 269 } // namespace media |
OLD | NEW |