// Copyright 2015 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_COMMON_OPUS_CONSTANTS_H_ #define MEDIA_FORMATS_COMMON_OPUS_CONSTANTS_H_ #include <stdint.h> namespace media { // The Opus specification is part of IETF RFC 6716: // http://tools.ietf.org/html/rfc6716 // Opus Extra Data contents: // - "OpusHead" magic signature (64 bits) // - version number (8 bits) // - Channels C (8 bits) // - Pre-skip (16 bits) // - Sampling rate (32 bits) // - Gain in dB (16 bits, S7.8) // - Mapping (8 bits, 0=single stream (mono/stereo) 1=Vorbis mapping, // 2..254: reserved, 255: multistream with no mapping) // // - if (mapping != 0) // - N = total number of streams (8 bits) // - M = number of paired streams (8 bits) // - C times channel origin // - if (C<2*M) // - stream = byte/2 // - if (byte&0x1 == 0) // - left // else // - right // - else // - stream = byte-M enum { … }; // Opus internal to Vorbis channel order mapping written in the header. extern const uint8_t kOpusVorbisChannelMap[OPUS_MAX_VORBIS_CHANNELS] [OPUS_MAX_VORBIS_CHANNELS]; } // namespace media #endif // MEDIA_FORMATS_COMMON_OPUS_CONSTANTS_H_