| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Standalone benchmarking application based on FFmpeg. This tool is used to | 5 // Standalone benchmarking application based on FFmpeg. This tool is used to |
| 6 // measure decoding performance between different FFmpeg compile and run-time | 6 // measure decoding performance between different FFmpeg compile and run-time |
| 7 // options. We also use this tool to measure performance regressions when | 7 // options. We also use this tool to measure performance regressions when |
| 8 // testing newer builds of FFmpeg from trunk. | 8 // testing newer builds of FFmpeg from trunk. |
| 9 | 9 |
| 10 #include "build/build_config.h" | 10 #include "build/build_config.h" |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 132 } else if (stream.compare("video") == 0) { | 132 } else if (stream.compare("video") == 0) { |
| 133 target_codec = CODEC_TYPE_VIDEO; | 133 target_codec = CODEC_TYPE_VIDEO; |
| 134 } else { | 134 } else { |
| 135 std::cerr << "Unknown --stream option " << stream << std::endl; | 135 std::cerr << "Unknown --stream option " << stream << std::endl; |
| 136 return 1; | 136 return 1; |
| 137 } | 137 } |
| 138 } | 138 } |
| 139 | 139 |
| 140 // Determine number of threads to use for video decoding (optional). | 140 // Determine number of threads to use for video decoding (optional). |
| 141 int video_threads = 0; | 141 int video_threads = 0; |
| 142 std::wstring threads(cmd_line->GetSwitchValue(switches::kVideoThreads)); | 142 std::string threads(cmd_line->GetSwitchValueASCII(switches::kVideoThreads)); |
| 143 if (!threads.empty() && | 143 if (!threads.empty() && |
| 144 !StringToInt(WideToUTF16Hack(threads), &video_threads)) { | 144 !StringToInt(threads, &video_threads)) { |
| 145 video_threads = 0; | 145 video_threads = 0; |
| 146 } | 146 } |
| 147 | 147 |
| 148 // FFmpeg verbosity. See libavutil/log.h for values: -8 quiet..48 verbose. | 148 // FFmpeg verbosity. See libavutil/log.h for values: -8 quiet..48 verbose. |
| 149 int verbose_level = AV_LOG_FATAL; | 149 int verbose_level = AV_LOG_FATAL; |
| 150 std::wstring verbose(cmd_line->GetSwitchValue(switches::kVerbose)); | 150 std::string verbose(cmd_line->GetSwitchValueASCII(switches::kVerbose)); |
| 151 if (!verbose.empty() && | 151 if (!verbose.empty() && |
| 152 !StringToInt(WideToUTF16Hack(verbose), &verbose_level)) { | 152 !StringToInt(verbose, &verbose_level)) { |
| 153 verbose_level = AV_LOG_FATAL; | 153 verbose_level = AV_LOG_FATAL; |
| 154 } | 154 } |
| 155 | 155 |
| 156 // Determine number of frames to decode (optional). | 156 // Determine number of frames to decode (optional). |
| 157 int max_frames = 0; | 157 int max_frames = 0; |
| 158 std::wstring frames_opt(cmd_line->GetSwitchValue(switches::kFrames)); | 158 std::string frames_opt(cmd_line->GetSwitchValueASCII(switches::kFrames)); |
| 159 if (!frames_opt.empty() && | 159 if (!frames_opt.empty() && |
| 160 !StringToInt(WideToUTF16Hack(frames_opt), &max_frames)) { | 160 !StringToInt(frames_opt, &max_frames)) { |
| 161 max_frames = 0; | 161 max_frames = 0; |
| 162 } | 162 } |
| 163 | 163 |
| 164 // Determine number of times to loop (optional). | 164 // Determine number of times to loop (optional). |
| 165 int max_loops = 0; | 165 int max_loops = 0; |
| 166 std::wstring loop_opt(cmd_line->GetSwitchValue(switches::kLoop)); | 166 std::string loop_opt(cmd_line->GetSwitchValueASCII(switches::kLoop)); |
| 167 if (!loop_opt.empty() && | 167 if (!loop_opt.empty() && |
| 168 !StringToInt(WideToUTF16Hack(loop_opt), &max_loops)) { | 168 !StringToInt(loop_opt, &max_loops)) { |
| 169 max_loops = 0; | 169 max_loops = 0; |
| 170 } | 170 } |
| 171 | 171 |
| 172 bool fast2 = false; | 172 bool fast2 = false; |
| 173 if (cmd_line->HasSwitch(switches::kFast2)) { | 173 if (cmd_line->HasSwitch(switches::kFast2)) { |
| 174 fast2 = true; | 174 fast2 = true; |
| 175 } | 175 } |
| 176 | 176 |
| 177 bool flush = false; | 177 bool flush = false; |
| 178 if (cmd_line->HasSwitch(switches::kFlush)) { | 178 if (cmd_line->HasSwitch(switches::kFlush)) { |
| 179 flush = true; | 179 flush = true; |
| 180 } | 180 } |
| 181 | 181 |
| 182 unsigned int hash_value = 5381u; // Seed for DJB2. | 182 unsigned int hash_value = 5381u; // Seed for DJB2. |
| 183 bool hash_djb2 = false; | 183 bool hash_djb2 = false; |
| 184 if (cmd_line->HasSwitch(switches::kDjb2)) { | 184 if (cmd_line->HasSwitch(switches::kDjb2)) { |
| 185 hash_djb2 = true; | 185 hash_djb2 = true; |
| 186 } | 186 } |
| 187 | 187 |
| 188 MD5Context ctx; // Intermediate MD5 data: do not use | 188 MD5Context ctx; // Intermediate MD5 data: do not use |
| 189 MD5Init(&ctx); | 189 MD5Init(&ctx); |
| 190 bool hash_md5 = false; | 190 bool hash_md5 = false; |
| 191 if (cmd_line->HasSwitch(switches::kMd5)) { | 191 if (cmd_line->HasSwitch(switches::kMd5)) { |
| 192 hash_md5 = true; | 192 hash_md5 = true; |
| 193 } | 193 } |
| 194 | 194 |
| 195 int skip = 0; | 195 int skip = 0; |
| 196 if (cmd_line->HasSwitch(switches::kSkip)) { | 196 if (cmd_line->HasSwitch(switches::kSkip)) { |
| 197 std::wstring skip_opt(cmd_line->GetSwitchValue(switches::kSkip)); | 197 std::string skip_opt(cmd_line->GetSwitchValueASCII(switches::kSkip)); |
| 198 if (!StringToInt(WideToUTF16Hack(skip_opt), &skip)) { | 198 if (!StringToInt(skip_opt, &skip)) { |
| 199 skip = 0; | 199 skip = 0; |
| 200 } | 200 } |
| 201 } | 201 } |
| 202 | 202 |
| 203 std::ostream* log_out = &std::cout; | 203 std::ostream* log_out = &std::cout; |
| 204 #if defined(OS_WIN) | 204 #if defined(OS_WIN) |
| 205 // Catch exceptions so this tool can be used in automated testing. | 205 // Catch exceptions so this tool can be used in automated testing. |
| 206 __try { | 206 __try { |
| 207 #endif | 207 #endif |
| 208 | 208 |
| (...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 535 #if defined(OS_WIN) | 535 #if defined(OS_WIN) |
| 536 } __except(EXCEPTION_EXECUTE_HANDLER) { | 536 } __except(EXCEPTION_EXECUTE_HANDLER) { |
| 537 *log_out << " Exception:" << std::setw(11) << GetExceptionCode() | 537 *log_out << " Exception:" << std::setw(11) << GetExceptionCode() |
| 538 << " " << in_path << std::endl; | 538 << " " << in_path << std::endl; |
| 539 return 1; | 539 return 1; |
| 540 } | 540 } |
| 541 #endif | 541 #endif |
| 542 CommandLine::Reset(); | 542 CommandLine::Reset(); |
| 543 return 0; | 543 return 0; |
| 544 } | 544 } |
| OLD | NEW |