| // Copyright 2014 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #ifndef MEDIA_FORMATS_MP4_ES_DESCRIPTOR_H_ | 
 | #define MEDIA_FORMATS_MP4_ES_DESCRIPTOR_H_ | 
 |  | 
 | #include <stdint.h> | 
 |  | 
 | #include <vector> | 
 |  | 
 | #include "media/base/media_export.h" | 
 |  | 
 | namespace media { | 
 |  | 
 | class BitReader; | 
 |  | 
 | namespace mp4 { | 
 |  | 
 | // The following values are extracted from ISO 14496 Part 1 Table 5 - | 
 | // objectTypeIndication Values. Only values currently in use are included. | 
 | enum ObjectType { | 
 |   kForbidden = 0, | 
 |   kISO_14496_3 = 0x40,         // MPEG4 AAC | 
 |   kISO_13818_7_AAC_LC = 0x67,  // MPEG2 AAC-LC | 
 |   kAC3 = 0xa5,                 // AC3 | 
 |   kEAC3 = 0xa6                 // EAC3 / Dolby Digital Plus | 
 | }; | 
 |  | 
 | // This class parse object type and decoder specific information from an | 
 | // elementary stream descriptor, which is usually contained in an esds box. | 
 | // Please refer to ISO 14496 Part 1 7.2.6.5 for more details. | 
 | class MEDIA_EXPORT ESDescriptor { | 
 |  public: | 
 |   // Utility function to check if the given object type is AAC. | 
 |   static bool IsAAC(uint8_t object_type); | 
 |  | 
 |   ESDescriptor(); | 
 |   ~ESDescriptor(); | 
 |  | 
 |   bool Parse(const std::vector<uint8_t>& data); | 
 |  | 
 |   uint8_t object_type() const; | 
 |   const std::vector<uint8_t>& decoder_specific_info() const; | 
 |  | 
 |  private: | 
 |   enum Tag { | 
 |     kESDescrTag = 0x03, | 
 |     kDecoderConfigDescrTag = 0x04, | 
 |     kDecoderSpecificInfoTag = 0x05 | 
 |   }; | 
 |  | 
 |   bool ParseDecoderConfigDescriptor(BitReader* reader); | 
 |   bool ParseDecoderSpecificInfo(BitReader* reader); | 
 |  | 
 |   uint8_t object_type_; | 
 |   std::vector<uint8_t> decoder_specific_info_; | 
 | }; | 
 |  | 
 | }  // namespace mp4 | 
 |  | 
 | }  // namespace media | 
 |  | 
 | #endif  // MEDIA_FORMATS_MP4_ES_DESCRIPTOR_H_ |