// Copyright 2019 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CAST_STREAMING_PUBLIC_OFFER_MESSAGES_H_ #define CAST_STREAMING_PUBLIC_OFFER_MESSAGES_H_ #include <chrono> #include <string> #include <vector> #include "cast/streaming/impl/rtp_defines.h" #include "cast/streaming/impl/session_config.h" #include "cast/streaming/message_fields.h" #include "cast/streaming/resolution.h" #include "json/value.h" #include "platform/base/error.h" #include "util/simple_fraction.h" // This file contains the implementation of the Cast V2 Mirroring Control // Protocol offer object definition. namespace openscreen::cast { // If the target delay provided by the sender is not bounded by // [kMinTargetDelay, kMaxTargetDelay], it will be set to // kDefaultTargetPlayoutDelay. constexpr auto kMinTargetPlayoutDelay = …; constexpr auto kMaxTargetPlayoutDelay = …; // If the sender provides an invalid maximum frame rate, it ill // be set to kDefaultMaxFrameRate. constexpr int kDefaultMaxFrameRate = …; constexpr int kDefaultNumVideoChannels = …; constexpr int kDefaultNumAudioChannels = …; // A stream, as detailed by the CastV2 protocol spec, is a segment of an // offer message specifically representing a configuration object for // a codec and its related fields, such as maximum bit rate, time base, // and other fields. // Composed classes include AudioStream and VideoStream, which contain // fields specific to audio and video respectively. struct Stream { … }; struct AudioStream { … }; struct VideoStream { … }; struct Offer { … }; } // namespace openscreen::cast #endif // CAST_STREAMING_PUBLIC_OFFER_MESSAGES_H_