| /* |
| * Copyright (c) 2011 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. |
| */ |
| |
| /* |
| * content_analysis.h |
| */ |
| |
| #ifndef VPM_CONTENT_ANALYSIS_H |
| #define VPM_CONTENT_ANALYSIS_H |
| |
| #include "typedefs.h" |
| #include "module_common_types.h" |
| |
| #include "spatial_resampler.h" |
| |
| namespace webrtc { |
| |
| class VPMContentAnalysis |
| { |
| public: |
| VPMContentAnalysis(); |
| ~VPMContentAnalysis(); |
| |
| //Initialize ContentAnalysis - should be called prior to extractContentFeature |
| //Inputs: width, height |
| //Return value: 0 if OK, negative value upon error |
| WebRtc_Word32 Initialize( WebRtc_UWord16 width, WebRtc_UWord16 height); |
| |
| //Extract content Feature - main function of ContentAnalysis |
| //Input: new frame |
| //Return value: pointer to structure containing content Analysis metrics or NULL value upon error |
| VideoContentMetrics* ComputeContentMetrics(const VideoFrame* inputFrame); |
| |
| //Release all allocated memory |
| //Output: 0 if OK, negative value upon error |
| WebRtc_Word32 Release(); |
| |
| private: |
| |
| //return motion metrics |
| VideoContentMetrics* ContentMetrics(); |
| |
| //Normalized temporal difference metric: for motion magnitude |
| WebRtc_Word32 TemporalDiffMetric(); |
| |
| //Motion metric method: call 2 metrics (magnitude and size) |
| WebRtc_Word32 ComputeMotionMetrics(); |
| |
| //Spatial metric method: computes the 3 frame-average spatial prediction errors (1x2,2x1,2x2) |
| WebRtc_Word32 ComputeSpatialMetrics(); |
| |
| const WebRtc_UWord8* _origFrame; |
| WebRtc_UWord8* _prevFrame; |
| WebRtc_UWord16 _width; |
| WebRtc_UWord16 _height; |
| |
| |
| //Content Metrics: |
| //stores the local average of the metrics |
| float _motionMagnitudeNZ; //for motion class |
| float _spatialPredErr; //for spatial class |
| float _spatialPredErrH; //for spatial class |
| float _spatialPredErrV; //for spatial class |
| float _sizeZeroMotion; //for motion class |
| float _motionPredErr; //for complexity class: |
| float _motionHorizontalness; //for coherence class |
| float _motionClusterDistortion; //for coherence class |
| |
| bool _firstFrame; |
| bool _CAInit; |
| VideoContentMetrics* _cMetrics; |
| |
| }; // end of VPMContentAnalysis class definition |
| |
| } // namespace |
| |
| #endif |