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

Side by Side Diff: webrtc/modules/video_processing/main/source/content_analysis.h

Issue 1410663004: modules/video_processing: refactor interface->include + more. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Rebased Created 5 years, 1 month 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
(Empty)
1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 *
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
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11 #ifndef WEBRTC_MODULES_VIDEO_PROCESSING_MAIN_SOURCE_CONTENT_ANALYSIS_H
12 #define WEBRTC_MODULES_VIDEO_PROCESSING_MAIN_SOURCE_CONTENT_ANALYSIS_H
13
14 #include "webrtc/modules/include/module_common_types.h"
15 #include "webrtc/modules/video_processing/main/interface/video_processing_define s.h"
16 #include "webrtc/typedefs.h"
17 #include "webrtc/video_frame.h"
18
19 namespace webrtc {
20
21 class VPMContentAnalysis {
22 public:
23 // When |runtime_cpu_detection| is true, runtime selection of an optimized
24 // code path is allowed.
25 explicit VPMContentAnalysis(bool runtime_cpu_detection);
26 ~VPMContentAnalysis();
27
28 // Initialize ContentAnalysis - should be called prior to
29 // extractContentFeature
30 // Inputs: width, height
31 // Return value: 0 if OK, negative value upon error
32 int32_t Initialize(int width, int height);
33
34 // Extract content Feature - main function of ContentAnalysis
35 // Input: new frame
36 // Return value: pointer to structure containing content Analysis
37 // metrics or NULL value upon error
38 VideoContentMetrics* ComputeContentMetrics(const VideoFrame& inputFrame);
39
40 // Release all allocated memory
41 // Output: 0 if OK, negative value upon error
42 int32_t Release();
43
44 private:
45 // return motion metrics
46 VideoContentMetrics* ContentMetrics();
47
48 // Normalized temporal difference metric: for motion magnitude
49 typedef int32_t (VPMContentAnalysis::*TemporalDiffMetricFunc)();
50 TemporalDiffMetricFunc TemporalDiffMetric;
51 int32_t TemporalDiffMetric_C();
52
53 // Motion metric method: call 2 metrics (magnitude and size)
54 int32_t ComputeMotionMetrics();
55
56 // Spatial metric method: computes the 3 frame-average spatial
57 // prediction errors (1x2,2x1,2x2)
58 typedef int32_t (VPMContentAnalysis::*ComputeSpatialMetricsFunc)();
59 ComputeSpatialMetricsFunc ComputeSpatialMetrics;
60 int32_t ComputeSpatialMetrics_C();
61
62 #if defined(WEBRTC_ARCH_X86_FAMILY)
63 int32_t ComputeSpatialMetrics_SSE2();
64 int32_t TemporalDiffMetric_SSE2();
65 #endif
66
67 const uint8_t* orig_frame_;
68 uint8_t* prev_frame_;
69 int width_;
70 int height_;
71 int skip_num_;
72 int border_;
73
74 // Content Metrics: Stores the local average of the metrics.
75 float motion_magnitude_; // motion class
76 float spatial_pred_err_; // spatial class
77 float spatial_pred_err_h_; // spatial class
78 float spatial_pred_err_v_; // spatial class
79 bool first_frame_;
80 bool ca_Init_;
81
82 VideoContentMetrics* content_metrics_;
83 };
84
85 } // namespace webrtc
86
87 #endif // WEBRTC_MODULES_VIDEO_PROCESSING_MAIN_SOURCE_CONTENT_ANALYSIS_H
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698