chromium/components/mirroring/service/mirror_settings.h

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

#ifndef COMPONENTS_MIRRORING_SERVICE_MIRROR_SETTINGS_H_
#define COMPONENTS_MIRRORING_SERVICE_MIRROR_SETTINGS_H_

#include "base/component_export.h"
#include "base/time/time.h"
#include "media/capture/video_capture_types.h"
#include "media/cast/cast_config.h"

namespace media {
class AudioParameters;
enum class AudioCodec;
enum class VideoCodec;
}  // namespace media

namespace mirroring {

// The interval since the last video frame was received from the video source,
// before requesting a refresh frame.
inline constexpr base::TimeDelta kFrameRefreshInterval =;

// Default end-to-end latency. Currently adaptive latency control is disabled
// because of audio playout regressions (b/32876644).
// TODO(openscreen/44): Re-enable in port to Open Screen.
//
// NOTE: currently ChromeOS does not support a lower default playout delay.
// TODO(https://issuetracker.google.com/327950363): investigate.
inline constexpr base::TimeDelta kDefaultPlayoutDelay =base::Milliseconds(400);
#else
    base::Milliseconds(200);
#endif

// Holds the default settings for a mirroring session. This class provides the
// audio/video configs that this sender supports. And also provides the
// audio/video constraints used for capturing.
// TODO(issuetracker.google.com/158032164): as part of migration to libcast's
// OFFER/ANSWER exchange, expose constraints here from the OFFER message.
class COMPONENT_EXPORT(MIRRORING_SERVICE) MirrorSettings {};

}  // namespace mirroring

#endif  // COMPONENTS_MIRRORING_SERVICE_MIRROR_SETTINGS_H_