Delay creation of decoders until they are needed
Before this CL, WebRTC created a decoder for each negotiated codec profile. This quickly consumed all available HW decoder resources on some platforms. This CL adds a field trial, WebRTC-PreStreamDecoders, that makes it possible to set how many decoders that should be created up front, from 0 to ALL. If the field trial is set to 1, we only create a decoder for the preferred codec. The other decoders are only created when they are needed (i.e., if we receive the corresponding payload type). Bug: webrtc:12462 Change-Id: I087571b540f6796d32d34923f9c7f8e89b0959c5 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/208284 Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org> Commit-Queue: Johannes Kron <kron@webrtc.org> Cr-Commit-Position: refs/heads/master@{#33300}
This commit is contained in:
committed by
Commit Bot
parent
c9b9930c97
commit
16359f65c4
@ -56,7 +56,6 @@ bool VCMDecoderDataBase::DeregisterExternalDecoder(uint8_t payload_type) {
|
||||
// Release it if it was registered and in use.
|
||||
ptr_decoder_.reset();
|
||||
}
|
||||
DeregisterReceiveCodec(payload_type);
|
||||
delete it->second;
|
||||
dec_external_map_.erase(it);
|
||||
return true;
|
||||
@ -73,6 +72,12 @@ void VCMDecoderDataBase::RegisterExternalDecoder(VideoDecoder* external_decoder,
|
||||
dec_external_map_[payload_type] = ext_decoder;
|
||||
}
|
||||
|
||||
bool VCMDecoderDataBase::IsExternalDecoderRegistered(
|
||||
uint8_t payload_type) const {
|
||||
return payload_type == current_payload_type_ ||
|
||||
FindExternalDecoderItem(payload_type);
|
||||
}
|
||||
|
||||
bool VCMDecoderDataBase::RegisterReceiveCodec(uint8_t payload_type,
|
||||
const VideoCodec* receive_codec,
|
||||
int number_of_cores) {
|
||||
|
||||
Reference in New Issue
Block a user