webrtc/modules/video_coding
Markus Handell 334b1fd321 VideoReceiveStream: eliminate task post in decode path.
VideoReceiveStream2 unnecessarily posts a decode complete call to
its own queue while already being executed on it. A popular use
case in downstream project has a large amount of decoders
in use so the cost of this is multiplied by the number of active
decoders.

Fix this by removing the unnecessary task post. To allow for this,
this change also changes the frame buffer to call out to it's
handler without any locks held.

Bug: webrtc:12297
Change-Id: Ib2e26445458228a44c53dad9d585d4025f2f2945
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/197420
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Markus Handell <handellm@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#32845}
2020-12-16 11:25:41 +00:00
..
codecs Lower HighBitrateAV1 liabom test quality threshold 2020-12-16 09:51:51 +00:00
deprecated Migrate modules/video_coding to webrtc::Mutex. 2020-07-07 11:41:21 +00:00
include in Av1 encoder wrapper communicate end_of_picture flag similar to VP9 2020-11-11 14:00:52 +00:00
svc Ignore frame type when calculating generic frame dependencies. 2020-11-23 10:52:06 +00:00
test Include module_common_types.h only where needed 2019-09-24 08:22:38 +00:00
utility Reland "Introduce RTC_NO_UNIQUE_ADDRESS." 2020-11-23 11:29:36 +00:00
BUILD.gn Splits vp9_impl into libvpx_vp9_encoder and libvpx_vp9_decoder. 2020-12-10 19:31:11 +00:00
chain_diff_calculator.cc Introduce ChainDiffCalculator 2020-05-18 14:22:44 +00:00
chain_diff_calculator.h Introduce ChainDiffCalculator 2020-05-18 14:22:44 +00:00
chain_diff_calculator_unittest.cc Introduce ChainDiffCalculator 2020-05-18 14:22:44 +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 Allow to set av1 scalability mode after encoder is constructed 2020-10-19 10:42:23 +00:00
decoder_database.h Prepare for deleting VideoCodec::plType 2020-08-11 14:20:59 +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 Add RTC_EXPORT to VCMEncodedFrame 2020-02-28 16:59:10 +00:00
encoded_frame.cc Removed _completeFrame since we never allow incomplete frames. 2020-10-28 16:00:27 +00:00
encoded_frame.h Stop using inter_layer_predicted flag for VP9. 2020-12-09 09:45:50 +00:00
event_wrapper.cc Move EventWrapper class to target video_coding_legacy. 2020-03-06 08:39:35 +00:00
event_wrapper.h Move EventWrapper class to target video_coding_legacy. 2020-03-06 08:39:35 +00:00
fec_controller_default.cc Migrate modules/video_coding to webrtc::Mutex. 2020-07-07 11:41:21 +00:00
fec_controller_default.h Migrate modules/video_coding to webrtc::Mutex. 2020-07-07 11:41:21 +00:00
fec_controller_unittest.cc Format almost everything. 2019-07-08 13:45:15 +00:00
fec_rate_table.h
frame_buffer.cc Removed _completeFrame since we never allow incomplete frames. 2020-10-28 16:00:27 +00:00
frame_buffer.h Refactor legacy FrameBuffer to use EncodedImageBuffer::Realloc 2019-09-30 09:48:26 +00:00
frame_buffer2.cc VideoReceiveStream: eliminate task post in decode path. 2020-12-16 11:25:41 +00:00
frame_buffer2.h Stop using inter_layer_predicted flag for VP9. 2020-12-09 09:45:50 +00:00
frame_buffer2_unittest.cc Remove use of inter_layer_predicted in FrameBuffer2. 2020-12-10 14:18:09 +00:00
frame_dependencies_calculator.cc Ignore frame type when calculating generic frame dependencies. 2020-11-23 10:52:06 +00:00
frame_dependencies_calculator.h Ignore frame type when calculating generic frame dependencies. 2020-11-23 10:52:06 +00:00
frame_dependencies_calculator_unittest.cc Ignore frame type when calculating generic frame dependencies. 2020-11-23 10:52:06 +00:00
frame_object.cc Removed _completeFrame since we never allow incomplete frames. 2020-10-28 16:00:27 +00:00
frame_object.h Reland "Delete the non-const version of the EncodedImage::data() method." 2020-09-28 13:51:51 +00:00
generic_decoder.cc Signaling for low-latency renderer algorithm 2020-10-26 15:03:56 +00:00
generic_decoder.h Signaling for low-latency renderer algorithm 2020-10-26 15:03:56 +00:00
generic_decoder_unittest.cc Signaling for low-latency renderer algorithm 2020-10-26 15:03:56 +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 H264: Fix stap-a-to-annex-b loop over-read 2020-06-24 21:54:45 +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
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 Removed _completeFrame since we never allow incomplete frames. 2020-10-28 16:00:27 +00:00
jitter_buffer.h Migrate modules/video_coding to webrtc::Mutex. 2020-07-07 11:41:21 +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 Add option to disable reduced jitter delay through field trial. 2020-05-19 11:51:29 +00:00
jitter_estimator.h Add option to disable reduced jitter delay through field trial. 2020-05-19 11:51:29 +00:00
jitter_estimator_tests.cc Add option to disable reduced jitter delay through field trial. 2020-05-19 11:51:29 +00:00
loss_notification_controller.cc Detach LossNotificationController from RtpGenericFrameDescriptor 2020-01-24 11:53:28 +00:00
loss_notification_controller.h Reland "Introduce RTC_NO_UNIQUE_ADDRESS." 2020-11-23 11:29:36 +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_module2.cc Remove locks and dependency on ProcessThread+Module from NackModule2. 2020-05-27 14:20:34 +00:00
nack_module2.h Remove locks and dependency on ProcessThread+Module from NackModule2. 2020-05-27 14:20:34 +00:00
nack_module2_unittest.cc Remove locks and dependency on ProcessThread+Module from NackModule2. 2020-05-27 14:20:34 +00:00
nack_module_unittest.cc Deprecate webrtc::NackModule. 2020-05-30 16:34:44 +00:00
OWNERS Remove wildcard ownership for build files. 2020-02-19 14:05:46 +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 Add new fmtp parameter for H.264 2020-08-07 10:32:41 +00:00
packet_buffer.h Move ABSL_MUST_USE_RESULT at the beginning of the method decl. 2020-08-31 08:19:29 +00:00
packet_buffer_unittest.cc Add new fmtp parameter for H.264 2020-08-07 10:32:41 +00:00
receiver.cc Removed _completeFrame since we never allow incomplete frames. 2020-10-28 16:00:27 +00:00
receiver.h Remove unused critical section includes. 2020-07-16 13:52:28 +00:00
receiver_unittest.cc Move EventWrapper class to target video_coding_legacy. 2020-03-06 08:39:35 +00:00
rtp_frame_id_only_ref_finder.cc Break RtpFrameReferenceFinder into descriptor specific parts. 2020-11-27 17:59:28 +00:00
rtp_frame_id_only_ref_finder.h Break RtpFrameReferenceFinder into descriptor specific parts. 2020-11-27 17:59:28 +00:00
rtp_frame_reference_finder.cc Handle AV1 without DependencyDescriptor. 2020-12-01 12:36:42 +00:00
rtp_frame_reference_finder.h Break RtpFrameReferenceFinder into descriptor specific parts. 2020-11-27 17:59:28 +00:00
rtp_frame_reference_finder_unittest.cc Move RtpVp9RefFinder unittests into its own file. 2020-12-03 15:28:21 +00:00
rtp_generic_ref_finder.cc Break RtpFrameReferenceFinder into descriptor specific parts. 2020-11-27 17:59:28 +00:00
rtp_generic_ref_finder.h Break RtpFrameReferenceFinder into descriptor specific parts. 2020-11-27 17:59:28 +00:00
rtp_seq_num_only_ref_finder.cc Break RtpFrameReferenceFinder into descriptor specific parts. 2020-11-27 17:59:28 +00:00
rtp_seq_num_only_ref_finder.h Break RtpFrameReferenceFinder into descriptor specific parts. 2020-11-27 17:59:28 +00:00
rtp_vp8_ref_finder.cc Break RtpFrameReferenceFinder into descriptor specific parts. 2020-11-27 17:59:28 +00:00
rtp_vp8_ref_finder.h Break RtpFrameReferenceFinder into descriptor specific parts. 2020-11-27 17:59:28 +00:00
rtp_vp9_ref_finder.cc Stop using inter_layer_predicted flag for VP9. 2020-12-09 09:45:50 +00:00
rtp_vp9_ref_finder.h Stop using inter_layer_predicted flag for VP9. 2020-12-09 09:45:50 +00:00
rtp_vp9_ref_finder_unittest.cc Stop using inter_layer_predicted flag for VP9. 2020-12-09 09:45:50 +00:00
rtt_filter.cc
rtt_filter.h Delete root header file typedef.h. 2018-07-25 14:59:26 +00:00
session_info.cc Remove framemarking RTP extension. 2020-06-15 11:18:00 +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 Signaling for low-latency renderer algorithm 2020-10-26 15:03:56 +00:00
timestamp_map.h Signaling for low-latency renderer algorithm 2020-10-26 15:03:56 +00:00
timing.cc Delete master_timing argument to VCMTiming. 2020-11-02 11:49:46 +00:00
timing.h Delete master_timing argument to VCMTiming. 2020-11-02 11:49:46 +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 Add av1 svc configuration for target bitrates 2020-11-27 13:32:05 +00:00
video_codec_initializer_unittest.cc Make VP9 correctly accept middle-layer singlecast 2020-09-22 16:09:53 +00:00
video_coding_defines.cc Fix frames dropped statistics 2019-08-27 07:43:01 +00:00
video_coding_impl.cc Delete deprecated variant of VideoCodingModule::RegisterReceiveCodec 2020-08-11 08:44:50 +00:00
video_coding_impl.h Add a VideoCoding::RegisterReceiveCodec method with payload_type 2020-08-10 11:08:52 +00:00
video_receiver.cc Removed _completeFrame since we never allow incomplete frames. 2020-10-28 16:00:27 +00:00
video_receiver2.cc Add a VideoCoding::RegisterReceiveCodec method with payload_type 2020-08-10 11:08:52 +00:00
video_receiver2.h Add a VideoCoding::RegisterReceiveCodec method with payload_type 2020-08-10 11:08:52 +00:00
video_receiver_unittest.cc Prepare for deleting VideoCodec::plType 2020-08-11 14:20:59 +00:00