blob: 737eeda8610724e76dd8e9ce8c4645b0b94d8209 [file] [log] [blame]
// Copyright (c) 2015 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 COBALT_MEDIA_FORMATS_WEBM_OPUS_PACKET_BUILDER_H_
#define COBALT_MEDIA_FORMATS_WEBM_OPUS_PACKET_BUILDER_H_
#include <memory>
#include <vector>
#include "base/basictypes.h"
#include "starboard/types.h"
namespace cobalt {
namespace media {
// From Opus RFC. See https://tools.ietf.org/html/rfc6716#page-14
enum OpusConstants {
kNumPossibleOpusConfigs = 32,
kMinOpusPacketFrameCount = 1,
kMaxOpusPacketFrameCount = 48
};
class OpusPacket {
public:
OpusPacket(uint8_t config, uint8_t frame_count, bool is_VBR);
~OpusPacket();
const uint8_t* data() const;
int size() const;
double duration_ms() const;
private:
std::vector<uint8_t> data_;
double duration_ms_;
DISALLOW_COPY_AND_ASSIGN(OpusPacket);
};
// Builds an exhaustive collection of Opus packet configurations.
std::vector<std::unique_ptr<OpusPacket>> BuildAllOpusPackets();
} // namespace media
} // namespace cobalt
#endif // COBALT_MEDIA_FORMATS_WEBM_OPUS_PACKET_BUILDER_H_