From ee59a17bbb743662dfd2b07188918c8366505007 Mon Sep 17 00:00:00 2001 From: Danil Chapovalov Date: Tue, 4 Dec 2018 10:31:29 +0100 Subject: [PATCH] Ensure GenericFrameDescriptor byte representation match on receiver and on sender Bug: webrtc:9795 Change-Id: I13dfcc6dce0be55d90406e27ba855ef5e786af24 Reviewed-on: https://webrtc-review.googlesource.com/c/104900 Reviewed-by: Philip Eliasson Commit-Queue: Danil Chapovalov Cr-Commit-Position: refs/heads/master@{#25889} --- modules/rtp_rtcp/source/rtp_generic_frame_descriptor.cc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/rtp_rtcp/source/rtp_generic_frame_descriptor.cc b/modules/rtp_rtcp/source/rtp_generic_frame_descriptor.cc index c27fb6e3f6..7a8af09927 100644 --- a/modules/rtp_rtcp/source/rtp_generic_frame_descriptor.cc +++ b/modules/rtp_rtcp/source/rtp_generic_frame_descriptor.cc @@ -99,8 +99,15 @@ bool RtpGenericFrameDescriptor::AddFrameDependencyDiff(uint16_t fdiff) { void RtpGenericFrameDescriptor::SetByteRepresentation( rtc::ArrayView byte_representation) { + RTC_CHECK(!byte_representation.empty()); byte_representation_.assign(byte_representation.begin(), byte_representation.end()); + // Clear end_of_subframe bit. + // Because ByteRepresentation is used for frame authentication, bit describing + // position of the packet in the frame shouldn't be part of it. + // This match RtpVideoSender where descriptor is passed for authentication + // before end_of_subframe bit is decided and set, i.e. it is always 0. + byte_representation_[0] &= ~0x40; } rtc::ArrayView