es_descriptor_unittest.cc 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. // Copyright 2014 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "media/formats/mp4/es_descriptor.h"
  5. #include <stdint.h>
  6. #include "testing/gtest/include/gtest/gtest.h"
  7. namespace media {
  8. namespace mp4 {
  9. TEST(ESDescriptorTest, SingleByteLengthTest) {
  10. ESDescriptor es_desc;
  11. uint8_t buffer[] = {0x03, 0x19, 0x00, 0x01, 0x00, 0x04, 0x11, 0x40, 0x15,
  12. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  13. 0x00, 0x00, 0x05, 0x02, 0x12, 0x10, 0x06, 0x01, 0x02};
  14. std::vector<uint8_t> data;
  15. data.assign(buffer, buffer + sizeof(buffer));
  16. EXPECT_EQ(es_desc.object_type(), kForbidden);
  17. EXPECT_TRUE(es_desc.Parse(data));
  18. EXPECT_EQ(es_desc.object_type(), kISO_14496_3);
  19. EXPECT_EQ(es_desc.decoder_specific_info().size(), 2u);
  20. EXPECT_EQ(es_desc.decoder_specific_info()[0], 0x12);
  21. EXPECT_EQ(es_desc.decoder_specific_info()[1], 0x10);
  22. }
  23. TEST(ESDescriptorTest, NonAACTest) {
  24. ESDescriptor es_desc;
  25. uint8_t buffer[] = {0x03, 0x19, 0x00, 0x01, 0x00, 0x04, 0x11, 0x66, 0x15,
  26. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  27. 0x00, 0x00, 0x05, 0x02, 0x12, 0x10, 0x06, 0x01, 0x02};
  28. std::vector<uint8_t> data;
  29. data.assign(buffer, buffer + sizeof(buffer));
  30. EXPECT_TRUE(es_desc.Parse(data));
  31. EXPECT_NE(es_desc.object_type(), kISO_14496_3);
  32. EXPECT_EQ(es_desc.decoder_specific_info().size(), 2u);
  33. EXPECT_EQ(es_desc.decoder_specific_info()[0], 0x12);
  34. EXPECT_EQ(es_desc.decoder_specific_info()[1], 0x10);
  35. }
  36. TEST(ESDescriptorTest, MultiByteLengthTest) {
  37. ESDescriptor es_desc;
  38. uint8_t buffer[] = {0x03, 0x80, 0x19, 0x00, 0x01, 0x00, 0x04, 0x80, 0x80,
  39. 0x11, 0x40, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  40. 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x80, 0x80, 0x80,
  41. 0x02, 0x12, 0x10, 0x06, 0x01, 0x02};
  42. std::vector<uint8_t> data;
  43. data.assign(buffer, buffer + sizeof(buffer));
  44. EXPECT_TRUE(es_desc.Parse(data));
  45. EXPECT_EQ(es_desc.object_type(), kISO_14496_3);
  46. EXPECT_EQ(es_desc.decoder_specific_info().size(), 2u);
  47. EXPECT_EQ(es_desc.decoder_specific_info()[0], 0x12);
  48. EXPECT_EQ(es_desc.decoder_specific_info()[1], 0x10);
  49. }
  50. TEST(ESDescriptorTest, FiveByteLengthTest) {
  51. ESDescriptor es_desc;
  52. uint8_t buffer[] = {0x03, 0x80, 0x19, 0x00, 0x01, 0x00, 0x04, 0x80, 0x80,
  53. 0x11, 0x40, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  54. 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x80, 0x80, 0x80,
  55. 0x80, 0x02, 0x12, 0x10, 0x06, 0x01, 0x02};
  56. std::vector<uint8_t> data;
  57. data.assign(buffer, buffer + sizeof(buffer));
  58. EXPECT_TRUE(es_desc.Parse(data));
  59. EXPECT_EQ(es_desc.object_type(), kISO_14496_3);
  60. EXPECT_EQ(es_desc.decoder_specific_info().size(), 0u);
  61. }
  62. } // namespace mp4
  63. } // namespace media