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

Side by Side Diff: media/base/android/media_codec_bridge_unittest.cc

Issue 14932020: Add Create() function to AudioCodecBridge and VideoCodecBridge to allow return of null pointers (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: addressing comments Created 7 years, 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698