From a680a6a4af2cb9182709737261eddd767e7a707e Mon Sep 17 00:00:00 2001 From: Paulina Hensman Date: Thu, 5 Apr 2018 11:42:24 +0200 Subject: [PATCH] Enable and fix chromium clang warnings in sdk/android targets. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Targets: base_jni, internal_jni, video_jni, vp8_jni and vp9_jni Bug: webrtc:163 Change-Id: I4aa68c81e6e7cbe5fdf78c90e464b46c55633252 Reviewed-on: https://webrtc-review.googlesource.com/66820 Commit-Queue: Paulina Hensman Reviewed-by: Karl Wiberg Reviewed-by: Sami Kalliomäki Cr-Commit-Position: refs/heads/master@{#22744} --- api/videosourceinterface.cc | 1 + api/videosourceinterface.h | 1 + common_video/i420_buffer_pool.cc | 4 ++ common_video/include/i420_buffer_pool.h | 7 ++-- common_video/include/video_frame.h | 1 + common_video/video_frame.cc | 2 + media/base/adaptedvideotracksource.cc | 1 + media/base/adaptedvideotracksource.h | 1 + media/base/codec.cc | 1 + media/base/codec.h | 2 + media/base/videobroadcaster.cc | 1 + media/base/videobroadcaster.h | 1 + media/base/videosourcebase.cc | 1 + media/base/videosourcebase.h | 1 + .../videodecodersoftwarefallbackwrapper.cc | 2 + .../videodecodersoftwarefallbackwrapper.h | 1 + .../videoencodersoftwarefallbackwrapper.cc | 2 + .../videoencodersoftwarefallbackwrapper.h | 1 + modules/video_coding/codecs/vp8/include/vp8.h | 4 +- modules/video_coding/codecs/vp9/include/vp9.h | 4 +- .../video_coding/utility/moving_average.cc | 1 + modules/video_coding/utility/moving_average.h | 1 + sdk/android/BUILD.gn | 40 ------------------- sdk/android/src/jni/androidmediadecoder.cc | 2 +- sdk/android/src/jni/androidmediadecoder_jni.h | 2 +- sdk/android/src/jni/androidmediaencoder.cc | 2 +- sdk/android/src/jni/androidmediaencoder_jni.h | 2 +- sdk/android/src/jni/androidnetworkmonitor.cc | 10 +++++ sdk/android/src/jni/androidnetworkmonitor.h | 4 ++ .../src/jni/androidvideotracksource.cc | 24 ++++++++++- sdk/android/src/jni/androidvideotracksource.h | 13 +++--- sdk/android/src/jni/video_renderer.cc | 2 +- .../src/jni/videodecoderfactorywrapper.cc | 1 + .../src/jni/videodecoderfactorywrapper.h | 1 + sdk/android/src/jni/videodecoderwrapper.cc | 7 ++++ sdk/android/src/jni/videodecoderwrapper.h | 5 +++ .../src/jni/videoencoderfactorywrapper.cc | 6 +++ .../src/jni/videoencoderfactorywrapper.h | 5 +-- sdk/android/src/jni/videoencoderwrapper.cc | 5 +++ sdk/android/src/jni/videoencoderwrapper.h | 3 +- sdk/android/src/jni/videoframe.cc | 2 +- 41 files changed, 111 insertions(+), 66 deletions(-) diff --git a/api/videosourceinterface.cc b/api/videosourceinterface.cc index 5eda369df0..8cf8202911 100644 --- a/api/videosourceinterface.cc +++ b/api/videosourceinterface.cc @@ -13,6 +13,7 @@ namespace rtc { VideoSinkWants::VideoSinkWants() = default; +VideoSinkWants::VideoSinkWants(const VideoSinkWants&) = default; VideoSinkWants::~VideoSinkWants() = default; } // namespace rtc diff --git a/api/videosourceinterface.h b/api/videosourceinterface.h index ffb017ad51..065e2dcfc4 100644 --- a/api/videosourceinterface.h +++ b/api/videosourceinterface.h @@ -22,6 +22,7 @@ namespace rtc { // should have when it is delivered to a certain sink. struct VideoSinkWants { VideoSinkWants(); + VideoSinkWants(const VideoSinkWants&); ~VideoSinkWants(); // Tells the source whether the sink wants frames with rotation applied. // By default, any rotation must be applied by the sink. diff --git a/common_video/i420_buffer_pool.cc b/common_video/i420_buffer_pool.cc index 48d6512971..c403eeb4fc 100644 --- a/common_video/i420_buffer_pool.cc +++ b/common_video/i420_buffer_pool.cc @@ -14,10 +14,14 @@ namespace webrtc { +I420BufferPool::I420BufferPool() : I420BufferPool(false) {} +I420BufferPool::I420BufferPool(bool zero_initialize) + : I420BufferPool(zero_initialize, std::numeric_limits::max()) {} I420BufferPool::I420BufferPool(bool zero_initialize, size_t max_number_of_buffers) : zero_initialize_(zero_initialize), max_number_of_buffers_(max_number_of_buffers) {} +I420BufferPool::~I420BufferPool() = default; void I420BufferPool::Release() { buffers_.clear(); diff --git a/common_video/include/i420_buffer_pool.h b/common_video/include/i420_buffer_pool.h index 863eb10180..1c425bb790 100644 --- a/common_video/include/i420_buffer_pool.h +++ b/common_video/include/i420_buffer_pool.h @@ -29,11 +29,10 @@ namespace webrtc { // are created. This is to prevent memory leaks where frames are not returned. class I420BufferPool { public: - I420BufferPool() - : I420BufferPool(false) {} - explicit I420BufferPool(bool zero_initialize) - : I420BufferPool(zero_initialize, std::numeric_limits::max()) {} + I420BufferPool(); + explicit I420BufferPool(bool zero_initialize); I420BufferPool(bool zero_initialze, size_t max_number_of_buffers); + ~I420BufferPool(); // Returns a buffer from the pool. If no suitable buffer exist in the pool // and there are less than |max_number_of_buffers| pending, a buffer is diff --git a/common_video/include/video_frame.h b/common_video/include/video_frame.h index af363d44cc..ba6762fe69 100644 --- a/common_video/include/video_frame.h +++ b/common_video/include/video_frame.h @@ -34,6 +34,7 @@ class EncodedImage { static size_t GetBufferPaddingBytes(VideoCodecType codec_type); EncodedImage(); + EncodedImage(const EncodedImage&); EncodedImage(uint8_t* buffer, size_t length, size_t size); void SetEncodeTime(int64_t encode_start_ms, int64_t encode_finish_ms); diff --git a/common_video/video_frame.cc b/common_video/video_frame.cc index 1447fc1650..f4ebac8c9e 100644 --- a/common_video/video_frame.cc +++ b/common_video/video_frame.cc @@ -45,6 +45,8 @@ size_t EncodedImage::GetBufferPaddingBytes(VideoCodecType codec_type) { EncodedImage::EncodedImage() : EncodedImage(nullptr, 0, 0) {} +EncodedImage::EncodedImage(const EncodedImage&) = default; + EncodedImage::EncodedImage(uint8_t* buffer, size_t length, size_t size) : _buffer(buffer), _length(length), _size(size) {} diff --git a/media/base/adaptedvideotracksource.cc b/media/base/adaptedvideotracksource.cc index 5a7168bfb8..84b39d878f 100644 --- a/media/base/adaptedvideotracksource.cc +++ b/media/base/adaptedvideotracksource.cc @@ -22,6 +22,7 @@ AdaptedVideoTrackSource::AdaptedVideoTrackSource(int required_alignment) : video_adapter_(required_alignment) { thread_checker_.DetachFromThread(); } +AdaptedVideoTrackSource::~AdaptedVideoTrackSource() = default; bool AdaptedVideoTrackSource::GetStats(Stats* stats) { rtc::CritScope lock(&stats_crit_); diff --git a/media/base/adaptedvideotracksource.h b/media/base/adaptedvideotracksource.h index 0db381f5fb..e7edb9a64f 100644 --- a/media/base/adaptedvideotracksource.h +++ b/media/base/adaptedvideotracksource.h @@ -26,6 +26,7 @@ class AdaptedVideoTrackSource : public webrtc::Notifier { public: AdaptedVideoTrackSource(); + ~AdaptedVideoTrackSource() override; protected: // Allows derived classes to initialize |video_adapter_| with a custom diff --git a/media/base/codec.cc b/media/base/codec.cc index e4b6b7899b..f5a71cced0 100644 --- a/media/base/codec.cc +++ b/media/base/codec.cc @@ -22,6 +22,7 @@ namespace cricket { FeedbackParams::FeedbackParams() = default; +FeedbackParams::~FeedbackParams() = default; bool FeedbackParam::operator==(const FeedbackParam& other) const { return _stricmp(other.id().c_str(), id().c_str()) == 0 && diff --git a/media/base/codec.h b/media/base/codec.h index 6a2dcf4529..a49fe4b278 100644 --- a/media/base/codec.h +++ b/media/base/codec.h @@ -36,6 +36,7 @@ class FeedbackParam { : id_(id), param_(kParamValueEmpty) { } + bool operator==(const FeedbackParam& other) const; const std::string& id() const { return id_; } @@ -49,6 +50,7 @@ class FeedbackParam { class FeedbackParams { public: FeedbackParams(); + ~FeedbackParams(); bool operator==(const FeedbackParams& other) const; bool Has(const FeedbackParam& param) const; diff --git a/media/base/videobroadcaster.cc b/media/base/videobroadcaster.cc index d2a9c54116..09d69f227e 100644 --- a/media/base/videobroadcaster.cc +++ b/media/base/videobroadcaster.cc @@ -21,6 +21,7 @@ namespace rtc { VideoBroadcaster::VideoBroadcaster() { thread_checker_.DetachFromThread(); } +VideoBroadcaster::~VideoBroadcaster() = default; void VideoBroadcaster::AddOrUpdateSink( VideoSinkInterface* sink, diff --git a/media/base/videobroadcaster.h b/media/base/videobroadcaster.h index c19f3f7519..078368e1f3 100644 --- a/media/base/videobroadcaster.h +++ b/media/base/videobroadcaster.h @@ -33,6 +33,7 @@ class VideoBroadcaster : public VideoSourceBase, public VideoSinkInterface { public: VideoBroadcaster(); + ~VideoBroadcaster() override; void AddOrUpdateSink(VideoSinkInterface* sink, const VideoSinkWants& wants) override; void RemoveSink(VideoSinkInterface* sink) override; diff --git a/media/base/videosourcebase.cc b/media/base/videosourcebase.cc index 299795fca6..b193b9ff65 100644 --- a/media/base/videosourcebase.cc +++ b/media/base/videosourcebase.cc @@ -17,6 +17,7 @@ namespace rtc { VideoSourceBase::VideoSourceBase() { thread_checker_.DetachFromThread(); } +VideoSourceBase::~VideoSourceBase() = default; void VideoSourceBase::AddOrUpdateSink( VideoSinkInterface* sink, diff --git a/media/base/videosourcebase.h b/media/base/videosourcebase.h index 35f85bb530..6222e61c14 100644 --- a/media/base/videosourcebase.h +++ b/media/base/videosourcebase.h @@ -23,6 +23,7 @@ namespace rtc { class VideoSourceBase : public VideoSourceInterface { public: VideoSourceBase(); + ~VideoSourceBase() override; void AddOrUpdateSink(VideoSinkInterface* sink, const VideoSinkWants& wants) override; void RemoveSink(VideoSinkInterface* sink) override; diff --git a/media/engine/videodecodersoftwarefallbackwrapper.cc b/media/engine/videodecodersoftwarefallbackwrapper.cc index eb4e98f918..5c2d3e1f00 100644 --- a/media/engine/videodecodersoftwarefallbackwrapper.cc +++ b/media/engine/videodecodersoftwarefallbackwrapper.cc @@ -31,6 +31,8 @@ VideoDecoderSoftwareFallbackWrapper::VideoDecoderSoftwareFallbackWrapper( std::string(fallback_decoder_->ImplementationName()) + " (fallback from: " + hw_decoder_->ImplementationName() + ")"), callback_(nullptr) {} +VideoDecoderSoftwareFallbackWrapper::~VideoDecoderSoftwareFallbackWrapper() = + default; int32_t VideoDecoderSoftwareFallbackWrapper::InitDecode( const VideoCodec* codec_settings, diff --git a/media/engine/videodecodersoftwarefallbackwrapper.h b/media/engine/videodecodersoftwarefallbackwrapper.h index f2869432fa..48744f692c 100644 --- a/media/engine/videodecodersoftwarefallbackwrapper.h +++ b/media/engine/videodecodersoftwarefallbackwrapper.h @@ -26,6 +26,7 @@ class VideoDecoderSoftwareFallbackWrapper : public VideoDecoder { VideoDecoderSoftwareFallbackWrapper( std::unique_ptr sw_fallback_decoder, std::unique_ptr hw_decoder); + ~VideoDecoderSoftwareFallbackWrapper() override; int32_t InitDecode(const VideoCodec* codec_settings, int32_t number_of_cores) override; diff --git a/media/engine/videoencodersoftwarefallbackwrapper.cc b/media/engine/videoencodersoftwarefallbackwrapper.cc index b8f64c0a2e..50bc3f2ab7 100644 --- a/media/engine/videoencodersoftwarefallbackwrapper.cc +++ b/media/engine/videoencodersoftwarefallbackwrapper.cc @@ -86,6 +86,8 @@ VideoEncoderSoftwareFallbackWrapper::VideoEncoderSoftwareFallbackWrapper( 1); // No HW below. } } +VideoEncoderSoftwareFallbackWrapper::~VideoEncoderSoftwareFallbackWrapper() = + default; bool VideoEncoderSoftwareFallbackWrapper::InitFallbackEncoder() { RTC_LOG(LS_WARNING) << "Encoder falling back to software encoding."; diff --git a/media/engine/videoencodersoftwarefallbackwrapper.h b/media/engine/videoencodersoftwarefallbackwrapper.h index a9a349c221..c54728e521 100644 --- a/media/engine/videoencodersoftwarefallbackwrapper.h +++ b/media/engine/videoencodersoftwarefallbackwrapper.h @@ -28,6 +28,7 @@ class VideoEncoderSoftwareFallbackWrapper : public VideoEncoder { VideoEncoderSoftwareFallbackWrapper( std::unique_ptr sw_encoder, std::unique_ptr hw_encoder); + ~VideoEncoderSoftwareFallbackWrapper() override; int32_t InitEncode(const VideoCodec* codec_settings, int32_t number_of_cores, diff --git a/modules/video_coding/codecs/vp8/include/vp8.h b/modules/video_coding/codecs/vp8/include/vp8.h index 00808e2b62..57be521320 100644 --- a/modules/video_coding/codecs/vp8/include/vp8.h +++ b/modules/video_coding/codecs/vp8/include/vp8.h @@ -23,14 +23,14 @@ class VP8Encoder : public VideoEncoder { public: static std::unique_ptr Create(); - virtual ~VP8Encoder() {} + ~VP8Encoder() override {} }; // end of VP8Encoder class class VP8Decoder : public VideoDecoder { public: static std::unique_ptr Create(); - virtual ~VP8Decoder() {} + ~VP8Decoder() override {} }; // end of VP8Decoder class } // namespace webrtc diff --git a/modules/video_coding/codecs/vp9/include/vp9.h b/modules/video_coding/codecs/vp9/include/vp9.h index 172e69ee78..39dc138b23 100644 --- a/modules/video_coding/codecs/vp9/include/vp9.h +++ b/modules/video_coding/codecs/vp9/include/vp9.h @@ -23,7 +23,7 @@ class VP9Encoder : public VideoEncoder { static bool IsSupported(); static std::unique_ptr Create(); - virtual ~VP9Encoder() {} + ~VP9Encoder() override {} }; class VP9Decoder : public VideoDecoder { @@ -31,7 +31,7 @@ class VP9Decoder : public VideoDecoder { static bool IsSupported(); static std::unique_ptr Create(); - virtual ~VP9Decoder() {} + ~VP9Decoder() override {} }; } // namespace webrtc diff --git a/modules/video_coding/utility/moving_average.cc b/modules/video_coding/utility/moving_average.cc index 8076f93476..025899ce3a 100644 --- a/modules/video_coding/utility/moving_average.cc +++ b/modules/video_coding/utility/moving_average.cc @@ -15,6 +15,7 @@ namespace webrtc { MovingAverage::MovingAverage(size_t s) : sum_history_(s + 1, 0) {} +MovingAverage::~MovingAverage() = default; void MovingAverage::AddSample(int sample) { count_++; diff --git a/modules/video_coding/utility/moving_average.h b/modules/video_coding/utility/moving_average.h index 7df3d3dad6..0b7a700600 100644 --- a/modules/video_coding/utility/moving_average.h +++ b/modules/video_coding/utility/moving_average.h @@ -19,6 +19,7 @@ namespace webrtc { class MovingAverage { public: explicit MovingAverage(size_t s); + ~MovingAverage(); void AddSample(int sample); rtc::Optional GetAverage() const; rtc::Optional GetAverage(size_t num_samples) const; diff --git a/sdk/android/BUILD.gn b/sdk/android/BUILD.gn index 0d4b157f6c..6df1e61737 100644 --- a/sdk/android/BUILD.gn +++ b/sdk/android/BUILD.gn @@ -75,14 +75,6 @@ rtc_source_set("internal_jni") { deps = [ "../../rtc_base:checks", ] - - if (is_clang) { - # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163). - suppressed_configs += [ - "//build/config/clang:extra_warnings", - "//build/config/clang:find_bad_constructs", - ] - } } rtc_source_set("base_jni") { @@ -112,14 +104,6 @@ rtc_source_set("base_jni") { "../../rtc_base:rtc_base_approved", "../../system_wrappers:metrics_api", ] - - if (is_clang) { - # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163). - suppressed_configs += [ - "//build/config/clang:extra_warnings", - "//build/config/clang:find_bad_constructs", - ] - } } rtc_static_library("audio_jni") { @@ -373,14 +357,6 @@ rtc_static_library("video_jni") { configs += [ ":libjingle_peerconnection_jni_warnings_config" ] - if (is_clang) { - # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163). - suppressed_configs += [ - "//build/config/clang:extra_warnings", - "//build/config/clang:find_bad_constructs", - ] - } - # TODO(jschuh): Bug 1348: fix this warning. configs += [ "//build/config/compiler:no_size_t_to_int_warning" ] @@ -462,14 +438,6 @@ rtc_static_library("vp8_jni") { "src/jni/vp8codec.cc", ] - if (is_clang) { - # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163). - suppressed_configs += [ - "//build/config/clang:extra_warnings", - "//build/config/clang:find_bad_constructs", - ] - } - deps = [ ":base_jni", ":generated_vp8_jni", @@ -492,14 +460,6 @@ rtc_static_library("vp9_jni") { "src/jni/vp9codec.cc", ] - if (is_clang) { - # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163). - suppressed_configs += [ - "//build/config/clang:extra_warnings", - "//build/config/clang:find_bad_constructs", - ] - } - deps = [ ":base_jni", ":generated_vp9_jni", diff --git a/sdk/android/src/jni/androidmediadecoder.cc b/sdk/android/src/jni/androidmediadecoder.cc index ca013dd0c6..0a3d81a7fe 100644 --- a/sdk/android/src/jni/androidmediadecoder.cc +++ b/sdk/android/src/jni/androidmediadecoder.cc @@ -61,7 +61,7 @@ class MediaCodecVideoDecoder : public VideoDecoder, public rtc::MessageHandler { public: explicit MediaCodecVideoDecoder( JNIEnv* jni, VideoCodecType codecType, jobject render_egl_context); - virtual ~MediaCodecVideoDecoder(); + ~MediaCodecVideoDecoder() override; int32_t InitDecode(const VideoCodec* codecSettings, int32_t numberOfCores) override; diff --git a/sdk/android/src/jni/androidmediadecoder_jni.h b/sdk/android/src/jni/androidmediadecoder_jni.h index 1d8cc30539..b984dc5553 100644 --- a/sdk/android/src/jni/androidmediadecoder_jni.h +++ b/sdk/android/src/jni/androidmediadecoder_jni.h @@ -24,7 +24,7 @@ class MediaCodecVideoDecoderFactory : public cricket::WebRtcVideoDecoderFactory { public: MediaCodecVideoDecoderFactory(); - virtual ~MediaCodecVideoDecoderFactory(); + ~MediaCodecVideoDecoderFactory() override; void SetEGLContext(JNIEnv* jni, jobject render_egl_context); diff --git a/sdk/android/src/jni/androidmediaencoder.cc b/sdk/android/src/jni/androidmediaencoder.cc index b190a65d78..adc6d50d39 100644 --- a/sdk/android/src/jni/androidmediaencoder.cc +++ b/sdk/android/src/jni/androidmediaencoder.cc @@ -93,7 +93,7 @@ namespace { // this is the encoder queue from ViE encoder. class MediaCodecVideoEncoder : public VideoEncoder { public: - virtual ~MediaCodecVideoEncoder(); + ~MediaCodecVideoEncoder() override; MediaCodecVideoEncoder(JNIEnv* jni, const cricket::VideoCodec& codec, jobject egl_context); diff --git a/sdk/android/src/jni/androidmediaencoder_jni.h b/sdk/android/src/jni/androidmediaencoder_jni.h index bd9fc30b7b..4fd06bb8e2 100644 --- a/sdk/android/src/jni/androidmediaencoder_jni.h +++ b/sdk/android/src/jni/androidmediaencoder_jni.h @@ -24,7 +24,7 @@ class MediaCodecVideoEncoderFactory : public cricket::WebRtcVideoEncoderFactory { public: MediaCodecVideoEncoderFactory(); - virtual ~MediaCodecVideoEncoderFactory(); + ~MediaCodecVideoEncoderFactory() override; void SetEGLContext(JNIEnv* jni, jobject egl_context); diff --git a/sdk/android/src/jni/androidnetworkmonitor.cc b/sdk/android/src/jni/androidnetworkmonitor.cc index 9555eff3f6..84a545a14e 100644 --- a/sdk/android/src/jni/androidnetworkmonitor.cc +++ b/sdk/android/src/jni/androidnetworkmonitor.cc @@ -132,8 +132,18 @@ static NetworkInformation GetNetworkInformationFromJava( NetworkInformation::NetworkInformation() = default; +NetworkInformation::NetworkInformation(const NetworkInformation&) = default; + +NetworkInformation::NetworkInformation(NetworkInformation&&) = default; + NetworkInformation::~NetworkInformation() = default; +NetworkInformation& NetworkInformation::operator=(const NetworkInformation&) = + default; + +NetworkInformation& NetworkInformation::operator=(NetworkInformation&&) = + default; + std::string NetworkInformation::ToString() const { std::stringstream ss; ss << "NetInfo[name " << interface_name << "; handle " << handle << "; type " diff --git a/sdk/android/src/jni/androidnetworkmonitor.h b/sdk/android/src/jni/androidnetworkmonitor.h index 9e45d2b50f..58b6686bf9 100644 --- a/sdk/android/src/jni/androidnetworkmonitor.h +++ b/sdk/android/src/jni/androidnetworkmonitor.h @@ -47,7 +47,11 @@ struct NetworkInformation { std::vector ip_addresses; NetworkInformation(); + NetworkInformation(const NetworkInformation&); + NetworkInformation(NetworkInformation&&); ~NetworkInformation(); + NetworkInformation& operator=(const NetworkInformation&); + NetworkInformation& operator=(NetworkInformation&&); std::string ToString() const; }; diff --git a/sdk/android/src/jni/androidvideotracksource.cc b/sdk/android/src/jni/androidvideotracksource.cc index 7df2cb5dc1..4733cdf8d7 100644 --- a/sdk/android/src/jni/androidvideotracksource.cc +++ b/sdk/android/src/jni/androidvideotracksource.cc @@ -31,7 +31,7 @@ VideoRotation jintToVideoRotation(jint rotation) { } AndroidVideoTrackSource* AndroidVideoTrackSourceFromJavaProxy(jlong j_proxy) { - auto proxy_source = reinterpret_cast(j_proxy); + auto* proxy_source = reinterpret_cast(j_proxy); return reinterpret_cast(proxy_source->internal()); } @@ -51,6 +51,15 @@ AndroidVideoTrackSource::AndroidVideoTrackSource( RTC_LOG(LS_INFO) << "AndroidVideoTrackSource ctor"; camera_thread_checker_.DetachFromThread(); } +AndroidVideoTrackSource::~AndroidVideoTrackSource() = default; + +bool AndroidVideoTrackSource::is_screencast() const { + return is_screencast_; +} + +rtc::Optional AndroidVideoTrackSource::needs_denoising() const { + return false; +} void AndroidVideoTrackSource::SetState(SourceState state) { if (rtc::Thread::Current() != signaling_thread_) { @@ -66,6 +75,14 @@ void AndroidVideoTrackSource::SetState(SourceState state) { } } +AndroidVideoTrackSource::SourceState AndroidVideoTrackSource::state() const { + return state_; +} + +bool AndroidVideoTrackSource::remote() const { + return false; +} + void AndroidVideoTrackSource::OnByteBufferFrameCaptured(const void* frame_data, int length, int width, @@ -213,6 +230,11 @@ void AndroidVideoTrackSource::OnOutputFormatRequest(int width, video_adapter()->OnOutputFormatRequest(format); } +rtc::scoped_refptr +AndroidVideoTrackSource::surface_texture_helper() { + return surface_texture_helper_; +} + static void JNI_AndroidVideoTrackSourceObserver_OnByteBufferFrameCaptured( JNIEnv* jni, const JavaParamRef&, diff --git a/sdk/android/src/jni/androidvideotracksource.h b/sdk/android/src/jni/androidvideotracksource.h index c40203de53..fba5e84def 100644 --- a/sdk/android/src/jni/androidvideotracksource.h +++ b/sdk/android/src/jni/androidvideotracksource.h @@ -32,20 +32,21 @@ class AndroidVideoTrackSource : public rtc::AdaptedVideoTrackSource { JNIEnv* jni, const JavaRef& j_surface_texture_helper, bool is_screencast = false); + ~AndroidVideoTrackSource() override; - bool is_screencast() const override { return is_screencast_; } + bool is_screencast() const override; // Indicates that the encoder should denoise video before encoding it. // If it is not set, the default configuration is used which is different // depending on video codec. - rtc::Optional needs_denoising() const override { return false; } + rtc::Optional needs_denoising() const override; // Called by the native capture observer void SetState(SourceState state); - SourceState state() const override { return state_; } + SourceState state() const override; - bool remote() const override { return false; } + bool remote() const override; void OnByteBufferFrameCaptured(const void* frame_data, int length, @@ -69,9 +70,7 @@ class AndroidVideoTrackSource : public rtc::AdaptedVideoTrackSource { void OnOutputFormatRequest(int width, int height, int fps); - rtc::scoped_refptr surface_texture_helper() { - return surface_texture_helper_; - } + rtc::scoped_refptr surface_texture_helper(); private: rtc::Thread* signaling_thread_; diff --git a/sdk/android/src/jni/video_renderer.cc b/sdk/android/src/jni/video_renderer.cc index 6f7650a481..02ea1b31c0 100644 --- a/sdk/android/src/jni/video_renderer.cc +++ b/sdk/android/src/jni/video_renderer.cc @@ -26,7 +26,7 @@ class JavaVideoRendererWrapper : public rtc::VideoSinkInterface { JavaVideoRendererWrapper(JNIEnv* jni, const JavaRef& j_callbacks) : j_callbacks_(jni, j_callbacks) {} - virtual ~JavaVideoRendererWrapper() {} + ~JavaVideoRendererWrapper() override {} void OnFrame(const VideoFrame& video_frame) override { JNIEnv* env = AttachCurrentThreadIfNeeded(); diff --git a/sdk/android/src/jni/videodecoderfactorywrapper.cc b/sdk/android/src/jni/videodecoderfactorywrapper.cc index 47c136210b..be717f930b 100644 --- a/sdk/android/src/jni/videodecoderfactorywrapper.cc +++ b/sdk/android/src/jni/videodecoderfactorywrapper.cc @@ -25,6 +25,7 @@ VideoDecoderFactoryWrapper::VideoDecoderFactoryWrapper( JNIEnv* jni, const JavaRef& decoder_factory) : decoder_factory_(jni, decoder_factory) {} +VideoDecoderFactoryWrapper::~VideoDecoderFactoryWrapper() = default; std::unique_ptr VideoDecoderFactoryWrapper::CreateVideoDecoder( const SdpVideoFormat& format) { diff --git a/sdk/android/src/jni/videodecoderfactorywrapper.h b/sdk/android/src/jni/videodecoderfactorywrapper.h index 49ac849f93..a1716b10ba 100644 --- a/sdk/android/src/jni/videodecoderfactorywrapper.h +++ b/sdk/android/src/jni/videodecoderfactorywrapper.h @@ -25,6 +25,7 @@ class VideoDecoderFactoryWrapper : public VideoDecoderFactory { public: VideoDecoderFactoryWrapper(JNIEnv* jni, const JavaRef& decoder_factory); + ~VideoDecoderFactoryWrapper() override; std::vector GetSupportedFormats() const override; std::unique_ptr CreateVideoDecoder( diff --git a/sdk/android/src/jni/videodecoderwrapper.cc b/sdk/android/src/jni/videodecoderwrapper.cc index 6f34dd934f..ec27b00477 100644 --- a/sdk/android/src/jni/videodecoderwrapper.cc +++ b/sdk/android/src/jni/videodecoderwrapper.cc @@ -50,6 +50,8 @@ VideoDecoderWrapper::VideoDecoderWrapper(JNIEnv* jni, decoder_thread_checker_.DetachFromThread(); } +VideoDecoderWrapper::~VideoDecoderWrapper() = default; + int32_t VideoDecoderWrapper::InitDecode(const VideoCodec* codec_settings, int32_t number_of_cores) { RTC_DCHECK_RUN_ON(&decoder_thread_checker_); @@ -194,6 +196,11 @@ void VideoDecoderWrapper::OnDecodedFrame( decoder_qp ? decoder_qp : frame_extra_info.qp); } +VideoDecoderWrapper::FrameExtraInfo::FrameExtraInfo() = default; +VideoDecoderWrapper::FrameExtraInfo::FrameExtraInfo(const FrameExtraInfo&) = + default; +VideoDecoderWrapper::FrameExtraInfo::~FrameExtraInfo() = default; + int32_t VideoDecoderWrapper::HandleReturnCode(JNIEnv* jni, const JavaRef& j_value, const char* method_name) { diff --git a/sdk/android/src/jni/videodecoderwrapper.h b/sdk/android/src/jni/videodecoderwrapper.h index c3cda742a1..6e5b5c09b8 100644 --- a/sdk/android/src/jni/videodecoderwrapper.h +++ b/sdk/android/src/jni/videodecoderwrapper.h @@ -28,6 +28,7 @@ namespace jni { class VideoDecoderWrapper : public VideoDecoder { public: VideoDecoderWrapper(JNIEnv* jni, const JavaRef& decoder); + ~VideoDecoderWrapper() override; int32_t InitDecode(const VideoCodec* codec_settings, int32_t number_of_cores) override; @@ -67,6 +68,10 @@ class VideoDecoderWrapper : public VideoDecoder { uint32_t timestamp_rtp; int64_t timestamp_ntp; rtc::Optional qp; + + FrameExtraInfo(); + FrameExtraInfo(const FrameExtraInfo&); + ~FrameExtraInfo(); }; int32_t InitDecodeInternal(JNIEnv* jni) RTC_RUN_ON(decoder_thread_checker_); diff --git a/sdk/android/src/jni/videoencoderfactorywrapper.cc b/sdk/android/src/jni/videoencoderfactorywrapper.cc index be2906856b..2c3d111479 100644 --- a/sdk/android/src/jni/videoencoderfactorywrapper.cc +++ b/sdk/android/src/jni/videoencoderfactorywrapper.cc @@ -31,6 +31,7 @@ VideoEncoderFactoryWrapper::VideoEncoderFactoryWrapper( supported_formats_ = JavaToNativeVector( jni, j_supported_codecs, &VideoCodecInfoToSdpVideoFormat); } +VideoEncoderFactoryWrapper::~VideoEncoderFactoryWrapper() = default; std::unique_ptr VideoEncoderFactoryWrapper::CreateVideoEncoder( const SdpVideoFormat& format) { @@ -44,6 +45,11 @@ std::unique_ptr VideoEncoderFactoryWrapper::CreateVideoEncoder( return JavaToNativeVideoEncoder(jni, encoder); } +std::vector VideoEncoderFactoryWrapper::GetSupportedFormats() + const { + return supported_formats_; +} + VideoEncoderFactory::CodecInfo VideoEncoderFactoryWrapper::QueryVideoEncoder( const SdpVideoFormat& format) const { JNIEnv* jni = AttachCurrentThreadIfNeeded(); diff --git a/sdk/android/src/jni/videoencoderfactorywrapper.h b/sdk/android/src/jni/videoencoderfactorywrapper.h index af9557cf9c..2c2dadcaec 100644 --- a/sdk/android/src/jni/videoencoderfactorywrapper.h +++ b/sdk/android/src/jni/videoencoderfactorywrapper.h @@ -27,14 +27,13 @@ class VideoEncoderFactoryWrapper : public VideoEncoderFactory { public: VideoEncoderFactoryWrapper(JNIEnv* jni, const JavaRef& encoder_factory); + ~VideoEncoderFactoryWrapper() override; std::unique_ptr CreateVideoEncoder( const SdpVideoFormat& format) override; // Returns a list of supported codecs in order of preference. - std::vector GetSupportedFormats() const override { - return supported_formats_; - } + std::vector GetSupportedFormats() const override; CodecInfo QueryVideoEncoder(const SdpVideoFormat& format) const override; diff --git a/sdk/android/src/jni/videoencoderwrapper.cc b/sdk/android/src/jni/videoencoderwrapper.cc index 63dd3636ca..ae2f6ade9b 100644 --- a/sdk/android/src/jni/videoencoderwrapper.cc +++ b/sdk/android/src/jni/videoencoderwrapper.cc @@ -43,6 +43,7 @@ VideoEncoderWrapper::VideoEncoderWrapper(JNIEnv* jni, picture_id_ = random.Rand() & 0x7FFF; tl0_pic_idx_ = random.Rand(); } +VideoEncoderWrapper::~VideoEncoderWrapper() = default; int32_t VideoEncoderWrapper::InitEncode(const VideoCodec* codec_settings, int32_t number_of_cores, @@ -207,6 +208,10 @@ VideoEncoderWrapper::ScalingSettings VideoEncoderWrapper::GetScalingSettings() } } +bool VideoEncoderWrapper::SupportsNativeHandle() const { + return true; +} + const char* VideoEncoderWrapper::ImplementationName() const { return implementation_name_.c_str(); } diff --git a/sdk/android/src/jni/videoencoderwrapper.h b/sdk/android/src/jni/videoencoderwrapper.h index fe553e9390..f25e83db69 100644 --- a/sdk/android/src/jni/videoencoderwrapper.h +++ b/sdk/android/src/jni/videoencoderwrapper.h @@ -30,6 +30,7 @@ namespace jni { class VideoEncoderWrapper : public VideoEncoder { public: VideoEncoderWrapper(JNIEnv* jni, const JavaRef& j_encoder); + ~VideoEncoderWrapper() override; int32_t InitEncode(const VideoCodec* codec_settings, int32_t number_of_cores, @@ -51,7 +52,7 @@ class VideoEncoderWrapper : public VideoEncoder { ScalingSettings GetScalingSettings() const override; - bool SupportsNativeHandle() const override { return true; } + bool SupportsNativeHandle() const override; // Should only be called by JNI. void OnEncodedFrame(JNIEnv* jni, diff --git a/sdk/android/src/jni/videoframe.cc b/sdk/android/src/jni/videoframe.cc index 92e4a661f2..e1fb4315a4 100644 --- a/sdk/android/src/jni/videoframe.cc +++ b/sdk/android/src/jni/videoframe.cc @@ -49,7 +49,7 @@ class AndroidVideoI420Buffer : public I420BufferInterface { int width, int height, const JavaRef& j_video_frame_buffer); - ~AndroidVideoI420Buffer(); + ~AndroidVideoI420Buffer() override; private: const uint8_t* DataY() const override { return data_y_; }