/*
 *  Copyright (c) 2016 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 <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "rtc_tools/frame_analyzer/reference_less_video_analysis_lib.h"
#include "rtc_tools/simple_command_line_parser.h"

int main(int argc, char** argv) {
  // This captures the freezing metrics for reference less video analysis.
  std::string program_name = argv[0];
  std::string usage = "Outputs the freezing score by comparing current frame "
      "with the previous frame.\nExample usage:\n" + program_name +
      " --video_file=video_file.y4m\n"
      "Command line flags:\n"
      "  - video_file(string): Path of the video "
      "file to be analyzed. Only y4m file format is supported.\n";

  webrtc::test::CommandLineParser parser;

  // Init the parser and set the usage message.
  parser.Init(argc, argv);
  parser.SetUsageMessage(usage);

  parser.SetFlag("video_file", "");
  parser.ProcessFlags();
  if (parser.GetFlag("video_file").empty()) {
    parser.PrintUsageMessage();
    exit(EXIT_SUCCESS);
  }
  std::string video_file = parser.GetFlag("video_file");

  return run_analysis(video_file);
}
