| Index: media/mp4/aac.h
|
| diff --git a/media/mp4/aac.h b/media/mp4/aac.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..7a2a3f8914ac176983cc73dd39471b5cd5ee71dc
|
| --- /dev/null
|
| +++ b/media/mp4/aac.h
|
| @@ -0,0 +1,67 @@
|
| +// Copyright (c) 2012 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_MP4_AAC_H_
|
| +#define MEDIA_MP4_AAC_H_
|
| +
|
| +#include <vector>
|
| +
|
| +#include "base/basictypes.h"
|
| +#include "media/base/channel_layout.h"
|
| +#include "media/base/media_export.h"
|
| +
|
| +namespace media {
|
| +
|
| +class BitReader;
|
| +
|
| +namespace mp4 {
|
| +
|
| +// This class parses the AAC information from decoder specific information
|
| +// embedded in the esds box in an ISO BMFF file.
|
| +// Please refer to ISO 14496 Part 3 Table 1.13 - Syntax of AudioSpecificConfig
|
| +// for more details.
|
| +class MEDIA_EXPORT AAC {
|
| + public:
|
| + AAC();
|
| + ~AAC();
|
| +
|
| + // Parse the AAC config from the raw binary data embedded in esds box.
|
| + // The function will parse the data and get the ElementaryStreamDescriptor,
|
| + // then it will parse the ElementaryStreamDescriptor to get audio stream
|
| + // configurations.
|
| + bool Parse(const std::vector<uint8>& data);
|
| +
|
| + uint32 frequency() const;
|
| + ChannelLayout channel_layout() const;
|
| +
|
| + // This function converts a raw AAC frame into an AAC frame with an ADTS
|
| + // header. On success, the function returns true and stores the converted data
|
| + // in the buffer. The function returns false on failure and leaves the buffer
|
| + // unchanged.
|
| + bool ConvertEsdsToADTS(std::vector<uint8>* buffer) const;
|
| +
|
| + private:
|
| + bool SkipDecoderGASpecificConfig(BitReader* bit_reader) const;
|
| + bool SkipErrorSpecificConfig() const;
|
| + bool SkipGASpecificConfig(BitReader* bit_reader) const;
|
| +
|
| + // The following variables store the AAC specific configuration information
|
| + // that are used to generate the ADTS header.
|
| + uint8 profile_;
|
| + uint8 frequency_index_;
|
| + uint8 channel_config_;
|
| +
|
| + // The following variables store audio configuration information that
|
| + // can be used by Chromium. They are based on the AAC specific
|
| + // configuration but can be overridden by extensions in elementary
|
| + // stream descriptor.
|
| + uint32 frequency_;
|
| + ChannelLayout channel_layout_;
|
| +};
|
| +
|
| +} // namespace mp4
|
| +
|
| +} // namespace media
|
| +
|
| +#endif // MEDIA_MP4_AAC_H_
|
|
|