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:
@ -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") {
|
||||||
|
|||||||
19
api/video/encoded_frame.cc
Normal file
19
api/video/encoded_frame.cc
Normal 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
|
||||||
@ -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; }
|
||||||
|
|
||||||
|
|||||||
@ -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",
|
||||||
|
|||||||
30
api/video_codecs/sdp_video_format.cc
Normal file
30
api/video_codecs/sdp_video_format.cc
Normal 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
|
||||||
@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
44
api/video_codecs/video_decoder.cc
Normal file
44
api/video_codecs/video_decoder.cc
Normal 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
|
||||||
@ -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
|
||||||
|
|||||||
@ -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",
|
||||||
|
|||||||
@ -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.
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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;
|
||||||
|
|
||||||
|
|||||||
@ -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() {}
|
||||||
|
|||||||
23
modules/video_coding/video_coding_defines.cc
Normal file
23
modules/video_coding/video_coding_defines.cc
Normal 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
|
||||||
@ -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) {
|
||||||
|
|||||||
@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user