// Copyright (c) 2011 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.

// Contains limit definition constants for the media subsystem.

#ifndef COBALT_MEDIA_BASE_LIMITS_H_
#define COBALT_MEDIA_BASE_LIMITS_H_

namespace media {

namespace limits {

enum {
  // Maximum possible dimension (width or height) for any video.
  kMaxDimension = (1 << 15) - 1,  // 32767

  // Maximum possible canvas size (width multiplied by height) for any video.
  kMaxCanvas = (1 << (14 * 2)),  // 16384 x 16384

  // Total number of video frames which are populating in the pipeline.
  kMaxVideoFrames = 4,

  // The following limits are used by AudioParameters::IsValid().
  //
  // A few notes on sample rates of common formats:
  //   - AAC files are limited to 96 kHz.
  //   - MP3 files are limited to 48 kHz.
  //   - Vorbis used to be limited to 96 kHz, but no longer has that
  //     restriction.
  //   - Most PC audio hardware is limited to 192 kHz, some specialized DAC
  //     devices will use 384 kHz though.
  kMaxSampleRate = 384000,
  kMinSampleRate = 3000,
  kMaxChannels = 32,
  kMaxBytesPerSample = 4,
  kMaxBitsPerSample = kMaxBytesPerSample * 8,
  kMaxSamplesPerPacket = kMaxSampleRate,
  kMaxPacketSizeInBytes =
      kMaxBytesPerSample * kMaxChannels * kMaxSamplesPerPacket,

  // This limit is used by ParamTraits<VideoCaptureParams>.
  kMaxFramesPerSecond = 1000,

  // Maximum lengths for various EME API parameters. These are checks to
  // prevent unnecessarily large parameters from being passed around, and the
  // lengths are somewhat arbitrary as the EME spec doesn't specify any limits.
  kMinCertificateLength = 128,
  kMaxCertificateLength = 16 * 1024,
  kMaxSessionIdLength = 512,
  kMinKeyIdLength = 1,
  kMaxKeyIdLength = 512,
  kMaxKeyIds = 128,
  kMaxInitDataLength = 64 * 1024,         // 64 KB
  kMaxSessionResponseLength = 64 * 1024,  // 64 KB
  kMaxKeySystemLength = 256,
};

}  // namespace limits

}  // namespace media

#endif  // COBALT_MEDIA_BASE_LIMITS_H_
