Add _decoder CHECK to VCMGenericDecoder constructor.
This should never be using a null decoder, but it looks like it's crashing out in the field. Adding a CHECK to see if it catches any interesting stack traces. Also making the _decoder pointer const to show that it should never be changing. BUG=chromium:563299 R=stefan@webrtc.org Review URL: https://codereview.webrtc.org/1485713002 . Cr-Commit-Position: refs/heads/master@{#10843}
This commit is contained in:
@ -423,7 +423,7 @@ bool VCMCodecDataBase::DeregisterExternalDecoder(uint8_t payload_type) {
|
||||
// because payload type may be out of date (e.g. before we decode the first
|
||||
// frame after RegisterReceiveCodec)
|
||||
if (ptr_decoder_ != nullptr &&
|
||||
&ptr_decoder_->_decoder == (*it).second->external_decoder_instance) {
|
||||
ptr_decoder_->_decoder == (*it).second->external_decoder_instance) {
|
||||
// Release it if it was registered and in use.
|
||||
ReleaseDecoder(ptr_decoder_);
|
||||
ptr_decoder_ = nullptr;
|
||||
@ -571,7 +571,7 @@ VCMGenericDecoder* VCMCodecDataBase::CreateAndInitDecoder(
|
||||
if (external_dec_item) {
|
||||
// External codec.
|
||||
ptr_decoder = new VCMGenericDecoder(
|
||||
*external_dec_item->external_decoder_instance, true);
|
||||
external_dec_item->external_decoder_instance, true);
|
||||
} else {
|
||||
// Create decoder.
|
||||
ptr_decoder = CreateDecoder(decoder_item->settings->codecType);
|
||||
@ -607,14 +607,14 @@ void VCMCodecDataBase::DeleteEncoder() {
|
||||
VCMGenericDecoder* VCMCodecDataBase::CreateDecoder(VideoCodecType type) const {
|
||||
switch (type) {
|
||||
case kVideoCodecVP8:
|
||||
return new VCMGenericDecoder(*(VP8Decoder::Create()));
|
||||
return new VCMGenericDecoder(VP8Decoder::Create(), false);
|
||||
case kVideoCodecVP9:
|
||||
return new VCMGenericDecoder(*(VP9Decoder::Create()));
|
||||
return new VCMGenericDecoder(VP9Decoder::Create(), false);
|
||||
case kVideoCodecI420:
|
||||
return new VCMGenericDecoder(*(new I420Decoder));
|
||||
return new VCMGenericDecoder(new I420Decoder(), false);
|
||||
case kVideoCodecH264:
|
||||
if (H264Decoder::IsSupported()) {
|
||||
return new VCMGenericDecoder(*(H264Decoder::Create()));
|
||||
return new VCMGenericDecoder(H264Decoder::Create(), false);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
Reference in New Issue
Block a user