webrtc/modules/video_coding
Henrik Boström 48258acabf [Overuse] Implement Resource and ResourceUsageListener.
The Resource interface (previously a skeleton not used outside of
testing) is updated to inform listeners of changes to resource
usage. Debugging methods are removed (Name, UsageUnitsOfMeasurements,
CurrentUsage). The interface is implemented by
OveruseFrameDetectorResourceAdaptationModule's inner classes
EncodeUsageResource and QualityScalerResource.

The new ResourceUsageListener interface is implemented by
OveruseFrameDetectorResourceAdaptationModule. In order to avoid adding
AdaptationObserverInterface::AdaptReason to the ResourceUsageListener
interface, the module figures out if the reason is "kCpu" or "kQuality"
by looking which Resource object triggered
OnResourceUsageStateMeasured(). These resources no longer need an
explicit reference to OveruseFrameDetectorResourceAdaptationModule and
could potentially be used by a different module.

In this CL, AdaptationObserverInterface::AdaptDown()'s return value is
still needed by QualityScaler. This is mirrored in the return value of
ResourceUsageListener::OnResourceUsageStateMeasured(). A TODO is added
to remove it and a comment explains how the current implementation
seems to break the contract of the method (as was the case prior to
this CL).

Follow-up work include:
- Move EncodeUsageResource and QualityScalerResource to separate files.
- Make resources injectable, allowing fake resources in testing and
  removing OnResourceOveruseForTesting() methods.
  (Investigate adding the necessary input signals to the Resource
  interface or relevant sub-interfaces so that the module does not need
  to know which Resource implementation is used.)
- And more! See whiteboard :)

Bug: webrtc:11222
Change-Id: I0a46ace4a2e617874e3ee97e67e3a199fef420a2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/168180
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Evan Shrubsole <eshr@google.com>
Cr-Commit-Position: refs/heads/master@{#30469}
2020-02-06 12:45:14 +00:00
..
codecs Reland "[VP9] Shift spatial layers on RTP level to always start from 0." 2020-02-04 10:06:44 +00:00
include Delete header file mock_vcm_callbacks.h 2020-02-04 14:20:46 +00:00
test Include module_common_types.h only where needed 2019-09-24 08:22:38 +00:00
utility [Overuse] Implement Resource and ResourceUsageListener. 2020-02-06 12:45:14 +00:00
BUILD.gn Add helper to calculate frame dependencies based on encoder buffer usage 2020-02-05 16:19:10 +00:00
codec_timer.cc [Cleanup] Add missing #include. Remove useless ones. IWYU part 2. 2018-11-28 18:25:07 +00:00
codec_timer.h Include module_common_types.h only where needed 2019-09-24 08:22:38 +00:00
decoder_database.cc Format almost everything. 2019-07-08 13:45:15 +00:00
decoder_database.h Refactoring PayloadRouter. 2018-07-17 14:46:15 +00:00
decoding_state.cc Concatenate string literals at compile time. 2020-01-14 14:47:48 +00:00
decoding_state.h Delete root header file typedef.h. 2018-07-25 14:59:26 +00:00
decoding_state_unittest.cc Format almost everything. 2019-07-08 13:45:15 +00:00
DEPS Signal requested resolution alignment requirements from sinks to sources. 2019-12-19 10:39:04 +00:00
encoded_frame.cc Delete VCMEncodedFrame::VerifyAndAllocate 2019-10-04 14:16:49 +00:00
encoded_frame.h VideoReceiveStream: Enable encoded frame sink. 2019-12-03 15:55:04 +00:00
fec_controller_default.cc Format almost everything. 2019-07-08 13:45:15 +00:00
fec_controller_default.h Format almost everything. 2019-07-08 13:45:15 +00:00
fec_controller_unittest.cc Format almost everything. 2019-07-08 13:45:15 +00:00
fec_rate_table.h Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
frame_buffer.cc Refactor legacy FrameBuffer to use EncodedImageBuffer::Realloc 2019-09-30 09:48:26 +00:00
frame_buffer.h Refactor legacy FrameBuffer to use EncodedImageBuffer::Realloc 2019-09-30 09:48:26 +00:00
frame_buffer2.cc Remove unused NextFrame function from FrameBuffer. 2020-01-30 12:54:08 +00:00
frame_buffer2.h Remove unused NextFrame function from FrameBuffer. 2020-01-30 12:54:08 +00:00
frame_buffer2_unittest.cc Remove unused NextFrame function from FrameBuffer. 2020-01-30 12:54:08 +00:00
frame_dependencies_calculator.cc Add helper to calculate frame dependencies based on encoder buffer usage 2020-02-05 16:19:10 +00:00
frame_dependencies_calculator.h Add helper to calculate frame dependencies based on encoder buffer usage 2020-02-05 16:19:10 +00:00
frame_dependencies_calculator_unittest.cc Add helper to calculate frame dependencies based on encoder buffer usage 2020-02-05 16:19:10 +00:00
frame_object.cc Remove unused RtpFrameObject ctor. 2019-10-01 11:23:26 +00:00
frame_object.h Remove unused RtpFrameObject ctor. 2019-10-01 11:23:26 +00:00
generic_decoder.cc Add processing time to VideoFrame 2020-01-16 14:11:15 +00:00
generic_decoder.h Add processing time to VideoFrame 2020-01-16 14:11:15 +00:00
generic_decoder_unittest.cc Add processing time to VideoFrame 2020-01-16 14:11:15 +00:00
h264_sprop_parameter_sets.cc Format almost everything. 2019-07-08 13:45:15 +00:00
h264_sprop_parameter_sets.h (4) Rename files to snake_case: update BUILD.gn, include paths, header guards, and DEPS entries 2019-01-11 17:11:39 +00:00
h264_sprop_parameter_sets_unittest.cc Fully qualify googletest symbols. 2019-04-09 17:18:20 +00:00
h264_sps_pps_tracker.cc in PacketBuffer::Packet pass payload using smart buffer 2019-12-03 14:55:54 +00:00
h264_sps_pps_tracker.h in PacketBuffer::Packet pass payload using smart buffer 2019-12-03 14:55:54 +00:00
h264_sps_pps_tracker_unittest.cc in PacketBuffer::Packet pass payload using smart buffer 2019-12-03 14:55:54 +00:00
histogram.cc [Cleanup] Add missing #include. Remove useless ones. IWYU part 2. 2018-11-28 18:25:07 +00:00
histogram.h Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
histogram_unittest.cc Format almost everything. 2019-07-08 13:45:15 +00:00
inter_frame_delay.cc Remove unused method in VCMInterFrameDelay. 2019-04-03 07:35:28 +00:00
inter_frame_delay.h Remove unused method in VCMInterFrameDelay. 2019-04-03 07:35:28 +00:00
internal_defines.h Remove unused defines and methods in internal_defines.h 2019-01-28 10:31:40 +00:00
jitter_buffer.cc Trim dependencies in modules/video_coding/ 2019-09-11 09:31:10 +00:00
jitter_buffer.h Cleanup includes in modules/include/module_common_types.h 2019-10-07 16:06:26 +00:00
jitter_buffer_common.h Format almost everything. 2019-07-08 13:45:15 +00:00
jitter_buffer_unittest.cc Format almost everything. 2019-07-08 13:45:15 +00:00
jitter_estimator.cc Format almost everything. 2019-07-08 13:45:15 +00:00
jitter_estimator.h Add cap to video jitter buffer size/latency in experiment branches only. 2019-06-04 15:50:27 +00:00
jitter_estimator_tests.cc Use std::make_unique instead of absl::make_unique. 2019-09-17 15:47:29 +00:00
loss_notification_controller.cc Detach LossNotificationController from RtpGenericFrameDescriptor 2020-01-24 11:53:28 +00:00
loss_notification_controller.h Detach LossNotificationController from RtpGenericFrameDescriptor 2020-01-24 11:53:28 +00:00
loss_notification_controller_unittest.cc Detach LossNotificationController from RtpGenericFrameDescriptor 2020-01-24 11:53:28 +00:00
media_opt_util.cc Stop checking VP8BaseHeavyTl3RateAllocation field trial on every frame. 2019-11-04 13:50:59 +00:00
media_opt_util.h Stop checking VP8BaseHeavyTl3RateAllocation field trial on every frame. 2019-11-04 13:50:59 +00:00
nack_module.cc Add exponential backoff of retransmissions for a given packet 2019-10-28 10:06:23 +00:00
nack_module.h Add exponential backoff of retransmissions for a given packet 2019-10-28 10:06:23 +00:00
nack_module_unittest.cc Add exponential backoff of retransmissions for a given packet 2019-10-28 10:06:23 +00:00
OWNERS Make ilnik@ owner in video/ and modules/video_coding/ 2018-09-11 12:39:39 +00:00
packet.cc Add plumbing of RtpPacketInfos to each VideoFrame as input for SourceTracker. 2019-06-20 10:24:29 +00:00
packet.h Add plumbing of RtpPacketInfos to each VideoFrame as input for SourceTracker. 2019-06-20 10:24:29 +00:00
packet_buffer.cc Pass and store PacketBuffer::Packet by unique_ptr 2020-01-29 11:48:55 +00:00
packet_buffer.h Pass and store PacketBuffer::Packet by unique_ptr 2020-01-29 11:48:55 +00:00
packet_buffer_unittest.cc Pass and store PacketBuffer::Packet by unique_ptr 2020-01-29 11:48:55 +00:00
receiver.cc Concatenate string literals at compile time. 2020-01-14 14:47:48 +00:00
receiver.h Delete some dead code in vcm::VideoReceiver and VCMReceiver 2019-09-10 12:40:58 +00:00
receiver_unittest.cc Delete some dead code in vcm::VideoReceiver and VCMReceiver 2019-09-10 12:40:58 +00:00
rtp_frame_reference_finder.cc Add more VP9 header correctness check in RtpFrameReferenceFinder 2020-02-06 08:39:44 +00:00
rtp_frame_reference_finder.h Detach RtpFrameReferenceFinder from RtpGenericFrameDescriptor 2020-01-29 12:36:10 +00:00
rtp_frame_reference_finder_unittest.cc Use new RtpFrameObject ctor for unittests. 2019-09-30 08:28:45 +00:00
rtt_filter.cc Fix typo in VCMRttFilter 2018-01-26 10:59:56 +00:00
rtt_filter.h Delete root header file typedef.h. 2018-07-25 14:59:26 +00:00
session_info.cc Trim dependencies in modules/video_coding/ 2019-09-11 09:31:10 +00:00
session_info.h Format almost everything. 2019-07-08 13:45:15 +00:00
session_info_unittest.cc Include module_common_types.h only where needed 2019-09-24 08:22:38 +00:00
timestamp_map.cc Format almost everything. 2019-07-08 13:45:15 +00:00
timestamp_map.h Remove unimplemented function declarations VCMGenericDecoder::External and VCMTimestampMap::Reset. 2018-09-06 09:05:30 +00:00
timing.cc Format almost everything. 2019-07-08 13:45:15 +00:00
timing.h Include module_common_types.h only where needed 2019-09-24 08:22:38 +00:00
timing_unittest.cc Format almost everything. 2019-07-08 13:45:15 +00:00
unique_timestamp_counter.cc Split out counting unique rtp timestamps from packet_buffer 2019-10-30 15:27:48 +00:00
unique_timestamp_counter.h Split out counting unique rtp timestamps from packet_buffer 2019-10-30 15:27:48 +00:00
unique_timestamp_counter_unittest.cc Split out counting unique rtp timestamps from packet_buffer 2019-10-30 15:27:48 +00:00
video_codec_initializer.cc Make RtpEncodingParameters to not reverse active flags order 2020-02-05 17:36:26 +00:00
video_codec_initializer_unittest.cc Make RtpEncodingParameters to not reverse active flags order 2020-02-05 17:36:26 +00:00
video_coding_defines.cc Fix frames dropped statistics 2019-08-27 07:43:01 +00:00
video_coding_impl.cc Delete deprecated method VideoCodingModule::SetReceiverRobustnessMode 2019-06-12 06:39:38 +00:00
video_coding_impl.h Delete some dead code in vcm::VideoReceiver and VCMReceiver 2019-09-10 12:40:58 +00:00
video_receiver.cc Add processing time to VideoFrame 2020-01-16 14:11:15 +00:00
video_receiver2.cc Add processing time to VideoFrame 2020-01-16 14:11:15 +00:00
video_receiver2.h Delete VideoReceiver2::TriggerDecoderShutdown. 2019-09-12 13:44:13 +00:00
video_receiver_unittest.cc Delete header file mock_vcm_callbacks.h 2020-02-04 14:20:46 +00:00