You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
2.0 KiB
63 lines
2.0 KiB
// Copyright 2019 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 CAST_STREAMING_SESSION_CONFIG_H_
|
|
#define CAST_STREAMING_SESSION_CONFIG_H_
|
|
|
|
#include <array>
|
|
#include <chrono>
|
|
#include <cstdint>
|
|
|
|
#include "cast/streaming/ssrc.h"
|
|
|
|
namespace openscreen {
|
|
namespace cast {
|
|
|
|
// Common streaming configuration, established from the OFFER/ANSWER exchange,
|
|
// that the Sender and Receiver are both assuming.
|
|
// TODO(jophba): add config validation.
|
|
struct SessionConfig final {
|
|
SessionConfig(Ssrc sender_ssrc,
|
|
Ssrc receiver_ssrc,
|
|
int rtp_timebase,
|
|
int channels,
|
|
std::chrono::milliseconds target_playout_delay,
|
|
std::array<uint8_t, 16> aes_secret_key,
|
|
std::array<uint8_t, 16> aes_iv_mask,
|
|
bool is_pli_enabled);
|
|
SessionConfig(const SessionConfig& other);
|
|
SessionConfig(SessionConfig&& other) noexcept;
|
|
SessionConfig& operator=(const SessionConfig& other);
|
|
SessionConfig& operator=(SessionConfig&& other) noexcept;
|
|
~SessionConfig();
|
|
|
|
// The sender and receiver's SSRC identifiers. Note: SSRC identifiers
|
|
// are defined as unsigned 32 bit integers here:
|
|
// https://tools.ietf.org/html/rfc5576#page-5
|
|
Ssrc sender_ssrc = 0;
|
|
Ssrc receiver_ssrc = 0;
|
|
|
|
// RTP timebase: The number of RTP units advanced per second. For audio,
|
|
// this is the sampling rate. For video, this is 90 kHz by convention.
|
|
int rtp_timebase = 90000;
|
|
|
|
// Number of channels. Must be 1 for video, for audio typically 2.
|
|
int channels = 1;
|
|
|
|
// Initial target playout delay.
|
|
std::chrono::milliseconds target_playout_delay;
|
|
|
|
// The AES-128 crypto key and initialization vector.
|
|
std::array<uint8_t, 16> aes_secret_key{};
|
|
std::array<uint8_t, 16> aes_iv_mask{};
|
|
|
|
// Whether picture loss indication (PLI) should be used for this session.
|
|
bool is_pli_enabled = false;
|
|
};
|
|
|
|
} // namespace cast
|
|
} // namespace openscreen
|
|
|
|
#endif // CAST_STREAMING_SESSION_CONFIG_H_
|