Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(423)

Side by Side Diff: webrtc/tools/frame_analyzer/video_quality_analysis.h

Issue 2553693002: Comparison of videos with reference frame not starting from zero (Closed)
Patch Set: Added newline in debug prints for PrintMaxRepeatedAndSkippedFrames Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 27 matching lines...) Expand all
38 std::vector<AnalysisResult> frames; 38 std::vector<AnalysisResult> frames;
39 }; 39 };
40 40
41 enum VideoAnalysisMetricsType {kPSNR, kSSIM}; 41 enum VideoAnalysisMetricsType {kPSNR, kSSIM};
42 42
43 // A function to run the PSNR and SSIM analysis on the test file. The test file 43 // A function to run the PSNR and SSIM analysis on the test file. The test file
44 // comprises the frames that were captured during the quality measurement test. 44 // comprises the frames that were captured during the quality measurement test.
45 // There may be missing or duplicate frames. Also the frames start at a random 45 // There may be missing or duplicate frames. Also the frames start at a random
46 // position in the original video. We should provide a statistics file along 46 // position in the original video. We should provide a statistics file along
47 // with the test video. The stats file contains the connection between the 47 // with the test video. The stats file contains the connection between the
48 // actual frames in the test file and their position in the reference video, so 48 // actual frames in the test file and their bar code number. There is one file
49 // that the analysis could run with the right frames from both videos. The stats 49 // for the reference video and one for the test video. The stats file should
50 // file should be in the form 'frame_xxxx yyyy', where xxxx is the consecutive 50 // be in the form 'frame_xxxx yyyy', where xxxx is the consecutive
51 // number of the frame in the test video, and yyyy is the equivalent frame in 51 // number of the frame in the test video, and yyyy is the barcode number.
52 // the reference video. The stats file could be produced by 52 // The stats file could be produced by
53 // tools/barcode_tools/barcode_decoder.py. This script decodes the barcodes 53 // tools/barcode_tools/barcode_decoder.py. This script decodes the barcodes
54 // integrated in every video and generates the stats file. If three was some 54 // integrated in every video and generates the stats file. If three was some
55 // problem with the decoding there would be 'Barcode error' instead of yyyy. 55 // problem with the decoding there would be 'Barcode error' instead of yyyy.
56 void RunAnalysis(const char* reference_file_name, const char* test_file_name, 56 // The stat files are used to compare the right frames with each other and
57 const char* stats_file_name, int width, int height, 57 // to calculate statistics.
58 void RunAnalysis(const char* reference_file_name,
59 const char* test_file_name,
60 const char* stats_file_reference_name,
61 const char* stats_file_test_name,
62 int width,
63 int height,
58 ResultsContainer* results); 64 ResultsContainer* results);
59 65
60 // Compute PSNR or SSIM for an I420 frame (all planes). When we are calculating 66 // Compute PSNR or SSIM for an I420 frame (all planes). When we are calculating
61 // PSNR values, the max return value (in the case where the test and reference 67 // PSNR values, the max return value (in the case where the test and reference
62 // frames are exactly the same) will be 48. In the case of SSIM the max return 68 // frames are exactly the same) will be 48. In the case of SSIM the max return
63 // value will be 1. 69 // value will be 1.
64 double CalculateMetrics(VideoAnalysisMetricsType video_metrics_type, 70 double CalculateMetrics(VideoAnalysisMetricsType video_metrics_type,
65 const uint8_t* ref_frame, 71 const uint8_t* ref_frame,
66 const uint8_t* test_frame, 72 const uint8_t* test_frame,
67 int width, 73 int width,
68 int height); 74 int height);
69 75
70 // Prints the result from the analysis in Chromium performance 76 // Prints the result from the analysis in Chromium performance
71 // numbers compatible format to stdout. If the results object contains no frames 77 // numbers compatible format to stdout. If the results object contains no frames
72 // no output will be written. 78 // no output will be written.
73 void PrintAnalysisResults(const std::string& label, ResultsContainer* results); 79 void PrintAnalysisResults(const std::string& label, ResultsContainer* results);
74 80
75 // Similar to the above, but will print to the specified file handle. 81 // Similar to the above, but will print to the specified file handle.
76 void PrintAnalysisResults(FILE* output, const std::string& label, 82 void PrintAnalysisResults(FILE* output, const std::string& label,
77 ResultsContainer* results); 83 ResultsContainer* results);
78 84
79 // Calculates max repeated and skipped frames and prints them to stdout in a 85 // Calculates max repeated and skipped frames and prints them to stdout in a
80 // format that is compatible with Chromium performance numbers. 86 // format that is compatible with Chromium performance numbers.
81 void PrintMaxRepeatedAndSkippedFrames(const std::string& label, 87 void PrintMaxRepeatedAndSkippedFrames(const std::string& label,
82 const std::string& stats_file_name); 88 const std::string& stats_file_ref_name,
89 const std::string& stats_file_test_name);
83 90
84 // Similar to the above, but will print to the specified file handle. 91 // Similar to the above, but will print to the specified file handle.
85 void PrintMaxRepeatedAndSkippedFrames(FILE* output, const std::string& label, 92 void PrintMaxRepeatedAndSkippedFrames(FILE* output,
86 const std::string& stats_file_name); 93 const std::string& label,
94 const std::string& stats_file_ref_name,
95 const std::string& stats_file_test_name);
87 96
88 // Gets the next line from an open stats file. 97 // Gets the next line from an open stats file.
89 bool GetNextStatsLine(FILE* stats_file, char* line); 98 bool GetNextStatsLine(FILE* stats_file, char* line);
90 99
91 // Calculates the size of a I420 frame if given the width and height. 100 // Calculates the size of a I420 frame if given the width and height.
92 int GetI420FrameSize(int width, int height); 101 int GetI420FrameSize(int width, int height);
93 102
94 // Extract the sequence of the frame in the video. I.e. if line is 103 // Extract the sequence of the frame in the video. I.e. if line is
95 // frame_0023 0284, we will get 23. 104 // frame_0023 0284, we will get 23.
96 int ExtractFrameSequenceNumber(std::string line); 105 int ExtractFrameSequenceNumber(std::string line);
(...skipping 17 matching lines...) Expand all
114 bool ExtractFrameFromY4mFile(const char* i420_file_name, 123 bool ExtractFrameFromY4mFile(const char* i420_file_name,
115 int width, 124 int width,
116 int height, 125 int height,
117 int frame_number, 126 int frame_number,
118 uint8_t* result_frame); 127 uint8_t* result_frame);
119 128
120 } // namespace test 129 } // namespace test
121 } // namespace webrtc 130 } // namespace webrtc
122 131
123 #endif // WEBRTC_TOOLS_FRAME_ANALYZER_VIDEO_QUALITY_ANALYSIS_H_ 132 #endif // WEBRTC_TOOLS_FRAME_ANALYZER_VIDEO_QUALITY_ANALYSIS_H_
OLDNEW
« no previous file with comments | « webrtc/tools/frame_analyzer/frame_analyzer.cc ('k') | webrtc/tools/frame_analyzer/video_quality_analysis.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698