webrtc_m130/media/engine/simulcast.h
Seth Hampson 1370e309e7 Refactor of GetSimulcastConfig & EncoderStreamFactory.
The main pieces of this refactor are splitting up the creation of
simulcast layers for screenshare or the normal case, more consistent
naming, renaming streams to layers and trying to be more explicit with
some of the logic. Also added TODOs for future work to put more
application control into creating simulcast streams.

Bug: webrtc:8785
Change-Id: Ibf49fa0cc6d890ff96f8ee11c89d93a2c94119d6
Reviewed-on: https://webrtc-review.googlesource.com/47580
Commit-Queue: Seth Hampson <shampson@webrtc.org>
Reviewed-by: Peter Thatcher <pthatcher@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21989}
2018-02-12 20:08:34 +00:00

84 lines
2.4 KiB
C++

/*
* Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#ifndef MEDIA_ENGINE_SIMULCAST_H_
#define MEDIA_ENGINE_SIMULCAST_H_
#include <string>
#include <vector>
#include "call/video_config.h"
#include "rtc_base/basictypes.h"
namespace cricket {
struct StreamParams;
// TODO(sprang): Remove this, as we're moving away from temporal layer mode.
// Config for use with screen cast when temporal layers are enabled.
struct ScreenshareLayerConfig {
public:
ScreenshareLayerConfig(int tl0_bitrate, int tl1_bitrate);
// Bitrates, for temporal layers 0 and 1.
int tl0_bitrate_kbps;
int tl1_bitrate_kbps;
static ScreenshareLayerConfig GetDefault();
// Parse bitrate from group name on format "(tl0_bitrate)-(tl1_bitrate)",
// eg. "100-1000" for the default rates.
static bool FromFieldTrialGroup(const std::string& group,
ScreenshareLayerConfig* config);
};
// TODO(pthatcher): Write unit tests just for these functions,
// independent of WebrtcVideoEngine.
int GetTotalMaxBitrateBps(const std::vector<webrtc::VideoStream>& streams);
// Get simulcast settings.
// TODO(sprang): Remove default parameter when it's not longer referenced.
std::vector<webrtc::VideoStream> GetSimulcastConfig(
size_t max_layers,
int width,
int height,
int max_bitrate_bps,
double bitrate_priority,
int max_qp,
int max_framerate,
bool is_screenshare = false);
// Gets the simulcast config layers for a non-screensharing case.
std::vector<webrtc::VideoStream> GetNormalSimulcastLayers(
size_t max_layers,
int width,
int height,
int max_bitrate_bps,
double bitrate_priority,
int max_qp,
int max_framerate);
// Get simulcast config layers for screenshare settings.
std::vector<webrtc::VideoStream> GetScreenshareLayers(
size_t max_layers,
int width,
int height,
int max_bitrate_bps,
double bitrate_priority,
int max_qp,
int max_framerate,
bool screenshare_simulcast_enabled);
bool ScreenshareSimulcastFieldTrialEnabled();
} // namespace cricket
#endif // MEDIA_ENGINE_SIMULCAST_H_