Fix crash with CVO turned on for VP9 codec
CopyCodecSpecific nulls out the rtpheader pointer hence causing the crash downstream. More details about the codec type enums: There are 2 enums defined. webrtc::VideoCodecType webrtc::RtpCodecTypes and they don't match. Inside CopyCodecSpecific in generic_encoder.cc, it was converted from the first to the 2nd type. At that point, it'll be kRtpVideoNone (as the effect of memset to 0). kRtpVideoNone is a bad value as it could cause assert. Later, it'll be reset to kRtpVideoGeneric in RTPSender::SendOutgoingData so it's not a concern. BUG=4511 R=pbos@webrtc.org, pthatcher@webrtc.org, stefan@webrtc.org Review URL: https://webrtc-codereview.appspot.com/47999004 Cr-Commit-Position: refs/heads/master@{#8951}
This commit is contained in:
parent
c78da7d17c
commit
29b1a1c0c7
@ -8,6 +8,7 @@
|
||||
* be found in the AUTHORS file in the root of the source tree.
|
||||
*/
|
||||
|
||||
#include "webrtc/base/checks.h"
|
||||
#include "webrtc/engine_configurations.h"
|
||||
#include "webrtc/modules/video_coding/main/source/encoded_frame.h"
|
||||
#include "webrtc/modules/video_coding/main/source/generic_encoder.h"
|
||||
@ -20,10 +21,7 @@ namespace {
|
||||
// Map information from info into rtp. If no relevant information is found
|
||||
// in info, rtp is set to NULL.
|
||||
void CopyCodecSpecific(const CodecSpecificInfo* info, RTPVideoHeader** rtp) {
|
||||
if (!info) {
|
||||
*rtp = NULL;
|
||||
return;
|
||||
}
|
||||
DCHECK(info);
|
||||
switch (info->codecType) {
|
||||
case kVideoCodecVP8: {
|
||||
(*rtp)->codec = kRtpVideoVp8;
|
||||
@ -46,8 +44,6 @@ void CopyCodecSpecific(const CodecSpecificInfo* info, RTPVideoHeader** rtp) {
|
||||
(*rtp)->simulcastIdx = info->codecSpecific.generic.simulcast_idx;
|
||||
return;
|
||||
default:
|
||||
// No codec specific info. Change RTP header pointer to NULL.
|
||||
*rtp = NULL;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user