Delete video_quality_measurement.

We don't use it and we don't plan on using it.

BUG=none

Review-Url: https://codereview.webrtc.org/3005993002
Cr-Original-Commit-Position: refs/heads/master@{#19655}
Cr-Mirrored-From: https://chromium.googlesource.com/external/webrtc
Cr-Mirrored-Commit: 83e887cdcbd94b6fe54c40ea790761af9a3d3d43
diff --git a/modules/video_coding/BUILD.gn b/modules/video_coding/BUILD.gn
index 32410f6..3af09ea 100644
--- a/modules/video_coding/BUILD.gn
+++ b/modules/video_coding/BUILD.gn
@@ -325,34 +325,6 @@
     ]
   }
 
-  rtc_executable("video_quality_measurement") {
-    testonly = true
-
-    sources = [
-      "codecs/tools/video_quality_measurement.cc",
-    ]
-
-    if (!build_with_chromium && is_clang) {
-      # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
-      suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
-    }
-
-    deps = [
-      ":video_codecs_test_framework",
-      ":video_coding",
-      ":webrtc_vp8",
-      "../..:webrtc_common",
-      "../../rtc_base:rtc_base_approved",
-      "../../system_wrappers:field_trial_default",
-      "../../system_wrappers:metrics_default",
-      "../../system_wrappers:system_wrappers",
-      "../../test:test_support",
-      "../../test:video_test_common",
-      "../../test:video_test_support",
-      "../video_capture",
-    ]
-  }  # video_quality_measurement
-
   rtc_source_set("video_codecs_test_framework") {
     testonly = true
     sources = [
diff --git a/modules/video_coding/codecs/test/videoprocessor.h b/modules/video_coding/codecs/test/videoprocessor.h
index 8ce2460..e50f0d9 100644
--- a/modules/video_coding/codecs/test/videoprocessor.h
+++ b/modules/video_coding/codecs/test/videoprocessor.h
@@ -53,17 +53,6 @@
 
 // Test configuration for a test run.
 struct TestConfig {
-  // Name of the test. This is purely metadata and does not affect the test.
-  std::string name;
-
-  // More detailed description of the test. This is purely metadata and does
-  // not affect the test.
-  std::string description;
-
-  // Number of this test. Useful if multiple runs of the same test with
-  // different configurations shall be managed.
-  int test_number = 0;
-
   // Plain name of YUV file to process without file extension.
   std::string filename;
 
@@ -74,10 +63,6 @@
   // in the YUV format.
   std::string output_filename;
 
-  // Path to the directory where encoded files will be put
-  // (absolute or relative to the executable).
-  std::string output_dir = "out";
-
   // Configurations related to networking.
   NetworkingConfig networking_config;
 
@@ -85,10 +70,6 @@
   // from packet loss.
   ExcludeFrameTypes exclude_frame_types = kExcludeOnlyFirstKeyFrame;
 
-  // The length of a single frame of the input video file. Calculated out of the
-  // width and height according to the video format specification (i.e. YUV).
-  size_t frame_length_in_bytes = 0;
-
   // Force the encoder and decoder to use a single core for processing.
   // Using a single core is necessary to get a deterministic behavior for the
   // encoded frames - using multiple cores will produce different encoded frames
diff --git a/modules/video_coding/codecs/test/videoprocessor_integrationtest.cc b/modules/video_coding/codecs/test/videoprocessor_integrationtest.cc
index 21ae84c..7fd5dc2 100644
--- a/modules/video_coding/codecs/test/videoprocessor_integrationtest.cc
+++ b/modules/video_coding/codecs/test/videoprocessor_integrationtest.cc
@@ -120,9 +120,6 @@
       RTC_NOTREACHED();
       break;
   }
-
-  config->frame_length_in_bytes =
-      CalcBufferSize(VideoType::kI420, width, height);
 }
 
 void VideoProcessorIntegrationTest::SetRateProfile(
diff --git a/modules/video_coding/codecs/tools/video_quality_measurement.cc b/modules/video_coding/codecs/tools/video_quality_measurement.cc
deleted file mode 100644
index f82ba42..0000000
--- a/modules/video_coding/codecs/tools/video_quality_measurement.cc
+++ /dev/null
@@ -1,560 +0,0 @@
-/*
- *  Copyright (c) 2012 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 <assert.h>
-#include <stdio.h>
-#include <time.h>
-#include <string.h>
-
-#include <stdarg.h>
-#include <sys/stat.h>  // To check for directory existence.
-
-#ifndef S_ISDIR  // Not defined in stat.h on Windows.
-#define S_ISDIR(mode) (((mode)&S_IFMT) == S_IFDIR)
-#endif
-
-#include "webrtc/common_types.h"
-#include "webrtc/modules/video_coding/codecs/test/packet_manipulator.h"
-#include "webrtc/modules/video_coding/codecs/test/stats.h"
-#include "webrtc/modules/video_coding/codecs/test/videoprocessor.h"
-#include "webrtc/modules/video_coding/codecs/vp8/include/vp8.h"
-#include "webrtc/modules/video_coding/include/video_coding.h"
-#include "webrtc/rtc_base/flags.h"
-#include "webrtc/rtc_base/format_macros.h"
-#include "webrtc/test/testsupport/frame_reader.h"
-#include "webrtc/test/testsupport/frame_writer.h"
-#include "webrtc/test/testsupport/metrics/video_metrics.h"
-#include "webrtc/test/testsupport/packet_reader.h"
-#include "webrtc/test/video_codec_settings.h"
-
-DEFINE_string(test_name, "Quality test", "The name of the test to run. ");
-DEFINE_string(test_description,
-              "",
-              "A more detailed description about what "
-              "the current test is about.");
-DEFINE_string(input_filename,
-              "",
-              "Input file. "
-              "The source video file to be encoded and decoded. Must be in "
-              ".yuv format");
-DEFINE_int(width, -1, "Width in pixels of the frames in the input file.");
-DEFINE_int(height, -1, "Height in pixels of the frames in the input file.");
-DEFINE_int(framerate,
-           30,
-           "Frame rate of the input file, in FPS "
-           "(frames-per-second). ");
-DEFINE_string(output_dir,
-              ".",
-              "Output directory. "
-              "The directory where the output file will be put. Must already "
-              "exist.");
-DEFINE_bool(use_single_core,
-            false,
-            "Force using a single core. If set to "
-            "true, only one core will be used for processing. Using a single "
-            "core is necessary to get a deterministic behavior for the"
-            "encoded frames - using multiple cores will produce different "
-            "encoded frames since multiple cores are competing to consume the "
-            "byte budget for each frame in parallel. If set to false, "
-            "the maximum detected number of cores will be used. ");
-DEFINE_bool(disable_fixed_random_seed,
-            false,
-            "Set this flag to disable the"
-            "usage of a fixed random seed for the random generator used "
-            "for packet loss. Disabling this will cause consecutive runs "
-            "loose packets at different locations, which is bad for "
-            "reproducibility.");
-DEFINE_string(output_filename,
-              "",
-              "Output file. "
-              "The name of the output video file resulting of the processing "
-              "of the source file. By default this is the same name as the "
-              "input file with '_out' appended before the extension.");
-DEFINE_int(bitrate, 500, "Bit rate in kilobits/second.");
-DEFINE_int(keyframe_interval,
-           0,
-           "Forces a keyframe every Nth frame. "
-           "0 means the encoder decides when to insert keyframes.  Note that "
-           "the encoder may create a keyframe in other locations in addition "
-           "to the interval that is set using this parameter.");
-DEFINE_int(temporal_layers,
-           0,
-           "The number of temporal layers to use "
-           "(VP8 specific codec setting). Must be 0-4.");
-DEFINE_int(packet_size,
-           1500,
-           "Simulated network packet size in bytes (MTU). "
-           "Used for packet loss simulation.");
-DEFINE_int(max_payload_size,
-           1440,
-           "Max payload size in bytes for the "
-           "encoder.");
-DEFINE_string(packet_loss_mode,
-              "uniform",
-              "Packet loss mode. Two different "
-              "packet loss models are supported: uniform or burst. This "
-              "setting has no effect unless packet_loss_rate is >0. ");
-DEFINE_float(packet_loss_probability,
-             0.0f,
-             "Packet loss probability. A value "
-             "between 0.0 and 1.0 that defines the probability of a packet "
-             "being lost. 0.1 means 10% and so on.");
-DEFINE_int(packet_loss_burst_length,
-           1,
-           "Packet loss burst length. Defines "
-           "how many packets will be lost in a burst when a packet has been "
-           "decided to be lost. Must be >=1.");
-DEFINE_bool(csv,
-            false,
-            "CSV output. Enabling this will output all frame "
-            "statistics at the end of execution. Recommended to run combined "
-            "with --noverbose to avoid mixing output.");
-DEFINE_bool(python,
-            false,
-            "Python output. Enabling this will output all frame "
-            "statistics as a Python script at the end of execution. "
-            "Recommended to run combine with --noverbose to avoid mixing "
-            "output.");
-DEFINE_bool(verbose,
-            true,
-            "Verbose mode. Prints a lot of debugging info. "
-            "Suitable for tracking progress but not for capturing output. "
-            "Disable with --noverbose flag.");
-DEFINE_bool(help, false, "Prints this message.");
-
-// Custom log method that only prints if the verbose flag is given.
-// Supports all the standard printf parameters and formatting (just forwarded).
-int Log(const char* format, ...) {
-  int result = 0;
-  if (FLAG_verbose) {
-    va_list args;
-    va_start(args, format);
-    result = vprintf(format, args);
-    va_end(args);
-  }
-  return result;
-}
-
-// Validates the arguments given as command line flags and fills in the
-// TestConfig struct with all configurations needed for video processing.
-// Returns 0 if everything is OK, otherwise an exit code.
-int HandleCommandLineFlags(webrtc::test::TestConfig* config,
-                           const std::string& usage) {
-  // Validate the mandatory flags:
-  if (strlen(FLAG_input_filename) == 0 ||
-      FLAG_width == -1 || FLAG_height == -1) {
-    printf("%s\n", usage.c_str());
-    return 1;
-  }
-  config->name = FLAG_test_name;
-  config->description = FLAG_test_description;
-
-  // Verify the input file exists and is readable.
-  FILE* test_file;
-  test_file = fopen(FLAG_input_filename, "rb");
-  if (test_file == NULL) {
-    fprintf(stderr, "Cannot read the specified input file: %s\n",
-            FLAG_input_filename);
-    return 2;
-  }
-  fclose(test_file);
-  config->input_filename = FLAG_input_filename;
-
-  // Verify the output dir exists.
-  struct stat dir_info;
-  if (!(stat(FLAG_output_dir, &dir_info) == 0 &&
-        S_ISDIR(dir_info.st_mode))) {
-    fprintf(stderr, "Cannot find output directory: %s\n",
-            FLAG_output_dir);
-    return 3;
-  }
-  config->output_dir = FLAG_output_dir;
-
-  // Manufacture an output filename if none was given.
-  if (strlen(FLAG_output_filename) == 0) {
-    // Cut out the filename without extension from the given input file
-    // (which may include a path)
-    size_t startIndex = config->input_filename.find_last_of("/") + 1;
-    if (startIndex == 0) {
-      startIndex = 0;
-    }
-    config->output_filename =
-        config->input_filename.substr(
-            startIndex, config->input_filename.find_last_of(".") - startIndex) +
-        "_out.yuv";
-  } else {
-    config->output_filename = FLAG_output_filename;
-  }
-
-  // Verify output file can be written.
-  if (config->output_dir != ".") {
-    config->output_filename =
-        config->output_dir + "/" + config->output_filename;
-  }
-  test_file = fopen(config->output_filename.c_str(), "wb");
-  if (test_file == NULL) {
-    fprintf(stderr, "Cannot write output file: %s\n",
-            config->output_filename.c_str());
-    return 4;
-  }
-  fclose(test_file);
-
-  // Check single core flag.
-  config->use_single_core = FLAG_use_single_core;
-
-  // Get codec specific configuration.
-  webrtc::test::CodecSettings(webrtc::kVideoCodecVP8, &config->codec_settings);
-
-  // Check the temporal layers.
-  if (FLAG_temporal_layers < 0 ||
-      FLAG_temporal_layers > webrtc::kMaxTemporalStreams) {
-    fprintf(stderr, "Temporal layers number must be 0-4, was: %d\n",
-            FLAG_temporal_layers);
-    return 13;
-  }
-  config->codec_settings.VP8()->numberOfTemporalLayers = FLAG_temporal_layers;
-
-  // Check the bit rate.
-  if (FLAG_bitrate <= 0) {
-    fprintf(stderr, "Bit rate must be >0 kbps, was: %d\n", FLAG_bitrate);
-    return 5;
-  }
-  config->codec_settings.startBitrate = FLAG_bitrate;
-
-  // Check the keyframe interval.
-  if (FLAG_keyframe_interval < 0) {
-    fprintf(stderr, "Keyframe interval must be >=0, was: %d\n",
-            FLAG_keyframe_interval);
-    return 6;
-  }
-  config->keyframe_interval = FLAG_keyframe_interval;
-
-  // Check packet size and max payload size.
-  if (FLAG_packet_size <= 0) {
-    fprintf(stderr, "Packet size must be >0 bytes, was: %d\n",
-            FLAG_packet_size);
-    return 7;
-  }
-  config->networking_config.packet_size_in_bytes =
-      static_cast<size_t>(FLAG_packet_size);
-
-  if (FLAG_max_payload_size <= 0) {
-    fprintf(stderr, "Max payload size must be >0 bytes, was: %d\n",
-            FLAG_max_payload_size);
-    return 8;
-  }
-  config->networking_config.max_payload_size_in_bytes =
-      static_cast<size_t>(FLAG_max_payload_size);
-
-  // Check the width and height
-  if (FLAG_width <= 0 || FLAG_height <= 0) {
-    fprintf(stderr, "Width and height must be >0.");
-    return 9;
-  }
-  config->codec_settings.width = FLAG_width;
-  config->codec_settings.height = FLAG_height;
-  config->codec_settings.maxFramerate = FLAG_framerate;
-
-  // Calculate the size of each frame to read (according to YUV spec).
-  config->frame_length_in_bytes =
-      3 * config->codec_settings.width * config->codec_settings.height / 2;
-
-  // Check packet loss settings
-  if (strcmp(FLAG_packet_loss_mode, "uniform") == 0) {
-    config->networking_config.packet_loss_mode = webrtc::test::kUniform;
-  } else if (strcmp(FLAG_packet_loss_mode, "burst") == 0) {
-    config->networking_config.packet_loss_mode = webrtc::test::kBurst;
-  } else {
-    fprintf(stderr,
-            "Unsupported packet loss mode, must be 'uniform' or "
-            "'burst'\n.");
-    return 10;
-  }
-
-  if (FLAG_packet_loss_probability < 0.0 ||
-      FLAG_packet_loss_probability > 1.0) {
-    fprintf(stderr,
-            "Invalid packet loss probability. Must be 0.0 - 1.0, "
-            "was: %f\n",
-            FLAG_packet_loss_probability);
-    return 11;
-  }
-  config->networking_config.packet_loss_probability =
-      FLAG_packet_loss_probability;
-
-  if (FLAG_packet_loss_burst_length < 1) {
-    fprintf(stderr,
-            "Invalid packet loss burst length, must be >=1, "
-            "was: %d\n",
-            FLAG_packet_loss_burst_length);
-    return 12;
-  }
-  config->networking_config.packet_loss_burst_length =
-      FLAG_packet_loss_burst_length;
-  config->verbose = FLAG_verbose;
-  return 0;
-}
-
-void CalculateSsimVideoMetrics(webrtc::test::TestConfig* config,
-                               webrtc::test::QualityMetricsResult* result) {
-  Log("Calculating SSIM...\n");
-  I420SSIMFromFiles(
-      config->input_filename.c_str(), config->output_filename.c_str(),
-      config->codec_settings.width, config->codec_settings.height, result);
-  Log("  Average: %3.2f\n", result->average);
-  Log("  Min    : %3.2f (frame %d)\n", result->min, result->min_frame_number);
-  Log("  Max    : %3.2f (frame %d)\n", result->max, result->max_frame_number);
-}
-
-void CalculatePsnrVideoMetrics(webrtc::test::TestConfig* config,
-                               webrtc::test::QualityMetricsResult* result) {
-  Log("Calculating PSNR...\n");
-  I420PSNRFromFiles(
-      config->input_filename.c_str(), config->output_filename.c_str(),
-      config->codec_settings.width, config->codec_settings.height, result);
-  Log("  Average: %3.2f\n", result->average);
-  Log("  Min    : %3.2f (frame %d)\n", result->min, result->min_frame_number);
-  Log("  Max    : %3.2f (frame %d)\n", result->max, result->max_frame_number);
-}
-
-void PrintConfigurationSummary(const webrtc::test::TestConfig& config) {
-  Log("Quality test with parameters:\n");
-  Log("  Test name        : %s\n", config.name.c_str());
-  Log("  Description      : %s\n", config.description.c_str());
-  Log("  Input filename   : %s\n", config.input_filename.c_str());
-  Log("  Output directory : %s\n", config.output_dir.c_str());
-  Log("  Output filename  : %s\n", config.output_filename.c_str());
-  Log("  Frame length     : %" PRIuS " bytes\n", config.frame_length_in_bytes);
-  Log("  Packet size      : %" PRIuS " bytes\n",
-      config.networking_config.packet_size_in_bytes);
-  Log("  Max payload size : %" PRIuS " bytes\n",
-      config.networking_config.max_payload_size_in_bytes);
-  Log("  Packet loss:\n");
-  Log("    Mode           : %s\n",
-      PacketLossModeToStr(config.networking_config.packet_loss_mode));
-  Log("    Probability    : %2.1f\n",
-      config.networking_config.packet_loss_probability);
-  Log("    Burst length   : %d packets\n",
-      config.networking_config.packet_loss_burst_length);
-}
-
-void PrintCsvOutput(const webrtc::test::Stats& stats,
-                    const webrtc::test::QualityMetricsResult& ssim_result,
-                    const webrtc::test::QualityMetricsResult& psnr_result) {
-  Log(
-      "\nCSV output (recommended to run with --noverbose to skip the "
-      "above output)\n");
-  printf(
-      "frame_number encoding_successful decoding_successful "
-      "encode_return_code decode_return_code "
-      "encode_time_in_us decode_time_in_us "
-      "bit_rate_in_kbps encoded_frame_length_in_bytes frame_type "
-      "packets_dropped total_packets "
-      "ssim psnr\n");
-
-  for (unsigned int i = 0; i < stats.stats_.size(); ++i) {
-    const webrtc::test::FrameStatistic& f = stats.stats_[i];
-    const webrtc::test::FrameResult& ssim = ssim_result.frames[i];
-    const webrtc::test::FrameResult& psnr = psnr_result.frames[i];
-    printf("%4d, %d, %d, %2d, %2d, %6d, %6d, %5d, %7" PRIuS
-           ", %d, %2d, %2" PRIuS ", %5.3f, %5.2f\n",
-           f.frame_number, f.encoding_successful, f.decoding_successful,
-           f.encode_return_code, f.decode_return_code, f.encode_time_in_us,
-           f.decode_time_in_us, f.bit_rate_in_kbps,
-           f.encoded_frame_length_in_bytes, f.frame_type, f.packets_dropped,
-           f.total_packets, ssim.value, psnr.value);
-  }
-}
-
-void PrintPythonOutput(const webrtc::test::TestConfig& config,
-                       const webrtc::test::Stats& stats,
-                       const webrtc::test::QualityMetricsResult& ssim_result,
-                       const webrtc::test::QualityMetricsResult& psnr_result) {
-  Log(
-      "\nPython output (recommended to run with --noverbose to skip the "
-      "above output)\n");
-  printf(
-      "test_configuration = ["
-      "{'name': 'name',                      'value': '%s'},\n"
-      "{'name': 'description',               'value': '%s'},\n"
-      "{'name': 'test_number',               'value': '%d'},\n"
-      "{'name': 'input_filename',            'value': '%s'},\n"
-      "{'name': 'output_filename',           'value': '%s'},\n"
-      "{'name': 'output_dir',                'value': '%s'},\n"
-      "{'name': 'packet_size_in_bytes',      'value': '%" PRIuS
-      "'},\n"
-      "{'name': 'max_payload_size_in_bytes', 'value': '%" PRIuS
-      "'},\n"
-      "{'name': 'packet_loss_mode',          'value': '%s'},\n"
-      "{'name': 'packet_loss_probability',   'value': '%f'},\n"
-      "{'name': 'packet_loss_burst_length',  'value': '%d'},\n"
-      "{'name': 'exclude_frame_types',       'value': '%s'},\n"
-      "{'name': 'frame_length_in_bytes',     'value': '%" PRIuS
-      "'},\n"
-      "{'name': 'use_single_core',           'value': '%s'},\n"
-      "{'name': 'keyframe_interval;',        'value': '%d'},\n"
-      "{'name': 'video_codec_type',          'value': '%s'},\n"
-      "{'name': 'width',                     'value': '%d'},\n"
-      "{'name': 'height',                    'value': '%d'},\n"
-      "{'name': 'bit_rate_in_kbps',          'value': '%d'},\n"
-      "]\n",
-      config.name.c_str(), config.description.c_str(), config.test_number,
-      config.input_filename.c_str(), config.output_filename.c_str(),
-      config.output_dir.c_str(), config.networking_config.packet_size_in_bytes,
-      config.networking_config.max_payload_size_in_bytes,
-      PacketLossModeToStr(config.networking_config.packet_loss_mode),
-      config.networking_config.packet_loss_probability,
-      config.networking_config.packet_loss_burst_length,
-      ExcludeFrameTypesToStr(config.exclude_frame_types),
-      config.frame_length_in_bytes, config.use_single_core ? "True " : "False",
-      config.keyframe_interval,
-      CodecTypeToPayloadString(config.codec_settings.codecType),
-      config.codec_settings.width, config.codec_settings.height,
-      config.codec_settings.startBitrate);
-  printf(
-      "frame_data_types = {"
-      "'frame_number': ('number', 'Frame number'),\n"
-      "'encoding_successful': ('boolean', 'Encoding successful?'),\n"
-      "'decoding_successful': ('boolean', 'Decoding successful?'),\n"
-      "'encode_time': ('number', 'Encode time (us)'),\n"
-      "'decode_time': ('number', 'Decode time (us)'),\n"
-      "'encode_return_code': ('number', 'Encode return code'),\n"
-      "'decode_return_code': ('number', 'Decode return code'),\n"
-      "'bit_rate': ('number', 'Bit rate (kbps)'),\n"
-      "'encoded_frame_length': "
-      "('number', 'Encoded frame length (bytes)'),\n"
-      "'frame_type': ('string', 'Frame type'),\n"
-      "'packets_dropped': ('number', 'Packets dropped'),\n"
-      "'total_packets': ('number', 'Total packets'),\n"
-      "'ssim': ('number', 'SSIM'),\n"
-      "'psnr': ('number', 'PSNR (dB)'),\n"
-      "}\n");
-  printf("frame_data = [");
-  for (unsigned int i = 0; i < stats.stats_.size(); ++i) {
-    const webrtc::test::FrameStatistic& f = stats.stats_[i];
-    const webrtc::test::FrameResult& ssim = ssim_result.frames[i];
-    const webrtc::test::FrameResult& psnr = psnr_result.frames[i];
-    printf(
-        "{'frame_number': %d, "
-        "'encoding_successful': %s, 'decoding_successful': %s, "
-        "'encode_time': %d, 'decode_time': %d, "
-        "'encode_return_code': %d, 'decode_return_code': %d, "
-        "'bit_rate': %d, 'encoded_frame_length': %" PRIuS
-        ", "
-        "'frame_type': %s, 'packets_dropped': %d, "
-        "'total_packets': %" PRIuS ", 'ssim': %f, 'psnr': %f},\n",
-        f.frame_number, f.encoding_successful ? "True " : "False",
-        f.decoding_successful ? "True " : "False", f.encode_time_in_us,
-        f.decode_time_in_us, f.encode_return_code, f.decode_return_code,
-        f.bit_rate_in_kbps, f.encoded_frame_length_in_bytes,
-        f.frame_type == webrtc::kVideoFrameDelta ? "'Delta'" : "'Other'",
-        f.packets_dropped, f.total_packets, ssim.value, psnr.value);
-  }
-  printf("]\n");
-}
-
-// Runs a quality measurement on the input file supplied to the program.
-// The input file must be in YUV format.
-int main(int argc, char* argv[]) {
-  std::string program_name = argv[0];
-  std::string usage =
-      "Quality test application for video comparisons.\n"
-      "Run " +
-      program_name +
-      " --help for usage.\n"
-      "Example usage:\n" +
-      program_name +
-      " --input_filename=filename.yuv --width=352 --height=288\n";
-
-  rtc::FlagList::SetFlagsFromCommandLine(&argc, argv, true);
-  if (FLAG_help) {
-    rtc::FlagList::Print(nullptr, false);
-    return 0;
-  }
-
-  // Create TestConfig.
-  webrtc::test::TestConfig config;
-
-  int return_code = HandleCommandLineFlags(&config, usage);
-  // Exit if an invalid argument is supplied.
-  if (return_code != 0) {
-    return return_code;
-  }
-
-  PrintConfigurationSummary(config);
-
-  webrtc::VP8Encoder* encoder = webrtc::VP8Encoder::Create();
-  webrtc::VP8Decoder* decoder = webrtc::VP8Decoder::Create();
-  webrtc::test::Stats stats;
-  webrtc::test::YuvFrameReaderImpl frame_reader(config.input_filename,
-                                                config.codec_settings.width,
-                                                config.codec_settings.height);
-  webrtc::test::YuvFrameWriterImpl frame_writer(config.output_filename,
-                                                config.codec_settings.width,
-                                                config.codec_settings.height);
-  frame_reader.Init();
-  frame_writer.Init();
-  webrtc::test::PacketReader packet_reader;
-
-  webrtc::test::PacketManipulatorImpl packet_manipulator(
-      &packet_reader, config.networking_config, config.verbose);
-  // By default the packet manipulator is seeded with a fixed random.
-  // If disabled we must generate a new seed.
-  if (FLAG_disable_fixed_random_seed) {
-    packet_manipulator.InitializeRandomSeed(time(NULL));
-  }
-  webrtc::test::VideoProcessor* processor = new webrtc::test::VideoProcessor(
-      encoder, decoder, &frame_reader, &frame_writer, &packet_manipulator,
-      config, &stats, nullptr /* encoded_frame_writer */,
-      nullptr /* decoded_frame_writer */);
-  processor->Init();
-
-  const int num_frames = frame_reader.NumberOfFrames();
-  int frame_number = 0;
-  while (frame_number < num_frames) {
-    processor->ProcessFrame(frame_number);
-    if (frame_number % 80 == 0) {
-      Log("\n");  // make the output a bit nicer.
-    }
-    Log(".");
-    frame_number++;
-  }
-  Log("\n");
-  Log("Processed %d frames\n", frame_number);
-
-  // Release encoder and decoder to make sure they have finished processing.
-  processor->Release();
-
-  // Verify statistics are correct:
-  assert(frame_number == static_cast<int>(stats.stats_.size()));
-
-  // Close the files before we start using them for SSIM/PSNR calculations.
-  frame_reader.Close();
-  frame_writer.Close();
-
-  stats.PrintSummary();
-
-  webrtc::test::QualityMetricsResult ssim_result;
-  CalculateSsimVideoMetrics(&config, &ssim_result);
-  webrtc::test::QualityMetricsResult psnr_result;
-  CalculatePsnrVideoMetrics(&config, &psnr_result);
-
-  if (FLAG_csv) {
-    PrintCsvOutput(stats, ssim_result, psnr_result);
-  }
-  if (FLAG_python) {
-    PrintPythonOutput(config, stats, ssim_result, psnr_result);
-  }
-  delete processor;
-  delete encoder;
-  delete decoder;
-  Log("Quality test finished!");
-  return 0;
-}