Prepare for deleting VideoCodec::plType
Deletes all webrtc usage of this member. Next step is to delete any downstream references, and when that's done, the member can be deleted. Bug: None Change-Id: I3f3a94a063dccf56468a1069653efd3809875b01 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/181201 Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org> Commit-Queue: Niels Moller <nisse@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31911}
This commit is contained in:
@ -29,7 +29,10 @@ VCMExtDecoderMapItem::VCMExtDecoderMapItem(
|
||||
VCMDecoderMapItem::~VCMDecoderMapItem() {}
|
||||
|
||||
VCMDecoderDataBase::VCMDecoderDataBase()
|
||||
: receive_codec_(), dec_map_(), dec_external_map_() {}
|
||||
: current_payload_type_(0),
|
||||
receive_codec_(),
|
||||
dec_map_(),
|
||||
dec_external_map_() {}
|
||||
|
||||
VCMDecoderDataBase::~VCMDecoderDataBase() {
|
||||
ptr_decoder_.reset();
|
||||
@ -91,9 +94,10 @@ bool VCMDecoderDataBase::DeregisterReceiveCodec(uint8_t payload_type) {
|
||||
}
|
||||
delete it->second;
|
||||
dec_map_.erase(it);
|
||||
if (receive_codec_.plType == payload_type) {
|
||||
if (payload_type == current_payload_type_) {
|
||||
// This codec is currently in use.
|
||||
memset(&receive_codec_, 0, sizeof(VideoCodec));
|
||||
current_payload_type_ = 0;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@ -103,24 +107,27 @@ VCMGenericDecoder* VCMDecoderDataBase::GetDecoder(
|
||||
VCMDecodedFrameCallback* decoded_frame_callback) {
|
||||
RTC_DCHECK(decoded_frame_callback->UserReceiveCallback());
|
||||
uint8_t payload_type = frame.PayloadType();
|
||||
if (payload_type == receive_codec_.plType || payload_type == 0) {
|
||||
if (payload_type == current_payload_type_ || payload_type == 0) {
|
||||
return ptr_decoder_.get();
|
||||
}
|
||||
// If decoder exists - delete.
|
||||
if (ptr_decoder_) {
|
||||
ptr_decoder_.reset();
|
||||
memset(&receive_codec_, 0, sizeof(VideoCodec));
|
||||
current_payload_type_ = 0;
|
||||
}
|
||||
ptr_decoder_ = CreateAndInitDecoder(frame, &receive_codec_);
|
||||
if (!ptr_decoder_) {
|
||||
return nullptr;
|
||||
}
|
||||
current_payload_type_ = frame.PayloadType();
|
||||
VCMReceiveCallback* callback = decoded_frame_callback->UserReceiveCallback();
|
||||
callback->OnIncomingPayloadType(receive_codec_.plType);
|
||||
callback->OnIncomingPayloadType(current_payload_type_);
|
||||
if (ptr_decoder_->RegisterDecodeCompleteCallback(decoded_frame_callback) <
|
||||
0) {
|
||||
ptr_decoder_.reset();
|
||||
memset(&receive_codec_, 0, sizeof(VideoCodec));
|
||||
current_payload_type_ = 0;
|
||||
return nullptr;
|
||||
}
|
||||
return ptr_decoder_.get();
|
||||
|
Reference in New Issue
Block a user