123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- // Copyright 2021 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_DTSX_H_
- #define MEDIA_FORMATS_MP4_DTSX_H_
- #include <stdint.h>
- #include <vector>
- #include "media/base/media_export.h"
- #include "media/base/media_log.h"
- namespace media {
- namespace mp4 {
- enum class DtsxChannelMask : uint32_t {
- C = 0x00000001,
- L = 0x00000002,
- R = 0x00000004,
- LS = 0x00000008,
- RS = 0x00000010,
- LFE1 = 0x00000020,
- CS = 0x00000040,
- LSR = 0x00000080,
- RSR = 0x00000100,
- LSS = 0x00000200,
- RSS = 0x00000400,
- LC = 0x00000800,
- RC = 0x00001000,
- LH = 0x00002000,
- CH = 0x00004000,
- RH = 0x00008000,
- LFE2 = 0x00010000,
- LW = 0x00020000,
- RW = 0x00040000,
- OH = 0x00080000,
- LHS = 0x00100000,
- RHS = 0x00200000,
- CHR = 0x00400000,
- LHR = 0x00800000,
- RHR = 0x01000000,
- CB = 0x02000000,
- LB = 0x04000000,
- RB = 0x08000000,
- LTF = 0x10000000,
- RTF = 0x20000000,
- LTR = 0x40000000,
- RTR = 0x80000000
- };
- // This class parses the DTSX information from decoder specific information
- // embedded in the udts box in an ISO BMFF file.
- // Please refer to SCTE DVS 243-4 Part 4 Table 12 - DTS-UHD Specific Box for
- // more details.
- class MEDIA_EXPORT DTSX {
- public:
- DTSX();
- DTSX(const DTSX& other);
- ~DTSX();
- // Parse the DTSX config from the udts box.
- bool Parse(const std::vector<uint8_t>& data, MediaLog* media_log);
- uint8_t GetDecoderProfileCode() const;
- int GetFrameDuration() const;
- int GetMaxPayload() const;
- int GetNumPresentations() const;
- uint32_t GetChannelMask() const;
- int GetSamplingFrequency() const;
- private:
- // Logs the parameters of a DTSX stream to DVLOG level 3.
- void LogDtsxParameters();
- // Indicates the DTS-UHD decoder profile required to decode this stream
- uint8_t decoder_profile_code_ = 0;
- // Frame duration in samples.
- // Relative to BaseSamplingFrequency.
- int frame_duration_ = 0;
- // Indicates the maximum size of the audio payload.
- // Maxpayload is not the size of the largest audio frame in the presentation,
- // but rather a "not to exceed" value for buffer configuration and digital
- // audio interface purposes, and is inclusive of all required preambles,
- // headers, burst spacing, etc.
- int max_payload_ = 0;
- // The num of audio presentations encoded within DTS-UHD elementary stream.
- int num_presentations_ = 0;
- // A bit mask that indicates the channel layout encoded in the default
- // resentation
- // of the DTS-UHD bitstream.
- uint32_t channel_mask_ = 0;
- // The sampling frequency of the audio samples stored in the bitstream.
- // Calucalated by multiplying the BaseSamplingFrequency by SampleRateMod.
- int sampling_frequency_ = 0;
- };
- } // namespace mp4
- } // namespace media
- #endif // MEDIA_FORMATS_MP4_DTSX_H_
|