webrtc_m130/pc/test/mock_rtp_sender_internal.h
Amit Hilbuch 619b29423c RtpSender's RtpParameters were invalidated in a call to SLD/SRD.
RtpSender uses a transactional model when getting and setting RtpParameters.
One must call GetParameters() and then can use the returned object in a
subsequent call to SetParameters().
PeerConnection was calling GetParameters() and SetParameters() during
negotiation in SetLocalDescription and SetRemoteDescription effectively
invalidating any parameters that the client previously held.
This change introduces an internal way for the platform to modify
parameters without invalidating the transactional model, provided that
the modification is not severe.
Ex. removing simulcast layers is a severe modification and will
invalidate any outstanding parameters.

Bug: webrtc:10339
Change-Id: I362e8ca4d9556e04a1aa7a3e74e2c275f8d16fbc
Reviewed-on: https://webrtc-review.googlesource.com/c/124504
Reviewed-by: Seth Hampson <shampson@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Commit-Queue: Amit Hilbuch <amithi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26864}
2019-02-27 01:46:50 +00:00

61 lines
2.4 KiB
C++

/*
* Copyright 2016 The WebRTC project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#ifndef PC_TEST_MOCK_RTP_SENDER_INTERNAL_H_
#define PC_TEST_MOCK_RTP_SENDER_INTERNAL_H_
#include <string>
#include <vector>
#include "pc/rtp_sender.h"
#include "test/gmock.h"
namespace webrtc {
// The definition of MockRtpSender is copied in to avoid multiple inheritance.
class MockRtpSenderInternal : public RtpSenderInternal {
public:
// RtpSenderInterface methods.
MOCK_METHOD1(SetTrack, bool(MediaStreamTrackInterface*));
MOCK_CONST_METHOD0(track, rtc::scoped_refptr<MediaStreamTrackInterface>());
MOCK_CONST_METHOD0(ssrc, uint32_t());
MOCK_CONST_METHOD0(dtls_transport,
rtc::scoped_refptr<DtlsTransportInterface>());
MOCK_CONST_METHOD0(media_type, cricket::MediaType());
MOCK_CONST_METHOD0(id, std::string());
MOCK_CONST_METHOD0(stream_ids, std::vector<std::string>());
MOCK_CONST_METHOD0(init_send_encodings, std::vector<RtpEncodingParameters>());
MOCK_METHOD1(set_transport, void(rtc::scoped_refptr<DtlsTransportInterface>));
MOCK_CONST_METHOD0(GetParameters, RtpParameters());
MOCK_CONST_METHOD0(GetParametersInternal, RtpParameters());
MOCK_METHOD1(SetParameters, RTCError(const RtpParameters&));
MOCK_METHOD1(SetParametersInternal, RTCError(const RtpParameters&));
MOCK_CONST_METHOD0(GetDtmfSender, rtc::scoped_refptr<DtmfSenderInterface>());
MOCK_METHOD1(SetFrameEncryptor,
void(rtc::scoped_refptr<FrameEncryptorInterface>));
MOCK_CONST_METHOD0(GetFrameEncryptor,
rtc::scoped_refptr<FrameEncryptorInterface>());
// RtpSenderInternal methods.
MOCK_METHOD1(SetMediaChannel, void(cricket::MediaChannel*));
MOCK_METHOD1(SetSsrc, void(uint32_t));
MOCK_METHOD1(set_stream_ids, void(const std::vector<std::string>&));
MOCK_METHOD1(set_init_send_encodings,
void(const std::vector<RtpEncodingParameters>&));
MOCK_METHOD0(Stop, void());
MOCK_CONST_METHOD0(AttachmentId, int());
MOCK_METHOD1(DisableEncodingLayers,
RTCError(const std::vector<std::string>&));
};
} // namespace webrtc
#endif // PC_TEST_MOCK_RTP_SENDER_INTERNAL_H_