| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 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 | 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 "media/base/android/sdk_media_codec_bridge.h" | 5 #include "media/base/android/sdk_media_codec_bridge.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <memory> | 10 #include <memory> |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 146 input_pts += base::TimeDelta::FromMicroseconds(33000); | 146 input_pts += base::TimeDelta::FromMicroseconds(33000); |
| 147 timestamp = new_timestamp; | 147 timestamp = new_timestamp; |
| 148 } | 148 } |
| 149 } | 149 } |
| 150 | 150 |
| 151 TEST(SdkMediaCodecBridgeTest, Initialize) { | 151 TEST(SdkMediaCodecBridgeTest, Initialize) { |
| 152 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); | 152 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); |
| 153 | 153 |
| 154 std::unique_ptr<media::MediaCodecBridge> media_codec; | 154 std::unique_ptr<media::MediaCodecBridge> media_codec; |
| 155 media_codec.reset(VideoCodecBridge::CreateDecoder( | 155 media_codec.reset(VideoCodecBridge::CreateDecoder( |
| 156 kCodecH264, false, gfx::Size(640, 480), nullptr, nullptr)); | 156 kCodecH264, false, gfx::Size(640, 480), nullptr, nullptr, |
| 157 std::vector<uint8_t>(), std::vector<uint8_t>())); |
| 157 } | 158 } |
| 158 | 159 |
| 159 TEST(SdkMediaCodecBridgeTest, DoNormal) { | 160 TEST(SdkMediaCodecBridgeTest, DoNormal) { |
| 160 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); | 161 SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE(); |
| 161 | 162 |
| 162 std::unique_ptr<media::AudioCodecBridge> media_codec; | 163 std::unique_ptr<media::AudioCodecBridge> media_codec; |
| 163 media_codec.reset(AudioCodecBridge::Create(kCodecMP3)); | 164 media_codec.reset(AudioCodecBridge::Create(kCodecMP3)); |
| 164 | 165 |
| 165 ASSERT_TRUE(media_codec->ConfigureAndStart(kCodecMP3, 44100, 2, nullptr, 0, 0, | 166 ASSERT_TRUE(media_codec->ConfigureAndStart(kCodecMP3, 44100, 2, nullptr, 0, 0, |
| 166 0, nullptr)); | 167 0, nullptr)); |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 267 // Seek Preroll is < 0. | 268 // Seek Preroll is < 0. |
| 268 EXPECT_FALSE( | 269 EXPECT_FALSE( |
| 269 media_codec->ConfigureAndStart(kCodecOpus, 48000, 2, dummy_extra_data, | 270 media_codec->ConfigureAndStart(kCodecOpus, 48000, 2, dummy_extra_data, |
| 270 sizeof(dummy_extra_data), 0, -1, nullptr)); | 271 sizeof(dummy_extra_data), 0, -1, nullptr)); |
| 271 } | 272 } |
| 272 | 273 |
| 273 TEST(SdkMediaCodecBridgeTest, PresentationTimestampsDoNotDecrease) { | 274 TEST(SdkMediaCodecBridgeTest, PresentationTimestampsDoNotDecrease) { |
| 274 SKIP_TEST_IF_VP8_DECODER_IS_NOT_SUPPORTED(); | 275 SKIP_TEST_IF_VP8_DECODER_IS_NOT_SUPPORTED(); |
| 275 | 276 |
| 276 std::unique_ptr<VideoCodecBridge> media_codec(VideoCodecBridge::CreateDecoder( | 277 std::unique_ptr<VideoCodecBridge> media_codec(VideoCodecBridge::CreateDecoder( |
| 277 kCodecVP8, false, gfx::Size(320, 240), nullptr, nullptr)); | 278 kCodecVP8, false, gfx::Size(320, 240), nullptr, nullptr, |
| 279 std::vector<uint8_t>(), std::vector<uint8_t>())); |
| 278 EXPECT_TRUE(media_codec.get()); | 280 EXPECT_TRUE(media_codec.get()); |
| 279 scoped_refptr<DecoderBuffer> buffer = ReadTestDataFile("vp8-I-frame-320x240"); | 281 scoped_refptr<DecoderBuffer> buffer = ReadTestDataFile("vp8-I-frame-320x240"); |
| 280 DecodeMediaFrame(media_codec.get(), buffer->data(), buffer->data_size(), | 282 DecodeMediaFrame(media_codec.get(), buffer->data(), buffer->data_size(), |
| 281 base::TimeDelta(), base::TimeDelta()); | 283 base::TimeDelta(), base::TimeDelta()); |
| 282 | 284 |
| 283 // Simulate a seek to 10 seconds, and each chunk has 2 I-frames. | 285 // Simulate a seek to 10 seconds, and each chunk has 2 I-frames. |
| 284 std::vector<uint8_t> chunk(buffer->data(), | 286 std::vector<uint8_t> chunk(buffer->data(), |
| 285 buffer->data() + buffer->data_size()); | 287 buffer->data() + buffer->data_size()); |
| 286 chunk.insert(chunk.end(), buffer->data(), | 288 chunk.insert(chunk.end(), buffer->data(), |
| 287 buffer->data() + buffer->data_size()); | 289 buffer->data() + buffer->data_size()); |
| 288 media_codec->Flush(); | 290 media_codec->Flush(); |
| 289 DecodeMediaFrame(media_codec.get(), &chunk[0], chunk.size(), | 291 DecodeMediaFrame(media_codec.get(), &chunk[0], chunk.size(), |
| 290 base::TimeDelta::FromMicroseconds(10000000), | 292 base::TimeDelta::FromMicroseconds(10000000), |
| 291 base::TimeDelta::FromMicroseconds(9900000)); | 293 base::TimeDelta::FromMicroseconds(9900000)); |
| 292 | 294 |
| 293 // Simulate a seek to 5 seconds. | 295 // Simulate a seek to 5 seconds. |
| 294 media_codec->Flush(); | 296 media_codec->Flush(); |
| 295 DecodeMediaFrame(media_codec.get(), &chunk[0], chunk.size(), | 297 DecodeMediaFrame(media_codec.get(), &chunk[0], chunk.size(), |
| 296 base::TimeDelta::FromMicroseconds(5000000), | 298 base::TimeDelta::FromMicroseconds(5000000), |
| 297 base::TimeDelta::FromMicroseconds(4900000)); | 299 base::TimeDelta::FromMicroseconds(4900000)); |
| 298 } | 300 } |
| 299 | 301 |
| 300 TEST(SdkMediaCodecBridgeTest, CreateUnsupportedCodec) { | 302 TEST(SdkMediaCodecBridgeTest, CreateUnsupportedCodec) { |
| 301 EXPECT_EQ(nullptr, AudioCodecBridge::Create(kUnknownAudioCodec)); | 303 EXPECT_EQ(nullptr, AudioCodecBridge::Create(kUnknownAudioCodec)); |
| 302 EXPECT_EQ(nullptr, VideoCodecBridge::CreateDecoder(kUnknownVideoCodec, false, | 304 EXPECT_EQ(nullptr, |
| 303 gfx::Size(320, 240), | 305 VideoCodecBridge::CreateDecoder( |
| 304 nullptr, nullptr)); | 306 kUnknownVideoCodec, false, gfx::Size(320, 240), nullptr, |
| 307 nullptr, std::vector<uint8_t>(), std::vector<uint8_t>())); |
| 305 } | 308 } |
| 306 | 309 |
| 307 } // namespace media | 310 } // namespace media |
| OLD | NEW |