| 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 |