webrtc/test/encoder_settings.h
Jonas Oreland 80c87d7151 RtpEncodingParameters::request_resolution patch 2
This cl/ implements configuring of encode resolution
in the video_stream_encoder (webrtc_video_engine) in
a way that is independent of frame resolution (i.e
not using scale_resolution_down_by).

The cl/ reuses the VideoAdapter as is, and hence
the output resolution will be the same as it is today.

Anticipated further patches
3) Hook up resource adaptation
4) Let VideoSource do adaption if possible

Bug: webrtc:14451
Change-Id: I881b031c5b23be26cacfe138730154f1cb1b66a8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/276742
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38245}
2022-09-29 14:10:44 +00:00

65 lines
2 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 TEST_ENCODER_SETTINGS_H_
#define TEST_ENCODER_SETTINGS_H_
#include <stddef.h>
#include <string>
#include <vector>
#include "call/video_receive_stream.h"
#include "call/video_send_stream.h"
#include "video/config/video_encoder_config.h"
namespace webrtc {
namespace test {
class DefaultVideoStreamFactory
: public VideoEncoderConfig::VideoStreamFactoryInterface {
public:
DefaultVideoStreamFactory();
static const size_t kMaxNumberOfStreams = 3;
// Defined as {150000, 450000, 1500000};
static const int kMaxBitratePerStream[];
// Defined as {50000, 200000, 700000};
static const int kDefaultMinBitratePerStream[];
private:
std::vector<VideoStream> CreateEncoderStreams(
int frame_width,
int frame_height,
const webrtc::VideoEncoderConfig& encoder_config) override;
};
// Creates `encoder_config.number_of_streams` VideoStreams where index
// `encoder_config.number_of_streams -1` have width = `width`, height =
// `height`. The total max bitrate of all VideoStreams is
// `encoder_config.max_bitrate_bps`.
std::vector<VideoStream> CreateVideoStreams(
int width,
int height,
const webrtc::VideoEncoderConfig& encoder_config);
void FillEncoderConfiguration(VideoCodecType codec_type,
size_t num_streams,
VideoEncoderConfig* configuration);
VideoReceiveStreamInterface::Decoder CreateMatchingDecoder(
int payload_type,
const std::string& payload_name);
VideoReceiveStreamInterface::Decoder CreateMatchingDecoder(
const VideoSendStream::Config& config);
} // namespace test
} // namespace webrtc
#endif // TEST_ENCODER_SETTINGS_H_