Framerate-reduction code is disabled on all platforms, and this code adds complexity. It's necessary to react fast, especially on mobile platforms or other bad network conditions and framerate reduction adds another step between HD and QVGA. BUG=webrtc:5678, webrtc:5830 R=jackychen@webrtc.org, mflodman@webrtc.org Review URL: https://codereview.webrtc.org/1885893002 . Cr-Commit-Position: refs/heads/master@{#12503}
55 lines
2.1 KiB
C++
55 lines
2.1 KiB
C++
/*
|
|
* 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.
|
|
*/
|
|
|
|
#ifndef WEBRTC_MODULES_VIDEO_PROCESSING_VIDEO_PROCESSING_IMPL_H_
|
|
#define WEBRTC_MODULES_VIDEO_PROCESSING_VIDEO_PROCESSING_IMPL_H_
|
|
|
|
#include "webrtc/base/criticalsection.h"
|
|
#include "webrtc/modules/video_processing/include/video_processing.h"
|
|
#include "webrtc/modules/video_processing/brightness_detection.h"
|
|
#include "webrtc/modules/video_processing/deflickering.h"
|
|
#include "webrtc/modules/video_processing/frame_preprocessor.h"
|
|
|
|
namespace webrtc {
|
|
class CriticalSectionWrapper;
|
|
|
|
class VideoProcessingImpl : public VideoProcessing {
|
|
public:
|
|
VideoProcessingImpl();
|
|
~VideoProcessingImpl() override;
|
|
|
|
// Implements VideoProcessing.
|
|
int32_t Deflickering(VideoFrame* frame, FrameStats* stats) override;
|
|
int32_t BrightnessDetection(const VideoFrame& frame,
|
|
const FrameStats& stats) override;
|
|
void EnableTemporalDecimation(bool enable) override;
|
|
void SetInputFrameResampleMode(VideoFrameResampling resampling_mode) override;
|
|
void EnableContentAnalysis(bool enable) override;
|
|
int32_t SetTargetResolution(uint32_t width,
|
|
uint32_t height,
|
|
uint32_t frame_rate) override;
|
|
uint32_t GetDecimatedFrameRate() override;
|
|
uint32_t GetDecimatedWidth() const override;
|
|
uint32_t GetDecimatedHeight() const override;
|
|
void EnableDenosing(bool enable) override;
|
|
const VideoFrame* PreprocessFrame(const VideoFrame& frame) override;
|
|
VideoContentMetrics* GetContentMetrics() const override;
|
|
|
|
private:
|
|
rtc::CriticalSection mutex_;
|
|
VPMDeflickering deflickering_ GUARDED_BY(mutex_);
|
|
VPMBrightnessDetection brightness_detection_;
|
|
VPMFramePreprocessor frame_pre_processor_;
|
|
};
|
|
|
|
} // namespace webrtc
|
|
|
|
#endif // WEBRTC_MODULES_VIDEO_PROCESSING_VIDEO_PROCESSING_IMPL_H_
|