mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-13 13:50:40 +01:00

Instead of passing it as optional parameter during construction, pass field trials as required parameters on use. Test that create the EncoderStreamFactory might not have an easy access to the actual field trials, but prod code has appropriate field trials when uses the factory. This way EncoderStreamFactory doesn't need to depend on global field trial string through FieldTrialBaseConfig class. Bug: webrtc:10335 Change-Id: I8f7030e41579ff2c5dd362c491a4e1624b23e690 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/347700 Reviewed-by: Erik Språng <sprang@webrtc.org> Commit-Queue: Danil Chapovalov <danilchap@webrtc.org> Cr-Commit-Position: refs/heads/main@{#42098}
66 lines
2.1 KiB
C++
66 lines
2.1 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(
|
|
const FieldTrialsView& field_trials,
|
|
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_
|