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

Side by Side Diff: webrtc/base/bitbuffer_unittest.cc

Issue 1314473008: H264 bitstream parser. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: add basic unittests Created 5 years, 2 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
OLDNEW
1 /* 1 /*
2 * Copyright 2015 The WebRTC Project Authors. All rights reserved. 2 * Copyright 2015 The WebRTC Project Authors. All rights reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 uint64 encoded_val = GolombEncoded(i); 198 uint64 encoded_val = GolombEncoded(i);
199 byteBuffer.Clear(); 199 byteBuffer.Clear();
200 byteBuffer.WriteUInt64(encoded_val); 200 byteBuffer.WriteUInt64(encoded_val);
201 uint32 decoded_val; 201 uint32 decoded_val;
202 EXPECT_TRUE(buffer.Seek(0, 0)); 202 EXPECT_TRUE(buffer.Seek(0, 0));
203 EXPECT_TRUE(buffer.ReadExponentialGolomb(&decoded_val)); 203 EXPECT_TRUE(buffer.ReadExponentialGolomb(&decoded_val));
204 EXPECT_EQ(i, decoded_val); 204 EXPECT_EQ(i, decoded_val);
205 } 205 }
206 } 206 }
207 207
208 TEST(BitBufferTest, SignedGolombValues) {
209 uint8_t golomb_bits[] = {
210 0x80, // 1
211 0x40, // 010
212 0x60, // 011
213 0x20, // 00100
214 0x38, // 00111
215 };
216 int32_t expected[] = {0, 1, -1, 2, -3};
217 for (size_t i = 0; i < sizeof(golomb_bits); ++i) {
218 BitBuffer buffer(&golomb_bits[i], 1);
219 int32_t decoded_val;
220 ASSERT_TRUE(buffer.ReadSignedExponentialGolomb(&decoded_val));
221 EXPECT_EQ(expected[i], decoded_val)
222 << "Mismatch in expected/decoded value for golomb_bits[" << i
223 << "]: " << static_cast<int>(golomb_bits[i]);
224 }
225 }
226
208 TEST(BitBufferTest, NoGolombOverread) { 227 TEST(BitBufferTest, NoGolombOverread) {
209 const uint8 bytes[] = {0x00, 0xFF, 0xFF}; 228 const uint8 bytes[] = {0x00, 0xFF, 0xFF};
210 // Make sure the bit buffer correctly enforces byte length on golomb reads. 229 // Make sure the bit buffer correctly enforces byte length on golomb reads.
211 // If it didn't, the above buffer would be valid at 3 bytes. 230 // If it didn't, the above buffer would be valid at 3 bytes.
212 BitBuffer buffer(bytes, 1); 231 BitBuffer buffer(bytes, 1);
213 uint32 decoded_val; 232 uint32 decoded_val;
214 EXPECT_FALSE(buffer.ReadExponentialGolomb(&decoded_val)); 233 EXPECT_FALSE(buffer.ReadExponentialGolomb(&decoded_val));
215 234
216 BitBuffer longer_buffer(bytes, 2); 235 BitBuffer longer_buffer(bytes, 2);
217 EXPECT_FALSE(longer_buffer.ReadExponentialGolomb(&decoded_val)); 236 EXPECT_FALSE(longer_buffer.ReadExponentialGolomb(&decoded_val));
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
300 EXPECT_TRUE(buffer.WriteBits(0, 1)); 319 EXPECT_TRUE(buffer.WriteBits(0, 1));
301 EXPECT_EQ(0xEFu, bytes[0]); 320 EXPECT_EQ(0xEFu, bytes[0]);
302 EXPECT_TRUE(buffer.WriteBits(0, 3)); 321 EXPECT_TRUE(buffer.WriteBits(0, 3));
303 EXPECT_EQ(0xE1u, bytes[0]); 322 EXPECT_EQ(0xE1u, bytes[0]);
304 EXPECT_TRUE(buffer.WriteBits(0, 2)); 323 EXPECT_TRUE(buffer.WriteBits(0, 2));
305 EXPECT_EQ(0xE0u, bytes[0]); 324 EXPECT_EQ(0xE0u, bytes[0]);
306 EXPECT_EQ(0x7F, bytes[1]); 325 EXPECT_EQ(0x7F, bytes[1]);
307 } 326 }
308 327
309 } // namespace rtc 328 } // namespace rtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698