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/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
9 #include "media/base/android/media_codec_bridge.h" | 9 #include "media/base/android/media_codec_bridge.h" |
10 #include "testing/gmock/include/gmock/gmock.h" | 10 #include "testing/gmock/include/gmock/gmock.h" |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
90 | 90 |
91 namespace media { | 91 namespace media { |
92 | 92 |
93 static const int kPresentationTimeBase = 100; | 93 static const int kPresentationTimeBase = 100; |
94 | 94 |
95 TEST(MediaCodecBridgeTest, Initialize) { | 95 TEST(MediaCodecBridgeTest, Initialize) { |
96 if (!MediaCodecBridge::IsAvailable()) | 96 if (!MediaCodecBridge::IsAvailable()) |
97 return; | 97 return; |
98 | 98 |
99 scoped_ptr<media::MediaCodecBridge> media_codec; | 99 scoped_ptr<media::MediaCodecBridge> media_codec; |
100 media_codec.reset(new VideoCodecBridge(kCodecH264)); | 100 media_codec.reset(VideoCodecBridge::Create(kCodecH264)); |
101 } | 101 } |
102 | 102 |
103 TEST(MediaCodecBridgeTest, DoNormal) { | 103 TEST(MediaCodecBridgeTest, DoNormal) { |
104 if (!MediaCodecBridge::IsAvailable()) | 104 if (!MediaCodecBridge::IsAvailable()) |
105 return; | 105 return; |
106 | 106 |
107 scoped_ptr<media::AudioCodecBridge> media_codec; | 107 scoped_ptr<media::AudioCodecBridge> media_codec; |
108 media_codec.reset(new AudioCodecBridge(kCodecMP3)); | 108 media_codec.reset(AudioCodecBridge::Create(kCodecMP3)); |
109 | 109 |
110 media_codec->Start(kCodecMP3, 44100, 2, NULL, 0, false); | 110 media_codec->Start(kCodecMP3, 44100, 2, NULL, 0, false); |
111 | 111 |
112 int input_buf_index = media_codec->DequeueInputBuffer( | 112 int input_buf_index = media_codec->DequeueInputBuffer( |
113 MediaCodecBridge::kTimeOutInfinity); | 113 MediaCodecBridge::kTimeOutInfinity); |
114 ASSERT_GE(input_buf_index, 0); | 114 ASSERT_GE(input_buf_index, 0); |
115 | 115 |
116 int64 input_pts = kPresentationTimeBase; | 116 int64 input_pts = kPresentationTimeBase; |
117 media_codec->QueueInputBuffer( | 117 media_codec->QueueInputBuffer( |
118 input_buf_index, test_mp3, sizeof(test_mp3), | 118 input_buf_index, test_mp3, sizeof(test_mp3), |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
155 ASSERT_LE(input_pts, kPresentationTimeBase + 2); | 155 ASSERT_LE(input_pts, kPresentationTimeBase + 2); |
156 } | 156 } |
157 ASSERT_EQ(input_pts, kPresentationTimeBase + 2); | 157 ASSERT_EQ(input_pts, kPresentationTimeBase + 2); |
158 } | 158 } |
159 | 159 |
160 TEST(MediaCodecBridgeTest, InvalidVorbisHeader) { | 160 TEST(MediaCodecBridgeTest, InvalidVorbisHeader) { |
161 if (!MediaCodecBridge::IsAvailable()) | 161 if (!MediaCodecBridge::IsAvailable()) |
162 return; | 162 return; |
163 | 163 |
164 scoped_ptr<media::AudioCodecBridge> media_codec; | 164 scoped_ptr<media::AudioCodecBridge> media_codec; |
165 media_codec.reset(new AudioCodecBridge(kCodecVorbis)); | 165 media_codec.reset(AudioCodecBridge::Create(kCodecVorbis)); |
166 | 166 |
167 // The first byte of the header is not 0x02. | 167 // The first byte of the header is not 0x02. |
168 uint8 invalid_first_byte[] = { 0x00, 0xff, 0xff, 0xff, 0xff }; | 168 uint8 invalid_first_byte[] = { 0x00, 0xff, 0xff, 0xff, 0xff }; |
169 EXPECT_FALSE(media_codec->Start( | 169 EXPECT_FALSE(media_codec->Start( |
170 kCodecVorbis, 44100, 2, invalid_first_byte, sizeof(invalid_first_byte), | 170 kCodecVorbis, 44100, 2, invalid_first_byte, sizeof(invalid_first_byte), |
171 false)); | 171 false)); |
172 | 172 |
173 // Size of the header does not match with the data we passed in. | 173 // Size of the header does not match with the data we passed in. |
174 uint8 invalid_size[] = { 0x02, 0x01, 0xff, 0x01, 0xff }; | 174 uint8 invalid_size[] = { 0x02, 0x01, 0xff, 0x01, 0xff }; |
175 EXPECT_FALSE(media_codec->Start( | 175 EXPECT_FALSE(media_codec->Start( |
176 kCodecVorbis, 44100, 2, invalid_size, sizeof(invalid_size), false)); | 176 kCodecVorbis, 44100, 2, invalid_size, sizeof(invalid_size), false)); |
177 | 177 |
178 // Size of the header is too large. | 178 // Size of the header is too large. |
179 size_t large_size = 8 * 1024 * 1024 + 2; | 179 size_t large_size = 8 * 1024 * 1024 + 2; |
180 uint8* very_large_header = new uint8[large_size]; | 180 uint8* very_large_header = new uint8[large_size]; |
181 very_large_header[0] = 0x02; | 181 very_large_header[0] = 0x02; |
182 for (size_t i = 1; i < large_size - 1; ++i) | 182 for (size_t i = 1; i < large_size - 1; ++i) |
183 very_large_header[i] = 0xff; | 183 very_large_header[i] = 0xff; |
184 very_large_header[large_size - 1] = 0xfe; | 184 very_large_header[large_size - 1] = 0xfe; |
185 EXPECT_FALSE(media_codec->Start( | 185 EXPECT_FALSE(media_codec->Start( |
186 kCodecVorbis, 44100, 2, very_large_header, 0x80000000, false)); | 186 kCodecVorbis, 44100, 2, very_large_header, 0x80000000, false)); |
187 delete[] very_large_header; | 187 delete[] very_large_header; |
188 } | 188 } |
189 | 189 |
| 190 TEST(MediaCodecBridgeTest, CreateUnsupportedCodec) { |
| 191 EXPECT_EQ(NULL, AudioCodecBridge::Create(kUnknownAudioCodec)); |
| 192 EXPECT_EQ(NULL, VideoCodecBridge::Create(kUnknownVideoCodec)); |
| 193 } |
| 194 |
190 } // namespace media | 195 } // namespace media |
OLD | NEW |