Implement recieving PLI in RtcpTranceiver

Bug: webrtc:8239
Change-Id: I99f818991f4a0edd8afa90044bcb1db7e4a478d9
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/256105
Reviewed-by: Emil Lundmark <lndmrk@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36330}
This commit is contained in:
Danil Chapovalov
2022-03-18 17:48:57 +01:00
committed by WebRTC LUCI CQ
parent e5b2220650
commit 887754af75
4 changed files with 54 additions and 7 deletions

View File

@ -87,6 +87,7 @@ class MockRtpStreamRtcpHandler : public RtpStreamRtcpHandler {
OnNack,
(uint32_t, rtc::ArrayView<const uint16_t>),
(override));
MOCK_METHOD(void, OnPli, (uint32_t), (override));
private:
int num_calls_ = 0;
@ -1094,6 +1095,27 @@ TEST(RtcpTransceiverImplTest, RequestKeyFrameWithPictureLossIndication) {
EXPECT_EQ(rtcp_parser.pli()->media_ssrc(), kRemoteSsrc);
}
TEST(RtcpTransceiverImplTest, ReceivesPictureLossIndication) {
static constexpr uint32_t kRemoteSsrc = 4321;
static constexpr uint32_t kMediaSsrc1 = 1234;
static constexpr uint32_t kMediaSsrc2 = 1235;
RtcpTransceiverConfig config = DefaultTestConfig();
RtcpTransceiverImpl rtcp_transceiver(config);
MockRtpStreamRtcpHandler local_stream1;
MockRtpStreamRtcpHandler local_stream2;
EXPECT_CALL(local_stream1, OnPli(kRemoteSsrc));
EXPECT_CALL(local_stream2, OnPli).Times(0);
EXPECT_TRUE(rtcp_transceiver.AddMediaSender(kMediaSsrc1, &local_stream1));
EXPECT_TRUE(rtcp_transceiver.AddMediaSender(kMediaSsrc2, &local_stream2));
rtcp::Pli pli;
pli.SetSenderSsrc(kRemoteSsrc);
pli.SetMediaSsrc(kMediaSsrc1);
rtcp_transceiver.ReceivePacket(pli.Build(), config.clock->CurrentTime());
}
TEST(RtcpTransceiverImplTest, RequestKeyFrameWithFullIntraRequest) {
const uint32_t kSenderSsrc = 1234;
const uint32_t kRemoteSsrcs[] = {4321, 5321};