Fix chromium warnings for SdpVideoFormat.
Bug: webrtc:163
Change-Id: I29ad3c00116692f047456df7721ba636bbb2ca89
Reviewed-on: https://webrtc-review.googlesource.com/64723
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22618}
diff --git a/api/BUILD.gn b/api/BUILD.gn
index 7b0dc09..1a2ae4b 100644
--- a/api/BUILD.gn
+++ b/api/BUILD.gn
@@ -242,6 +242,7 @@
rtc_source_set("encoded_frame_api") {
visibility = [ "*" ]
sources = [
+ "video/encoded_frame.cc",
"video/encoded_frame.h",
]
@@ -276,11 +277,6 @@
"../rtc_base:rtc_base_approved",
"../video:video_stream_decoder_impl",
]
-
- if (!build_with_chromium && is_clang) {
- # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
- suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
- }
}
rtc_source_set("video_frame_api_i420") {
diff --git a/api/video/encoded_frame.cc b/api/video/encoded_frame.cc
new file mode 100644
index 0000000..37da35f
--- /dev/null
+++ b/api/video/encoded_frame.cc
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2018 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.
+ */
+
+#include "api/video/encoded_frame.h"
+
+namespace webrtc {
+namespace video_coding {
+
+bool EncodedFrame::delayed_by_retransmission() const { return 0; }
+
+} // namespace video_coding
+} // namespace webrtc
diff --git a/api/video/encoded_frame.h b/api/video/encoded_frame.h
index 345cc21..1e919d0 100644
--- a/api/video/encoded_frame.h
+++ b/api/video/encoded_frame.h
@@ -70,7 +70,7 @@
// This information is currently needed by the timing calculation class.
// TODO(philipel): Remove this function when a new timing class has
// been implemented.
- virtual bool delayed_by_retransmission() const { return 0; }
+ virtual bool delayed_by_retransmission() const;
size_t size() const { return _length; }
diff --git a/api/video_codecs/BUILD.gn b/api/video_codecs/BUILD.gn
index 5da8980..e2ac074 100644
--- a/api/video_codecs/BUILD.gn
+++ b/api/video_codecs/BUILD.gn
@@ -15,7 +15,9 @@
rtc_source_set("video_codecs_api") {
visibility = [ "*" ]
sources = [
+ "sdp_video_format.cc",
"sdp_video_format.h",
+ "video_decoder.cc",
"video_decoder.h",
"video_decoder_factory.h",
"video_encoder.cc",
diff --git a/api/video_codecs/sdp_video_format.cc b/api/video_codecs/sdp_video_format.cc
new file mode 100644
index 0000000..9f19602
--- /dev/null
+++ b/api/video_codecs/sdp_video_format.cc
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2018 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.
+ */
+
+#include "api/video_codecs/sdp_video_format.h"
+
+namespace webrtc {
+
+SdpVideoFormat::SdpVideoFormat(const std::string& name) : name(name) {}
+
+SdpVideoFormat::SdpVideoFormat(const std::string& name,
+ const Parameters& parameters)
+ : name(name), parameters(parameters) {}
+
+SdpVideoFormat::SdpVideoFormat(const SdpVideoFormat&) = default;
+SdpVideoFormat::SdpVideoFormat(SdpVideoFormat&&) = default;
+
+SdpVideoFormat::~SdpVideoFormat() = default;
+
+bool operator==(const SdpVideoFormat& a, const SdpVideoFormat& b) {
+ return a.name == b.name && a.parameters == b.parameters;
+}
+
+} // namespace webrtc
diff --git a/api/video_codecs/sdp_video_format.h b/api/video_codecs/sdp_video_format.h
index 542353a..eae06cd 100644
--- a/api/video_codecs/sdp_video_format.h
+++ b/api/video_codecs/sdp_video_format.h
@@ -21,14 +21,14 @@
struct SdpVideoFormat {
using Parameters = std::map<std::string, std::string>;
- explicit SdpVideoFormat(const std::string& name) : name(name) {}
- SdpVideoFormat(const std::string& name, const Parameters& parameters)
- : name(name), parameters(parameters) {}
+ explicit SdpVideoFormat(const std::string& name);
+ SdpVideoFormat(const std::string& name, const Parameters& parameters);
+ SdpVideoFormat(const SdpVideoFormat&);
+ SdpVideoFormat(SdpVideoFormat&&);
- friend bool operator==(const SdpVideoFormat& a, const SdpVideoFormat& b) {
- return a.name == b.name && a.parameters == b.parameters;
- }
+ ~SdpVideoFormat();
+ friend bool operator==(const SdpVideoFormat& a, const SdpVideoFormat& b);
friend bool operator!=(const SdpVideoFormat& a, const SdpVideoFormat& b) {
return !(a == b);
}
diff --git a/api/video_codecs/video_decoder.cc b/api/video_codecs/video_decoder.cc
new file mode 100644
index 0000000..4e8db88
--- /dev/null
+++ b/api/video_codecs/video_decoder.cc
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2018 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.
+ */
+
+#include "api/video_codecs/video_decoder.h"
+
+namespace webrtc {
+
+int32_t DecodedImageCallback::Decoded(VideoFrame& decodedImage,
+ int64_t decode_time_ms) {
+ // The default implementation ignores custom decode time value.
+ return Decoded(decodedImage);
+}
+
+void DecodedImageCallback::Decoded(VideoFrame& decodedImage,
+ rtc::Optional<int32_t> decode_time_ms,
+ rtc::Optional<uint8_t> qp) {
+ Decoded(decodedImage, decode_time_ms.value_or(-1));
+}
+
+int32_t DecodedImageCallback::ReceivedDecodedReferenceFrame(
+ const uint64_t pictureId) {
+ return -1;
+}
+
+int32_t DecodedImageCallback::ReceivedDecodedFrame(const uint64_t pictureId) {
+ return -1;
+}
+
+bool VideoDecoder::PrefersLateDecoding() const {
+ return true;
+}
+
+const char* VideoDecoder::ImplementationName() const {
+ return "unknown";
+}
+
+} // namespace webrtc
diff --git a/api/video_codecs/video_decoder.h b/api/video_codecs/video_decoder.h
index 5897901..660f444 100644
--- a/api/video_codecs/video_decoder.h
+++ b/api/video_codecs/video_decoder.h
@@ -36,24 +36,17 @@
// decode time excluding waiting time for any previous pending frame to
// return. This is necessary for breaking positive feedback in the delay
// estimation when the decoder has a single output buffer.
- virtual int32_t Decoded(VideoFrame& decodedImage, int64_t decode_time_ms) {
- // The default implementation ignores custom decode time value.
- return Decoded(decodedImage);
- }
+ virtual int32_t Decoded(VideoFrame& decodedImage, int64_t decode_time_ms);
+
// TODO(sakal): Remove other implementations when upstream projects have been
// updated.
virtual void Decoded(VideoFrame& decodedImage,
rtc::Optional<int32_t> decode_time_ms,
- rtc::Optional<uint8_t> qp) {
- Decoded(decodedImage,
- decode_time_ms ? static_cast<int32_t>(*decode_time_ms) : -1);
- }
+ rtc::Optional<uint8_t> qp);
- virtual int32_t ReceivedDecodedReferenceFrame(const uint64_t pictureId) {
- return -1;
- }
+ virtual int32_t ReceivedDecodedReferenceFrame(const uint64_t pictureId);
- virtual int32_t ReceivedDecodedFrame(const uint64_t pictureId) { return -1; }
+ virtual int32_t ReceivedDecodedFrame(const uint64_t pictureId);
};
class VideoDecoder {
@@ -77,9 +70,9 @@
// Returns true if the decoder prefer to decode frames late.
// That is, it can not decode infinite number of frames before the decoded
// frame is consumed.
- virtual bool PrefersLateDecoding() const { return true; }
+ virtual bool PrefersLateDecoding() const;
- virtual const char* ImplementationName() const { return "unknown"; }
+ virtual const char* ImplementationName() const;
};
} // namespace webrtc
diff --git a/modules/video_coding/BUILD.gn b/modules/video_coding/BUILD.gn
index ad2d359..d261dce 100644
--- a/modules/video_coding/BUILD.gn
+++ b/modules/video_coding/BUILD.gn
@@ -168,6 +168,7 @@
"include/video_codec_interface.h",
"include/video_coding_defines.h",
"include/video_error_codes.h",
+ "video_coding_defines.cc",
]
deps = [
"..:module_api",
diff --git a/modules/video_coding/codec_timer.cc b/modules/video_coding/codec_timer.cc
index 5a9b6e4..725f025 100644
--- a/modules/video_coding/codec_timer.cc
+++ b/modules/video_coding/codec_timer.cc
@@ -25,6 +25,7 @@
VCMCodecTimer::VCMCodecTimer()
: ignored_sample_count_(0), filter_(kPercentile) {}
+VCMCodecTimer::~VCMCodecTimer() = default;
void VCMCodecTimer::AddTiming(int64_t decode_time_ms, int64_t now_ms) {
// Ignore the first |kIgnoredSampleCount| samples.
diff --git a/modules/video_coding/codec_timer.h b/modules/video_coding/codec_timer.h
index d112959..1a46834 100644
--- a/modules/video_coding/codec_timer.h
+++ b/modules/video_coding/codec_timer.h
@@ -22,6 +22,7 @@
class VCMCodecTimer {
public:
VCMCodecTimer();
+ ~VCMCodecTimer();
// Add a new decode time to the filter.
void AddTiming(int64_t new_decode_time_ms, int64_t now_ms);
diff --git a/modules/video_coding/frame_buffer2.cc b/modules/video_coding/frame_buffer2.cc
index 86f6e42..9cf3652 100644
--- a/modules/video_coding/frame_buffer2.cc
+++ b/modules/video_coding/frame_buffer2.cc
@@ -602,5 +602,9 @@
num_frames_buffered_ = 0;
}
+FrameBuffer::FrameInfo::FrameInfo() = default;
+FrameBuffer::FrameInfo::FrameInfo(FrameInfo&&) = default;
+FrameBuffer::FrameInfo::~FrameInfo() = default;
+
} // namespace video_coding
} // namespace webrtc
diff --git a/modules/video_coding/frame_buffer2.h b/modules/video_coding/frame_buffer2.h
index 1197e82..bb57b83 100644
--- a/modules/video_coding/frame_buffer2.h
+++ b/modules/video_coding/frame_buffer2.h
@@ -80,6 +80,10 @@
private:
struct FrameInfo {
+ FrameInfo();
+ FrameInfo(FrameInfo&&);
+ ~FrameInfo();
+
// The maximum number of frames that can depend on this frame.
static constexpr size_t kMaxNumDependentFrames = 8;
diff --git a/modules/video_coding/include/video_coding_defines.h b/modules/video_coding/include/video_coding_defines.h
index e000bc6..ea3e3ec 100644
--- a/modules/video_coding/include/video_coding_defines.h
+++ b/modules/video_coding/include/video_coding_defines.h
@@ -73,12 +73,10 @@
rtc::Optional<uint8_t> qp,
VideoContentType content_type) = 0;
- virtual int32_t ReceivedDecodedReferenceFrame(const uint64_t pictureId) {
- return -1;
- }
+ virtual int32_t ReceivedDecodedReferenceFrame(const uint64_t pictureId);
// Called when the current receive codec changes.
- virtual void OnIncomingPayloadType(int payload_type) {}
- virtual void OnDecoderImplementationName(const char* implementation_name) {}
+ virtual void OnIncomingPayloadType(int payload_type);
+ virtual void OnDecoderImplementationName(const char* implementation_name);
protected:
virtual ~VCMReceiveCallback() {}
diff --git a/modules/video_coding/video_coding_defines.cc b/modules/video_coding/video_coding_defines.cc
new file mode 100644
index 0000000..0a9cb3a
--- /dev/null
+++ b/modules/video_coding/video_coding_defines.cc
@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) 2018 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.
+ */
+
+#include "modules/video_coding/include/video_coding_defines.h"
+
+namespace webrtc {
+
+int32_t VCMReceiveCallback::ReceivedDecodedReferenceFrame(
+ const uint64_t pictureId) {
+ return -1;
+}
+void VCMReceiveCallback::OnIncomingPayloadType(int payload_type) {}
+void VCMReceiveCallback::OnDecoderImplementationName(
+ const char* implementation_name) {}
+
+} // namespace webrtc
diff --git a/video/BUILD.gn b/video/BUILD.gn
index 8a996a3..f3d2c6d 100644
--- a/video/BUILD.gn
+++ b/video/BUILD.gn
@@ -121,11 +121,6 @@
"../rtc_base:rtc_task_queue_api",
"../system_wrappers:system_wrappers",
]
-
- if (!build_with_chromium && is_clang) {
- # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
- suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
- }
}
if (rtc_include_tests) {
diff --git a/video/video_stream_decoder_impl.cc b/video/video_stream_decoder_impl.cc
index 6d262b6..fc16490 100644
--- a/video/video_stream_decoder_impl.cc
+++ b/video/video_stream_decoder_impl.cc
@@ -43,7 +43,7 @@
: frame_(std::move(frame)),
video_stream_decoder_(video_stream_decoder) {}
- bool Run() {
+ bool Run() override {
video_stream_decoder_->OnFrame(std::move(frame_));
return true;
}