mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-16 07:10:38 +01:00

Move functions Set/PrintCodecSettings, NumberOfTemporalLayers to TestConfig. Add function NumberOfCores. Bug: none Change-Id: Ic33d79681d59d62bf34d9c9ff056a751ed3f8da8 Reviewed-on: https://webrtc-review.googlesource.com/13120 Commit-Queue: Åsa Persson <asapersson@webrtc.org> Reviewed-by: Rasmus Brandt <brandtr@webrtc.org> Cr-Commit-Position: refs/heads/master@{#20358}
140 lines
5.9 KiB
C++
140 lines
5.9 KiB
C++
/*
|
|
* Copyright (c) 2017 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.
|
|
*/
|
|
|
|
#include "modules/video_coding/codecs/test/test_config.h"
|
|
|
|
#include <string.h>
|
|
|
|
#include "modules/video_coding/include/video_codec_interface.h"
|
|
#include "rtc_base/checks.h"
|
|
#include "system_wrappers/include/cpu_info.h"
|
|
#include "test/video_codec_settings.h"
|
|
|
|
namespace webrtc {
|
|
namespace test {
|
|
|
|
namespace {
|
|
const int kBaseKeyFrameInterval = 3000;
|
|
} // namespace
|
|
|
|
void TestConfig::SetCodecSettings(VideoCodecType codec_type,
|
|
int num_temporal_layers,
|
|
bool error_concealment_on,
|
|
bool denoising_on,
|
|
bool frame_dropper_on,
|
|
bool spatial_resize_on,
|
|
bool resilience_on,
|
|
int width,
|
|
int height) {
|
|
webrtc::test::CodecSettings(codec_type, &codec_settings);
|
|
|
|
// TODO(brandtr): Move the setting of |width| and |height| to the tests, and
|
|
// DCHECK that they are set before initializing the codec instead.
|
|
codec_settings.width = width;
|
|
codec_settings.height = height;
|
|
|
|
switch (codec_settings.codecType) {
|
|
case kVideoCodecVP8:
|
|
codec_settings.VP8()->resilience =
|
|
resilience_on ? kResilientStream : kResilienceOff;
|
|
codec_settings.VP8()->numberOfTemporalLayers = num_temporal_layers;
|
|
codec_settings.VP8()->denoisingOn = denoising_on;
|
|
codec_settings.VP8()->errorConcealmentOn = error_concealment_on;
|
|
codec_settings.VP8()->automaticResizeOn = spatial_resize_on;
|
|
codec_settings.VP8()->frameDroppingOn = frame_dropper_on;
|
|
codec_settings.VP8()->keyFrameInterval = kBaseKeyFrameInterval;
|
|
break;
|
|
case kVideoCodecVP9:
|
|
codec_settings.VP9()->resilienceOn = resilience_on;
|
|
codec_settings.VP9()->numberOfTemporalLayers = num_temporal_layers;
|
|
codec_settings.VP9()->denoisingOn = denoising_on;
|
|
codec_settings.VP9()->frameDroppingOn = frame_dropper_on;
|
|
codec_settings.VP9()->keyFrameInterval = kBaseKeyFrameInterval;
|
|
codec_settings.VP9()->automaticResizeOn = spatial_resize_on;
|
|
break;
|
|
case kVideoCodecH264:
|
|
codec_settings.H264()->frameDroppingOn = frame_dropper_on;
|
|
codec_settings.H264()->keyFrameInterval = kBaseKeyFrameInterval;
|
|
break;
|
|
default:
|
|
RTC_NOTREACHED();
|
|
break;
|
|
}
|
|
}
|
|
|
|
int TestConfig::NumberOfCores() const {
|
|
return use_single_core ? 1 : CpuInfo::DetectNumberOfCores();
|
|
}
|
|
|
|
int TestConfig::NumberOfTemporalLayers() const {
|
|
if (codec_settings.codecType == kVideoCodecVP8) {
|
|
return codec_settings.VP8().numberOfTemporalLayers;
|
|
} else if (codec_settings.codecType == kVideoCodecVP9) {
|
|
return codec_settings.VP9().numberOfTemporalLayers;
|
|
} else {
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
void TestConfig::Print() const {
|
|
printf("Video config:\n");
|
|
printf(" Filename : %s\n", filename.c_str());
|
|
printf(" # CPU cores used : %u\n", NumberOfCores());
|
|
PrintCodecSettings();
|
|
printf("\n");
|
|
}
|
|
|
|
void TestConfig::PrintCodecSettings() const {
|
|
printf(" Codec settings:\n");
|
|
printf(" Codec type : %s\n",
|
|
CodecTypeToPayloadString(codec_settings.codecType));
|
|
printf(" Start bitrate : %d kbps\n", codec_settings.startBitrate);
|
|
printf(" Max bitrate : %d kbps\n", codec_settings.maxBitrate);
|
|
printf(" Min bitrate : %d kbps\n", codec_settings.minBitrate);
|
|
printf(" Width : %d\n", codec_settings.width);
|
|
printf(" Height : %d\n", codec_settings.height);
|
|
printf(" Max frame rate : %d\n", codec_settings.maxFramerate);
|
|
printf(" QPmax : %d\n", codec_settings.qpMax);
|
|
if (codec_settings.codecType == kVideoCodecVP8) {
|
|
printf(" Complexity : %d\n", codec_settings.VP8().complexity);
|
|
printf(" Resilience : %d\n", codec_settings.VP8().resilience);
|
|
printf(" # temporal layers : %d\n",
|
|
codec_settings.VP8().numberOfTemporalLayers);
|
|
printf(" Denoising : %d\n", codec_settings.VP8().denoisingOn);
|
|
printf(" Error concealment : %d\n",
|
|
codec_settings.VP8().errorConcealmentOn);
|
|
printf(" Automatic resize : %d\n",
|
|
codec_settings.VP8().automaticResizeOn);
|
|
printf(" Frame dropping : %d\n", codec_settings.VP8().frameDroppingOn);
|
|
printf(" Key frame interval: %d\n", codec_settings.VP8().keyFrameInterval);
|
|
} else if (codec_settings.codecType == kVideoCodecVP9) {
|
|
printf(" Complexity : %d\n", codec_settings.VP9().complexity);
|
|
printf(" Resilience : %d\n", codec_settings.VP9().resilienceOn);
|
|
printf(" # temporal layers : %d\n",
|
|
codec_settings.VP9().numberOfTemporalLayers);
|
|
printf(" Denoising : %d\n", codec_settings.VP9().denoisingOn);
|
|
printf(" Frame dropping : %d\n", codec_settings.VP9().frameDroppingOn);
|
|
printf(" Key frame interval: %d\n", codec_settings.VP9().keyFrameInterval);
|
|
printf(" Adaptive QP mode : %d\n", codec_settings.VP9().adaptiveQpMode);
|
|
printf(" Automatic resize : %d\n",
|
|
codec_settings.VP9().automaticResizeOn);
|
|
printf(" # spatial layers : %d\n",
|
|
codec_settings.VP9().numberOfSpatialLayers);
|
|
printf(" Flexible mode : %d\n", codec_settings.VP9().flexibleMode);
|
|
} else if (codec_settings.codecType == kVideoCodecH264) {
|
|
printf(" Frame dropping : %d\n", codec_settings.H264().frameDroppingOn);
|
|
printf(" Key frame interval: %d\n",
|
|
codec_settings.H264().keyFrameInterval);
|
|
printf(" Profile : %d\n", codec_settings.H264().profile);
|
|
}
|
|
}
|
|
|
|
} // namespace test
|
|
} // namespace webrtc
|