chromium/media/formats/dts/dts_util.h

// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef MEDIA_FORMATS_DTS_DTS_UTIL_H_
#define MEDIA_FORMATS_DTS_DTS_UTIL_H_

#include <stddef.h>
#include <stdint.h>

#include "base/containers/span.h"
#include "media/base/audio_codecs.h"
#include "media/base/media_export.h"

namespace media {

namespace dts {

// Returns the total number of audio samples in the given buffer, which
// could contain several complete DTS frames.
MEDIA_EXPORT int ParseTotalSampleCount(const uint8_t* data,
                                       size_t size,
                                       AudioCodec dts_codec_type);

// Encapsulate a single DTS audio frame with IEC 61937 encapsulation to
// allow IEC 61937 frame to pass through to audio sink (HDMI/SPDIF).
// Return the size of the IEC 61937 frame.
MEDIA_EXPORT int WrapDTSWithIEC61937(base::span<const uint8_t> input_data,
                                     base::span<uint8_t> output_data,
                                     AudioCodec dts_codec_type);

// Return the number of audio samples per DTS audio frame.
MEDIA_EXPORT int GetDTSSamplesPerFrame(AudioCodec dts_codec_type);

}  // namespace dts

}  // namespace media

#endif  // MEDIA_FORMATS_DTS_DTS_UTIL_H_