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}
This commit is contained in:
Niels Möller
2018-03-27 08:31:45 +02:00
committed by Commit Bot
parent 27153ba7c5
commit be682d47ac
17 changed files with 148 additions and 37 deletions

View File

@ -242,6 +242,7 @@ rtc_source_set("video_frame_api") {
rtc_source_set("encoded_frame_api") { rtc_source_set("encoded_frame_api") {
visibility = [ "*" ] visibility = [ "*" ]
sources = [ sources = [
"video/encoded_frame.cc",
"video/encoded_frame.h", "video/encoded_frame.h",
] ]
@ -276,11 +277,6 @@ rtc_source_set("video_stream_decoder_create") {
"../rtc_base:rtc_base_approved", "../rtc_base:rtc_base_approved",
"../video:video_stream_decoder_impl", "../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") { rtc_source_set("video_frame_api_i420") {

View File

@ -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

View File

@ -70,7 +70,7 @@ class EncodedFrame : public webrtc::VCMEncodedFrame {
// This information is currently needed by the timing calculation class. // This information is currently needed by the timing calculation class.
// TODO(philipel): Remove this function when a new timing class has // TODO(philipel): Remove this function when a new timing class has
// been implemented. // been implemented.
virtual bool delayed_by_retransmission() const { return 0; } virtual bool delayed_by_retransmission() const;
size_t size() const { return _length; } size_t size() const { return _length; }

View File

@ -15,7 +15,9 @@ if (is_android) {
rtc_source_set("video_codecs_api") { rtc_source_set("video_codecs_api") {
visibility = [ "*" ] visibility = [ "*" ]
sources = [ sources = [
"sdp_video_format.cc",
"sdp_video_format.h", "sdp_video_format.h",
"video_decoder.cc",
"video_decoder.h", "video_decoder.h",
"video_decoder_factory.h", "video_decoder_factory.h",
"video_encoder.cc", "video_encoder.cc",

View File

@ -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

View File

@ -21,14 +21,14 @@ namespace webrtc {
struct SdpVideoFormat { struct SdpVideoFormat {
using Parameters = std::map<std::string, std::string>; using Parameters = std::map<std::string, std::string>;
explicit SdpVideoFormat(const std::string& name) : name(name) {} explicit SdpVideoFormat(const std::string& name);
SdpVideoFormat(const std::string& name, const Parameters& parameters) SdpVideoFormat(const std::string& name, const Parameters& parameters);
: name(name), parameters(parameters) {} SdpVideoFormat(const SdpVideoFormat&);
SdpVideoFormat(SdpVideoFormat&&);
friend bool operator==(const SdpVideoFormat& a, const SdpVideoFormat& b) { ~SdpVideoFormat();
return a.name == b.name && a.parameters == b.parameters;
}
friend bool operator==(const SdpVideoFormat& a, const SdpVideoFormat& b);
friend bool operator!=(const SdpVideoFormat& a, const SdpVideoFormat& b) { friend bool operator!=(const SdpVideoFormat& a, const SdpVideoFormat& b) {
return !(a == b); return !(a == b);
} }

View File

@ -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

View File

@ -36,24 +36,17 @@ class DecodedImageCallback {
// decode time excluding waiting time for any previous pending frame to // decode time excluding waiting time for any previous pending frame to
// return. This is necessary for breaking positive feedback in the delay // return. This is necessary for breaking positive feedback in the delay
// estimation when the decoder has a single output buffer. // estimation when the decoder has a single output buffer.
virtual int32_t Decoded(VideoFrame& decodedImage, int64_t decode_time_ms) { virtual int32_t Decoded(VideoFrame& decodedImage, int64_t decode_time_ms);
// The default implementation ignores custom decode time value.
return Decoded(decodedImage);
}
// TODO(sakal): Remove other implementations when upstream projects have been // TODO(sakal): Remove other implementations when upstream projects have been
// updated. // updated.
virtual void Decoded(VideoFrame& decodedImage, virtual void Decoded(VideoFrame& decodedImage,
rtc::Optional<int32_t> decode_time_ms, rtc::Optional<int32_t> decode_time_ms,
rtc::Optional<uint8_t> qp) { rtc::Optional<uint8_t> qp);
Decoded(decodedImage,
decode_time_ms ? static_cast<int32_t>(*decode_time_ms) : -1);
}
virtual int32_t ReceivedDecodedReferenceFrame(const uint64_t pictureId) { virtual int32_t ReceivedDecodedReferenceFrame(const uint64_t pictureId);
return -1;
}
virtual int32_t ReceivedDecodedFrame(const uint64_t pictureId) { return -1; } virtual int32_t ReceivedDecodedFrame(const uint64_t pictureId);
}; };
class VideoDecoder { class VideoDecoder {
@ -77,9 +70,9 @@ class VideoDecoder {
// Returns true if the decoder prefer to decode frames late. // Returns true if the decoder prefer to decode frames late.
// That is, it can not decode infinite number of frames before the decoded // That is, it can not decode infinite number of frames before the decoded
// frame is consumed. // 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 } // namespace webrtc

View File

@ -168,6 +168,7 @@ rtc_source_set("video_codec_interface") {
"include/video_codec_interface.h", "include/video_codec_interface.h",
"include/video_coding_defines.h", "include/video_coding_defines.h",
"include/video_error_codes.h", "include/video_error_codes.h",
"video_coding_defines.cc",
] ]
deps = [ deps = [
"..:module_api", "..:module_api",

View File

@ -25,6 +25,7 @@ const int64_t kTimeLimitMs = 10000;
VCMCodecTimer::VCMCodecTimer() VCMCodecTimer::VCMCodecTimer()
: ignored_sample_count_(0), filter_(kPercentile) {} : ignored_sample_count_(0), filter_(kPercentile) {}
VCMCodecTimer::~VCMCodecTimer() = default;
void VCMCodecTimer::AddTiming(int64_t decode_time_ms, int64_t now_ms) { void VCMCodecTimer::AddTiming(int64_t decode_time_ms, int64_t now_ms) {
// Ignore the first |kIgnoredSampleCount| samples. // Ignore the first |kIgnoredSampleCount| samples.

View File

@ -22,6 +22,7 @@ namespace webrtc {
class VCMCodecTimer { class VCMCodecTimer {
public: public:
VCMCodecTimer(); VCMCodecTimer();
~VCMCodecTimer();
// Add a new decode time to the filter. // Add a new decode time to the filter.
void AddTiming(int64_t new_decode_time_ms, int64_t now_ms); void AddTiming(int64_t new_decode_time_ms, int64_t now_ms);

View File

@ -602,5 +602,9 @@ void FrameBuffer::ClearFramesAndHistory() {
num_frames_buffered_ = 0; num_frames_buffered_ = 0;
} }
FrameBuffer::FrameInfo::FrameInfo() = default;
FrameBuffer::FrameInfo::FrameInfo(FrameInfo&&) = default;
FrameBuffer::FrameInfo::~FrameInfo() = default;
} // namespace video_coding } // namespace video_coding
} // namespace webrtc } // namespace webrtc

View File

@ -80,6 +80,10 @@ class FrameBuffer {
private: private:
struct FrameInfo { struct FrameInfo {
FrameInfo();
FrameInfo(FrameInfo&&);
~FrameInfo();
// The maximum number of frames that can depend on this frame. // The maximum number of frames that can depend on this frame.
static constexpr size_t kMaxNumDependentFrames = 8; static constexpr size_t kMaxNumDependentFrames = 8;

View File

@ -73,12 +73,10 @@ class VCMReceiveCallback {
rtc::Optional<uint8_t> qp, rtc::Optional<uint8_t> qp,
VideoContentType content_type) = 0; VideoContentType content_type) = 0;
virtual int32_t ReceivedDecodedReferenceFrame(const uint64_t pictureId) { virtual int32_t ReceivedDecodedReferenceFrame(const uint64_t pictureId);
return -1;
}
// Called when the current receive codec changes. // Called when the current receive codec changes.
virtual void OnIncomingPayloadType(int payload_type) {} virtual void OnIncomingPayloadType(int payload_type);
virtual void OnDecoderImplementationName(const char* implementation_name) {} virtual void OnDecoderImplementationName(const char* implementation_name);
protected: protected:
virtual ~VCMReceiveCallback() {} virtual ~VCMReceiveCallback() {}

View File

@ -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

View File

@ -121,11 +121,6 @@ rtc_source_set("video_stream_decoder_impl") {
"../rtc_base:rtc_task_queue_api", "../rtc_base:rtc_task_queue_api",
"../system_wrappers:system_wrappers", "../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) { if (rtc_include_tests) {

View File

@ -43,7 +43,7 @@ void VideoStreamDecoderImpl::OnFrame(
: frame_(std::move(frame)), : frame_(std::move(frame)),
video_stream_decoder_(video_stream_decoder) {} video_stream_decoder_(video_stream_decoder) {}
bool Run() { bool Run() override {
video_stream_decoder_->OnFrame(std::move(frame_)); video_stream_decoder_->OnFrame(std::move(frame_));
return true; return true;
} }