// Copyright 2011 The Chromium Authors
// 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 MEDIA_BASE_LIMITS_H_
#define MEDIA_BASE_LIMITS_H_

#include "build/build_config.h"

namespace media {

namespace limits {

// Maximum possible dimension (width or height) for any video.
constexpr int kMaxDimension = (1 << 15) - 1;  // 32767

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

// Total number of video frames which are populating in the pipeline.
constexpr int 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 768 kHz though.
//
// kMaxSampleRate should be updated with
// blink::audio_utilities::MaxAudioBufferSampleRate()
constexpr int kMaxSampleRate = 768000;
constexpr int kMinSampleRate = 3000;
constexpr int kMaxChannels = 32;
constexpr int kMaxBytesPerSample = 4;
constexpr int kMaxBitsPerSample = kMaxBytesPerSample * 8;
constexpr int kMaxSamplesPerPacket = kMaxSampleRate;
constexpr int kMaxPacketSizeInBytes =
    kMaxBytesPerSample * kMaxChannels * kMaxSamplesPerPacket;

// This limit is used by ParamTraits<VideoCaptureParams>.
constexpr int kMaxFramesPerSecond = 1000;

// The minimum elapsed amount of time (in seconds) for a playback to be
// considered as having active engagement.
constexpr int kMinimumElapsedWatchTimeSecs = 7;

// 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.
constexpr int kMinCertificateLength = 128;
constexpr int kMaxCertificateLength = 16 * 1024;
constexpr int kMaxSessionIdLength = 512;
constexpr int kMinKeyIdLength = 1;
constexpr int kMaxKeyIdLength = 512;
constexpr int kMaxKeyIds = 128;
constexpr int kMaxInitDataLength = 64 * 1024;         // 64 KB
constexpr int kMaxSessionResponseLength = 64 * 1024;  // 64 KB
constexpr int kMaxKeySystemLength = 256;

// Minimum and maximum buffer sizes for certain audio platforms.
#if BUILDFLAG(IS_MAC)
constexpr int kMinAudioBufferSize = 128;
constexpr int kMaxAudioBufferSize = 4096;
#elif defined(USE_CRAS)
// Though CRAS has different per-board defaults, allow explicitly requesting
// this buffer size on any board.
constexpr int kMinAudioBufferSize = 256;
constexpr int kMaxAudioBufferSize = 8192;
#endif

// Maximum buffer size supported by Web Audio.
constexpr int kMaxWebAudioBufferSize = 8192;

// Bounds for the number of threads used for software video decoding.
constexpr int kMinVideoDecodeThreads = 2;
constexpr int kMaxVideoDecodeThreads =
    16;  // Matches ffmpeg's MAX_AUTO_THREADS. Higher values can result in
         // immediate out of memory errors for high resolution content. See
         // https://crbug.com/893984

}  // namespace limits

}  // namespace media

#endif  // MEDIA_BASE_LIMITS_H_
