Make use_single_core option configurable in VideoProcessorIntegrationTests.
plot_webrtc_test_logs.py: Add number of used cores to figure title. BUG=webrtc:6634 Review-Url: https://codereview.webrtc.org/2706753005 Cr-Commit-Position: refs/heads/master@{#16756}
This commit is contained in:
parent
087613c8df
commit
996103a19f
@ -22,6 +22,7 @@ const bool kFrameDropperOn = true;
|
|||||||
const bool kSpatialResizeOn = false;
|
const bool kSpatialResizeOn = false;
|
||||||
const VideoCodecType kVideoCodecType[] = {kVideoCodecVP8};
|
const VideoCodecType kVideoCodecType[] = {kVideoCodecVP8};
|
||||||
const bool kHwCodec = false;
|
const bool kHwCodec = false;
|
||||||
|
const bool kUseSingleCore = true;
|
||||||
|
|
||||||
// Packet loss probability [0.0, 1.0].
|
// Packet loss probability [0.0, 1.0].
|
||||||
const float kPacketLoss = 0.0f;
|
const float kPacketLoss = 0.0f;
|
||||||
@ -53,12 +54,12 @@ class PlotVideoProcessorIntegrationTest
|
|||||||
rate_profile.num_frames = kNumFramesLong;
|
rate_profile.num_frames = kNumFramesLong;
|
||||||
// Codec/network settings.
|
// Codec/network settings.
|
||||||
CodecConfigPars process_settings;
|
CodecConfigPars process_settings;
|
||||||
SetCodecParameters(&process_settings, codec_type_, kHwCodec, kPacketLoss,
|
SetCodecParameters(
|
||||||
-1, // key_frame_interval
|
&process_settings, codec_type_, kHwCodec, kUseSingleCore, kPacketLoss,
|
||||||
1, // num_temporal_layers
|
-1, // key_frame_interval
|
||||||
kErrorConcealmentOn, kDenoisingOn, kFrameDropperOn,
|
1, // num_temporal_layers
|
||||||
kSpatialResizeOn, width, height, filename,
|
kErrorConcealmentOn, kDenoisingOn, kFrameDropperOn, kSpatialResizeOn,
|
||||||
kVerboseLogging);
|
width, height, filename, kVerboseLogging);
|
||||||
// Metrics for expected quality (PSNR avg, PSNR min, SSIM avg, SSIM min).
|
// Metrics for expected quality (PSNR avg, PSNR min, SSIM avg, SSIM min).
|
||||||
QualityMetrics quality_metrics;
|
QualityMetrics quality_metrics;
|
||||||
SetQualityMetrics(&quality_metrics, 15.0, 10.0, 0.2, 0.1);
|
SetQualityMetrics(&quality_metrics, 15.0, 10.0, 0.2, 0.1);
|
||||||
|
|||||||
@ -30,7 +30,7 @@ CODEC_TYPE = ('Codec type', 'Codec')
|
|||||||
ENCODER_IMPLEMENTATION_NAME = ('Encoder implementation name', 'enc name')
|
ENCODER_IMPLEMENTATION_NAME = ('Encoder implementation name', 'enc name')
|
||||||
DECODER_IMPLEMENTATION_NAME = ('Decoder implementation name', 'dec name')
|
DECODER_IMPLEMENTATION_NAME = ('Decoder implementation name', 'dec name')
|
||||||
NUM_FRAMES = ('Total # of frames', 'num frames')
|
NUM_FRAMES = ('Total # of frames', 'num frames')
|
||||||
CORES = ('#CPU cores used', 'cores')
|
CORES = ('#CPU cores used', 'CPU cores used')
|
||||||
DENOISING = ('Denoising', 'denoising')
|
DENOISING = ('Denoising', 'denoising')
|
||||||
RESILIENCE = ('Resilience', 'resilience')
|
RESILIENCE = ('Resilience', 'resilience')
|
||||||
ERROR_CONCEALMENT = ('Error concealment', 'error concealment')
|
ERROR_CONCEALMENT = ('Error concealment', 'error concealment')
|
||||||
@ -146,7 +146,7 @@ def ParseMetrics(filename, setting1, setting2):
|
|||||||
Args:
|
Args:
|
||||||
filename: The name of the file.
|
filename: The name of the file.
|
||||||
setting1: First setting for sorting metrics (e.g. width).
|
setting1: First setting for sorting metrics (e.g. width).
|
||||||
setting2: Second setting for sorting metrics (e.g. cores).
|
setting2: Second setting for sorting metrics (e.g. CPU cores used).
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
A dictionary holding parsed metrics.
|
A dictionary holding parsed metrics.
|
||||||
@ -156,19 +156,19 @@ def ParseMetrics(filename, setting1, setting2):
|
|||||||
|
|
||||||
metrics = {
|
metrics = {
|
||||||
"width: 352": {
|
"width: 352": {
|
||||||
"cores: 1.0": {
|
"CPU cores used: 1.0": {
|
||||||
"encode time (us)": [0.718005, 0.806925, 0.909726, 0.931835, 0.953642],
|
"encode time (us)": [0.718005, 0.806925, 0.909726, 0.931835, 0.953642],
|
||||||
"PSNR (dB)": [25.546029, 29.465518, 34.723535, 36.428493, 38.686551],
|
"PSNR (dB)": [25.546029, 29.465518, 34.723535, 36.428493, 38.686551],
|
||||||
"bitrate (kbps)": [50, 100, 300, 500, 1000]
|
"bitrate (kbps)": [50, 100, 300, 500, 1000]
|
||||||
},
|
},
|
||||||
"cores: 2.0": {
|
"CPU cores used: 2.0": {
|
||||||
"encode time (us)": [0.718005, 0.806925, 0.909726, 0.931835, 0.953642],
|
"encode time (us)": [0.718005, 0.806925, 0.909726, 0.931835, 0.953642],
|
||||||
"PSNR (dB)": [25.546029, 29.465518, 34.723535, 36.428493, 38.686551],
|
"PSNR (dB)": [25.546029, 29.465518, 34.723535, 36.428493, 38.686551],
|
||||||
"bitrate (kbps)": [50, 100, 300, 500, 1000]
|
"bitrate (kbps)": [50, 100, 300, 500, 1000]
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"width: 176": {
|
"width: 176": {
|
||||||
"cores: 1.0": {
|
"CPU cores used: 1.0": {
|
||||||
"encode time (us)": [0.857897, 0.91608, 0.959173, 0.971116, 0.980961],
|
"encode time (us)": [0.857897, 0.91608, 0.959173, 0.971116, 0.980961],
|
||||||
"PSNR (dB)": [30.243646, 33.375592, 37.574387, 39.42184, 41.437897],
|
"PSNR (dB)": [30.243646, 33.375592, 37.574387, 39.42184, 41.437897],
|
||||||
"bitrate (kbps)": [50, 100, 300, 500, 1000]
|
"bitrate (kbps)": [50, 100, 300, 500, 1000]
|
||||||
@ -273,11 +273,11 @@ def Plot(y_metric, x_metric, metrics):
|
|||||||
y_metric = 'PSNR (dB)'
|
y_metric = 'PSNR (dB)'
|
||||||
x_metric = 'bitrate (kbps)'
|
x_metric = 'bitrate (kbps)'
|
||||||
metrics = {
|
metrics = {
|
||||||
"cores: 1.0": {
|
"CPU cores used: 1.0": {
|
||||||
"PSNR (dB)": [25.546029, 29.465518, 34.723535, 36.428493, 38.686551],
|
"PSNR (dB)": [25.546029, 29.465518, 34.723535, 36.428493, 38.686551],
|
||||||
"bitrate (kbps)": [50, 100, 300, 500, 1000]
|
"bitrate (kbps)": [50, 100, 300, 500, 1000]
|
||||||
},
|
},
|
||||||
"cores: 2.0": {
|
"CPU cores used: 2.0": {
|
||||||
"PSNR (dB)": [25.546029, 29.465518, 34.723535, 36.428493, 38.686551],
|
"PSNR (dB)": [25.546029, 29.465518, 34.723535, 36.428493, 38.686551],
|
||||||
"bitrate (kbps)": [50, 100, 300, 500, 1000]
|
"bitrate (kbps)": [50, 100, 300, 500, 1000]
|
||||||
},
|
},
|
||||||
@ -339,6 +339,10 @@ def GetTitle(filename):
|
|||||||
for i in range(0, len(codec_types)):
|
for i in range(0, len(codec_types)):
|
||||||
title += codec_types[i] + ', '
|
title += codec_types[i] + ', '
|
||||||
|
|
||||||
|
cores = ParseSetting(filename, CORES[1])
|
||||||
|
for i in range(0, len(cores)):
|
||||||
|
title += cores[i].split('.')[0] + ', '
|
||||||
|
|
||||||
framerate = ParseSetting(filename, FRAMERATE[1])
|
framerate = ParseSetting(filename, FRAMERATE[1])
|
||||||
for i in range(0, len(framerate)):
|
for i in range(0, len(framerate)):
|
||||||
title += framerate[i].split('.')[0] + ', '
|
title += framerate[i].split('.')[0] + ', '
|
||||||
|
|||||||
@ -124,10 +124,8 @@ bool VideoProcessorImpl::Init() {
|
|||||||
<< "Failed to register decode complete callback";
|
<< "Failed to register decode complete callback";
|
||||||
|
|
||||||
// Init the encoder and decoder.
|
// Init the encoder and decoder.
|
||||||
uint32_t num_cores = 1;
|
uint32_t num_cores =
|
||||||
if (!config_.use_single_core) {
|
config_.use_single_core ? 1 : CpuInfo::DetectNumberOfCores();
|
||||||
num_cores = CpuInfo::DetectNumberOfCores();
|
|
||||||
}
|
|
||||||
RTC_CHECK_EQ(
|
RTC_CHECK_EQ(
|
||||||
encoder_->InitEncode(config_.codec_settings, num_cores,
|
encoder_->InitEncode(config_.codec_settings, num_cores,
|
||||||
config_.networking_config.max_payload_size_in_bytes),
|
config_.networking_config.max_payload_size_in_bytes),
|
||||||
|
|||||||
@ -18,6 +18,9 @@ namespace {
|
|||||||
// In these correctness tests, we only consider SW codecs.
|
// In these correctness tests, we only consider SW codecs.
|
||||||
const bool kHwCodec = false;
|
const bool kHwCodec = false;
|
||||||
|
|
||||||
|
// Only allow encoder/decoder to use single core, for predictability.
|
||||||
|
const bool kUseSingleCore = true;
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
#if defined(WEBRTC_VIDEOPROCESSOR_H264_TESTS)
|
#if defined(WEBRTC_VIDEOPROCESSOR_H264_TESTS)
|
||||||
@ -35,8 +38,8 @@ TEST_F(VideoProcessorIntegrationTest, Process0PercentPacketLossH264) {
|
|||||||
rate_profile.num_frames = kNumFramesShort;
|
rate_profile.num_frames = kNumFramesShort;
|
||||||
// Codec/network settings.
|
// Codec/network settings.
|
||||||
CodecConfigPars process_settings;
|
CodecConfigPars process_settings;
|
||||||
SetCodecParameters(&process_settings, kVideoCodecH264, kHwCodec, 0.0f, -1, 1,
|
SetCodecParameters(&process_settings, kVideoCodecH264, kHwCodec,
|
||||||
false, false, true, false);
|
kUseSingleCore, 0.0f, -1, 1, false, false, true, false);
|
||||||
// Metrics for expected quality.
|
// Metrics for expected quality.
|
||||||
QualityMetrics quality_metrics;
|
QualityMetrics quality_metrics;
|
||||||
SetQualityMetrics(&quality_metrics, 35.0, 25.0, 0.93, 0.70);
|
SetQualityMetrics(&quality_metrics, 35.0, 25.0, 0.93, 0.70);
|
||||||
@ -66,8 +69,8 @@ TEST_F(VideoProcessorIntegrationTest, Process0PercentPacketLossVP9) {
|
|||||||
rate_profile.num_frames = kNumFramesShort;
|
rate_profile.num_frames = kNumFramesShort;
|
||||||
// Codec/network settings.
|
// Codec/network settings.
|
||||||
CodecConfigPars process_settings;
|
CodecConfigPars process_settings;
|
||||||
SetCodecParameters(&process_settings, kVideoCodecVP9, kHwCodec, 0.0f, -1, 1,
|
SetCodecParameters(&process_settings, kVideoCodecVP9, kHwCodec,
|
||||||
false, false, true, false);
|
kUseSingleCore, 0.0f, -1, 1, false, false, true, false);
|
||||||
// Metrics for expected quality.
|
// Metrics for expected quality.
|
||||||
QualityMetrics quality_metrics;
|
QualityMetrics quality_metrics;
|
||||||
SetQualityMetrics(&quality_metrics, 37.0, 36.0, 0.93, 0.92);
|
SetQualityMetrics(&quality_metrics, 37.0, 36.0, 0.93, 0.92);
|
||||||
@ -88,8 +91,8 @@ TEST_F(VideoProcessorIntegrationTest, Process5PercentPacketLossVP9) {
|
|||||||
rate_profile.num_frames = kNumFramesShort;
|
rate_profile.num_frames = kNumFramesShort;
|
||||||
// Codec/network settings.
|
// Codec/network settings.
|
||||||
CodecConfigPars process_settings;
|
CodecConfigPars process_settings;
|
||||||
SetCodecParameters(&process_settings, kVideoCodecVP9, kHwCodec, 0.05f, -1, 1,
|
SetCodecParameters(&process_settings, kVideoCodecVP9, kHwCodec,
|
||||||
false, false, true, false);
|
kUseSingleCore, 0.05f, -1, 1, false, false, true, false);
|
||||||
// Metrics for expected quality.
|
// Metrics for expected quality.
|
||||||
QualityMetrics quality_metrics;
|
QualityMetrics quality_metrics;
|
||||||
SetQualityMetrics(&quality_metrics, 17.0, 14.0, 0.45, 0.36);
|
SetQualityMetrics(&quality_metrics, 17.0, 14.0, 0.45, 0.36);
|
||||||
@ -114,8 +117,8 @@ TEST_F(VideoProcessorIntegrationTest, ProcessNoLossChangeBitRateVP9) {
|
|||||||
rate_profile.num_frames = kNumFramesLong;
|
rate_profile.num_frames = kNumFramesLong;
|
||||||
// Codec/network settings.
|
// Codec/network settings.
|
||||||
CodecConfigPars process_settings;
|
CodecConfigPars process_settings;
|
||||||
SetCodecParameters(&process_settings, kVideoCodecVP9, kHwCodec, 0.0f, -1, 1,
|
SetCodecParameters(&process_settings, kVideoCodecVP9, kHwCodec,
|
||||||
false, false, true, false);
|
kUseSingleCore, 0.0f, -1, 1, false, false, true, false);
|
||||||
// Metrics for expected quality.
|
// Metrics for expected quality.
|
||||||
QualityMetrics quality_metrics;
|
QualityMetrics quality_metrics;
|
||||||
SetQualityMetrics(&quality_metrics, 35.5, 30.0, 0.90, 0.85);
|
SetQualityMetrics(&quality_metrics, 35.5, 30.0, 0.90, 0.85);
|
||||||
@ -147,8 +150,8 @@ TEST_F(VideoProcessorIntegrationTest,
|
|||||||
rate_profile.num_frames = kNumFramesLong;
|
rate_profile.num_frames = kNumFramesLong;
|
||||||
// Codec/network settings.
|
// Codec/network settings.
|
||||||
CodecConfigPars process_settings;
|
CodecConfigPars process_settings;
|
||||||
SetCodecParameters(&process_settings, kVideoCodecVP9, kHwCodec, 0.0f, -1, 1,
|
SetCodecParameters(&process_settings, kVideoCodecVP9, kHwCodec,
|
||||||
false, false, true, false);
|
kUseSingleCore, 0.0f, -1, 1, false, false, true, false);
|
||||||
// Metrics for expected quality.
|
// Metrics for expected quality.
|
||||||
QualityMetrics quality_metrics;
|
QualityMetrics quality_metrics;
|
||||||
SetQualityMetrics(&quality_metrics, 31.5, 18.0, 0.80, 0.43);
|
SetQualityMetrics(&quality_metrics, 31.5, 18.0, 0.80, 0.43);
|
||||||
@ -170,8 +173,8 @@ TEST_F(VideoProcessorIntegrationTest, ProcessNoLossDenoiserOnVP9) {
|
|||||||
rate_profile.num_frames = kNumFramesShort;
|
rate_profile.num_frames = kNumFramesShort;
|
||||||
// Codec/network settings.
|
// Codec/network settings.
|
||||||
CodecConfigPars process_settings;
|
CodecConfigPars process_settings;
|
||||||
SetCodecParameters(&process_settings, kVideoCodecVP9, kHwCodec, 0.0f, -1, 1,
|
SetCodecParameters(&process_settings, kVideoCodecVP9, kHwCodec,
|
||||||
false, true, true, false);
|
kUseSingleCore, 0.0f, -1, 1, false, true, true, false);
|
||||||
// Metrics for expected quality.
|
// Metrics for expected quality.
|
||||||
QualityMetrics quality_metrics;
|
QualityMetrics quality_metrics;
|
||||||
SetQualityMetrics(&quality_metrics, 36.8, 35.8, 0.92, 0.91);
|
SetQualityMetrics(&quality_metrics, 36.8, 35.8, 0.92, 0.91);
|
||||||
@ -195,8 +198,8 @@ TEST_F(VideoProcessorIntegrationTest,
|
|||||||
rate_profile.num_frames = kNumFramesLong;
|
rate_profile.num_frames = kNumFramesLong;
|
||||||
// Codec/network settings.
|
// Codec/network settings.
|
||||||
CodecConfigPars process_settings;
|
CodecConfigPars process_settings;
|
||||||
SetCodecParameters(&process_settings, kVideoCodecVP9, kHwCodec, 0.0f, -1, 1,
|
SetCodecParameters(&process_settings, kVideoCodecVP9, kHwCodec,
|
||||||
false, false, true, true);
|
kUseSingleCore, 0.0f, -1, 1, false, false, true, true);
|
||||||
// Metrics for expected quality.
|
// Metrics for expected quality.
|
||||||
QualityMetrics quality_metrics;
|
QualityMetrics quality_metrics;
|
||||||
SetQualityMetrics(&quality_metrics, 24.0, 13.0, 0.65, 0.37);
|
SetQualityMetrics(&quality_metrics, 24.0, 13.0, 0.65, 0.37);
|
||||||
@ -223,8 +226,8 @@ TEST_F(VideoProcessorIntegrationTest, ProcessZeroPacketLoss) {
|
|||||||
rate_profile.num_frames = kNumFramesShort;
|
rate_profile.num_frames = kNumFramesShort;
|
||||||
// Codec/network settings.
|
// Codec/network settings.
|
||||||
CodecConfigPars process_settings;
|
CodecConfigPars process_settings;
|
||||||
SetCodecParameters(&process_settings, kVideoCodecVP8, kHwCodec, 0.0f, -1, 1,
|
SetCodecParameters(&process_settings, kVideoCodecVP8, kHwCodec,
|
||||||
false, true, true, false);
|
kUseSingleCore, 0.0f, -1, 1, false, true, true, false);
|
||||||
// Metrics for expected quality.
|
// Metrics for expected quality.
|
||||||
QualityMetrics quality_metrics;
|
QualityMetrics quality_metrics;
|
||||||
SetQualityMetrics(&quality_metrics, 34.95, 33.0, 0.90, 0.89);
|
SetQualityMetrics(&quality_metrics, 34.95, 33.0, 0.90, 0.89);
|
||||||
@ -245,8 +248,8 @@ TEST_F(VideoProcessorIntegrationTest, Process5PercentPacketLoss) {
|
|||||||
rate_profile.num_frames = kNumFramesShort;
|
rate_profile.num_frames = kNumFramesShort;
|
||||||
// Codec/network settings.
|
// Codec/network settings.
|
||||||
CodecConfigPars process_settings;
|
CodecConfigPars process_settings;
|
||||||
SetCodecParameters(&process_settings, kVideoCodecVP8, kHwCodec, 0.05f, -1, 1,
|
SetCodecParameters(&process_settings, kVideoCodecVP8, kHwCodec,
|
||||||
false, true, true, false);
|
kUseSingleCore, 0.05f, -1, 1, false, true, true, false);
|
||||||
// Metrics for expected quality.
|
// Metrics for expected quality.
|
||||||
QualityMetrics quality_metrics;
|
QualityMetrics quality_metrics;
|
||||||
SetQualityMetrics(&quality_metrics, 20.0, 16.0, 0.60, 0.40);
|
SetQualityMetrics(&quality_metrics, 20.0, 16.0, 0.60, 0.40);
|
||||||
@ -267,8 +270,8 @@ TEST_F(VideoProcessorIntegrationTest, Process10PercentPacketLoss) {
|
|||||||
rate_profile.num_frames = kNumFramesShort;
|
rate_profile.num_frames = kNumFramesShort;
|
||||||
// Codec/network settings.
|
// Codec/network settings.
|
||||||
CodecConfigPars process_settings;
|
CodecConfigPars process_settings;
|
||||||
SetCodecParameters(&process_settings, kVideoCodecVP8, kHwCodec, 0.1f, -1, 1,
|
SetCodecParameters(&process_settings, kVideoCodecVP8, kHwCodec,
|
||||||
false, true, true, false);
|
kUseSingleCore, 0.1f, -1, 1, false, true, true, false);
|
||||||
// Metrics for expected quality.
|
// Metrics for expected quality.
|
||||||
QualityMetrics quality_metrics;
|
QualityMetrics quality_metrics;
|
||||||
SetQualityMetrics(&quality_metrics, 19.0, 16.0, 0.50, 0.35);
|
SetQualityMetrics(&quality_metrics, 19.0, 16.0, 0.50, 0.35);
|
||||||
@ -311,8 +314,8 @@ TEST_F(VideoProcessorIntegrationTest, MAYBE_ProcessNoLossChangeBitRateVP8) {
|
|||||||
rate_profile.num_frames = kNumFramesLong;
|
rate_profile.num_frames = kNumFramesLong;
|
||||||
// Codec/network settings.
|
// Codec/network settings.
|
||||||
CodecConfigPars process_settings;
|
CodecConfigPars process_settings;
|
||||||
SetCodecParameters(&process_settings, kVideoCodecVP8, kHwCodec, 0.0f, -1, 1,
|
SetCodecParameters(&process_settings, kVideoCodecVP8, kHwCodec,
|
||||||
false, true, true, false);
|
kUseSingleCore, 0.0f, -1, 1, false, true, true, false);
|
||||||
// Metrics for expected quality.
|
// Metrics for expected quality.
|
||||||
QualityMetrics quality_metrics;
|
QualityMetrics quality_metrics;
|
||||||
SetQualityMetrics(&quality_metrics, 34.0, 32.0, 0.85, 0.80);
|
SetQualityMetrics(&quality_metrics, 34.0, 32.0, 0.85, 0.80);
|
||||||
@ -352,8 +355,8 @@ TEST_F(VideoProcessorIntegrationTest,
|
|||||||
rate_profile.num_frames = kNumFramesLong;
|
rate_profile.num_frames = kNumFramesLong;
|
||||||
// Codec/network settings.
|
// Codec/network settings.
|
||||||
CodecConfigPars process_settings;
|
CodecConfigPars process_settings;
|
||||||
SetCodecParameters(&process_settings, kVideoCodecVP8, kHwCodec, 0.0f, -1, 1,
|
SetCodecParameters(&process_settings, kVideoCodecVP8, kHwCodec,
|
||||||
false, true, true, false);
|
kUseSingleCore, 0.0f, -1, 1, false, true, true, false);
|
||||||
// Metrics for expected quality.
|
// Metrics for expected quality.
|
||||||
QualityMetrics quality_metrics;
|
QualityMetrics quality_metrics;
|
||||||
SetQualityMetrics(&quality_metrics, 31.0, 22.0, 0.80, 0.65);
|
SetQualityMetrics(&quality_metrics, 31.0, 22.0, 0.80, 0.65);
|
||||||
@ -388,8 +391,8 @@ TEST_F(VideoProcessorIntegrationTest, MAYBE_ProcessNoLossTemporalLayersVP8) {
|
|||||||
rate_profile.num_frames = kNumFramesLong;
|
rate_profile.num_frames = kNumFramesLong;
|
||||||
// Codec/network settings.
|
// Codec/network settings.
|
||||||
CodecConfigPars process_settings;
|
CodecConfigPars process_settings;
|
||||||
SetCodecParameters(&process_settings, kVideoCodecVP8, kHwCodec, 0.0f, -1, 3,
|
SetCodecParameters(&process_settings, kVideoCodecVP8, kHwCodec,
|
||||||
false, true, true, false);
|
kUseSingleCore, 0.0f, -1, 3, false, true, true, false);
|
||||||
// Metrics for expected quality.
|
// Metrics for expected quality.
|
||||||
QualityMetrics quality_metrics;
|
QualityMetrics quality_metrics;
|
||||||
SetQualityMetrics(&quality_metrics, 32.5, 30.0, 0.85, 0.80);
|
SetQualityMetrics(&quality_metrics, 32.5, 30.0, 0.85, 0.80);
|
||||||
|
|||||||
@ -63,6 +63,7 @@ const char kFilenameForemanCif[] = "foreman_cif";
|
|||||||
struct CodecConfigPars {
|
struct CodecConfigPars {
|
||||||
VideoCodecType codec_type;
|
VideoCodecType codec_type;
|
||||||
bool hw_codec;
|
bool hw_codec;
|
||||||
|
bool use_single_core;
|
||||||
float packet_loss;
|
float packet_loss;
|
||||||
int num_temporal_layers;
|
int num_temporal_layers;
|
||||||
int key_frame_interval;
|
int key_frame_interval;
|
||||||
@ -142,10 +143,7 @@ class VideoProcessorIntegrationTest : public testing::Test {
|
|||||||
}
|
}
|
||||||
virtual ~VideoProcessorIntegrationTest() = default;
|
virtual ~VideoProcessorIntegrationTest() = default;
|
||||||
|
|
||||||
void SetUpCodecConfig(const std::string& filename,
|
void SetUpCodecConfig(const CodecConfigPars& process) {
|
||||||
int width,
|
|
||||||
int height,
|
|
||||||
bool verbose_logging) {
|
|
||||||
if (hw_codec_) {
|
if (hw_codec_) {
|
||||||
#if defined(WEBRTC_VIDEOPROCESSOR_INTEGRATIONTEST_HW_CODECS_ENABLED)
|
#if defined(WEBRTC_VIDEOPROCESSOR_INTEGRATIONTEST_HW_CODECS_ENABLED)
|
||||||
#if defined(WEBRTC_ANDROID)
|
#if defined(WEBRTC_ANDROID)
|
||||||
@ -199,16 +197,16 @@ class VideoProcessorIntegrationTest : public testing::Test {
|
|||||||
VideoCodingModule::Codec(codec_type_, &codec_settings_);
|
VideoCodingModule::Codec(codec_type_, &codec_settings_);
|
||||||
|
|
||||||
// Configure input filename.
|
// Configure input filename.
|
||||||
config_.input_filename = test::ResourcePath(filename, "yuv");
|
config_.input_filename = test::ResourcePath(process.filename, "yuv");
|
||||||
if (verbose_logging)
|
if (process.verbose_logging)
|
||||||
printf("Filename: %s\n", filename.c_str());
|
printf("Filename: %s\n", process.filename.c_str());
|
||||||
// Generate an output filename in a safe way.
|
// Generate an output filename in a safe way.
|
||||||
config_.output_filename = test::TempFilename(
|
config_.output_filename = test::TempFilename(
|
||||||
test::OutputPath(), "videoprocessor_integrationtest");
|
test::OutputPath(), "videoprocessor_integrationtest");
|
||||||
config_.frame_length_in_bytes = CalcBufferSize(kI420, width, height);
|
config_.frame_length_in_bytes =
|
||||||
config_.verbose = verbose_logging;
|
CalcBufferSize(kI420, process.width, process.height);
|
||||||
// Only allow encoder/decoder to use single core, for predictability.
|
config_.verbose = process.verbose_logging;
|
||||||
config_.use_single_core = true;
|
config_.use_single_core = process.use_single_core;
|
||||||
// Key frame interval and packet loss are set for each test.
|
// Key frame interval and packet loss are set for each test.
|
||||||
config_.keyframe_interval = key_frame_interval_;
|
config_.keyframe_interval = key_frame_interval_;
|
||||||
config_.networking_config.packet_loss_probability = packet_loss_;
|
config_.networking_config.packet_loss_probability = packet_loss_;
|
||||||
@ -216,8 +214,8 @@ class VideoProcessorIntegrationTest : public testing::Test {
|
|||||||
// Configure codec settings.
|
// Configure codec settings.
|
||||||
config_.codec_settings = &codec_settings_;
|
config_.codec_settings = &codec_settings_;
|
||||||
config_.codec_settings->startBitrate = start_bitrate_;
|
config_.codec_settings->startBitrate = start_bitrate_;
|
||||||
config_.codec_settings->width = width;
|
config_.codec_settings->width = process.width;
|
||||||
config_.codec_settings->height = height;
|
config_.codec_settings->height = process.height;
|
||||||
|
|
||||||
// These features may be set depending on the test.
|
// These features may be set depending on the test.
|
||||||
switch (config_.codec_settings->codecType) {
|
switch (config_.codec_settings->codecType) {
|
||||||
@ -458,8 +456,7 @@ class VideoProcessorIntegrationTest : public testing::Test {
|
|||||||
denoising_on_ = process.denoising_on;
|
denoising_on_ = process.denoising_on;
|
||||||
frame_dropper_on_ = process.frame_dropper_on;
|
frame_dropper_on_ = process.frame_dropper_on;
|
||||||
spatial_resize_on_ = process.spatial_resize_on;
|
spatial_resize_on_ = process.spatial_resize_on;
|
||||||
SetUpCodecConfig(process.filename, process.width, process.height,
|
SetUpCodecConfig(process);
|
||||||
process.verbose_logging);
|
|
||||||
// Update the layers and the codec with the initial rates.
|
// Update the layers and the codec with the initial rates.
|
||||||
bit_rate_ = rate_profile.target_bit_rate[0];
|
bit_rate_ = rate_profile.target_bit_rate[0];
|
||||||
frame_rate_ = rate_profile.input_frame_rate[0];
|
frame_rate_ = rate_profile.input_frame_rate[0];
|
||||||
@ -563,6 +560,7 @@ class VideoProcessorIntegrationTest : public testing::Test {
|
|||||||
static void SetCodecParameters(CodecConfigPars* process_settings,
|
static void SetCodecParameters(CodecConfigPars* process_settings,
|
||||||
VideoCodecType codec_type,
|
VideoCodecType codec_type,
|
||||||
bool hw_codec,
|
bool hw_codec,
|
||||||
|
bool use_single_core,
|
||||||
float packet_loss,
|
float packet_loss,
|
||||||
int key_frame_interval,
|
int key_frame_interval,
|
||||||
int num_temporal_layers,
|
int num_temporal_layers,
|
||||||
@ -576,6 +574,7 @@ class VideoProcessorIntegrationTest : public testing::Test {
|
|||||||
bool verbose_logging) {
|
bool verbose_logging) {
|
||||||
process_settings->codec_type = codec_type;
|
process_settings->codec_type = codec_type;
|
||||||
process_settings->hw_codec = hw_codec;
|
process_settings->hw_codec = hw_codec;
|
||||||
|
process_settings->use_single_core = use_single_core;
|
||||||
process_settings->packet_loss = packet_loss;
|
process_settings->packet_loss = packet_loss;
|
||||||
process_settings->key_frame_interval = key_frame_interval;
|
process_settings->key_frame_interval = key_frame_interval;
|
||||||
process_settings->num_temporal_layers = num_temporal_layers,
|
process_settings->num_temporal_layers = num_temporal_layers,
|
||||||
@ -592,6 +591,7 @@ class VideoProcessorIntegrationTest : public testing::Test {
|
|||||||
static void SetCodecParameters(CodecConfigPars* process_settings,
|
static void SetCodecParameters(CodecConfigPars* process_settings,
|
||||||
VideoCodecType codec_type,
|
VideoCodecType codec_type,
|
||||||
bool hw_codec,
|
bool hw_codec,
|
||||||
|
bool use_single_core,
|
||||||
float packet_loss,
|
float packet_loss,
|
||||||
int key_frame_interval,
|
int key_frame_interval,
|
||||||
int num_temporal_layers,
|
int num_temporal_layers,
|
||||||
@ -599,8 +599,8 @@ class VideoProcessorIntegrationTest : public testing::Test {
|
|||||||
bool denoising_on,
|
bool denoising_on,
|
||||||
bool frame_dropper_on,
|
bool frame_dropper_on,
|
||||||
bool spatial_resize_on) {
|
bool spatial_resize_on) {
|
||||||
SetCodecParameters(process_settings, codec_type, hw_codec, packet_loss,
|
SetCodecParameters(process_settings, codec_type, hw_codec, use_single_core,
|
||||||
key_frame_interval, num_temporal_layers,
|
packet_loss, key_frame_interval, num_temporal_layers,
|
||||||
error_concealment_on, denoising_on, frame_dropper_on,
|
error_concealment_on, denoising_on, frame_dropper_on,
|
||||||
spatial_resize_on, kCifWidth, kCifHeight,
|
spatial_resize_on, kCifWidth, kCifHeight,
|
||||||
kFilenameForemanCif, false /* verbose_logging */);
|
kFilenameForemanCif, false /* verbose_logging */);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user