mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-12 21:30:45 +01:00
Propagate sequence number to cloned encoded audio frames
Bug: chromium:1520859 Change-Id: I6ce0304c850158ebfea1cb88bbcc74b09904fac2 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/336061 Auto-Submit: Tony Herre <herre@google.com> Reviewed-by: Stefan Holmer <stefan@webrtc.org> Commit-Queue: Stefan Holmer <stefan@webrtc.org> Cr-Commit-Position: refs/heads/main@{#41629}
This commit is contained in:
parent
f43e8ebab9
commit
7aa797244d
3 changed files with 12 additions and 10 deletions
|
@ -73,11 +73,7 @@ class TransformableAudioFrameInterface : public TransformableFrameInterface {
|
|||
|
||||
virtual rtc::ArrayView<const uint32_t> GetContributingSources() const = 0;
|
||||
|
||||
// TODO(crbug.com/1453226): Change this to pure virtual after it
|
||||
// is implemented everywhere.
|
||||
virtual const absl::optional<uint16_t> SequenceNumber() const {
|
||||
return absl::nullopt;
|
||||
}
|
||||
virtual const absl::optional<uint16_t> SequenceNumber() const = 0;
|
||||
|
||||
virtual absl::optional<uint64_t> AbsoluteCaptureTimestamp() const = 0;
|
||||
|
||||
|
|
|
@ -58,7 +58,8 @@ class TransformableOutgoingAudioFrame
|
|||
absl::optional<uint64_t> absolute_capture_timestamp_ms,
|
||||
uint32_t ssrc,
|
||||
std::vector<uint32_t> csrcs,
|
||||
const std::string& codec_mime_type)
|
||||
const std::string& codec_mime_type,
|
||||
absl::optional<uint16_t> sequence_number)
|
||||
: frame_type_(frame_type),
|
||||
payload_type_(payload_type),
|
||||
rtp_timestamp_with_offset_(rtp_timestamp_with_offset),
|
||||
|
@ -66,7 +67,8 @@ class TransformableOutgoingAudioFrame
|
|||
absolute_capture_timestamp_ms_(absolute_capture_timestamp_ms),
|
||||
ssrc_(ssrc),
|
||||
csrcs_(std::move(csrcs)),
|
||||
codec_mime_type_(codec_mime_type) {}
|
||||
codec_mime_type_(codec_mime_type),
|
||||
sequence_number_(sequence_number) {}
|
||||
~TransformableOutgoingAudioFrame() override = default;
|
||||
rtc::ArrayView<const uint8_t> GetData() const override { return payload_; }
|
||||
void SetData(rtc::ArrayView<const uint8_t> data) override {
|
||||
|
@ -88,7 +90,7 @@ class TransformableOutgoingAudioFrame
|
|||
}
|
||||
|
||||
const absl::optional<uint16_t> SequenceNumber() const override {
|
||||
return absl::nullopt;
|
||||
return sequence_number_;
|
||||
}
|
||||
|
||||
void SetRTPTimestamp(uint32_t rtp_timestamp_with_offset) override {
|
||||
|
@ -108,6 +110,7 @@ class TransformableOutgoingAudioFrame
|
|||
uint32_t ssrc_;
|
||||
std::vector<uint32_t> csrcs_;
|
||||
std::string codec_mime_type_;
|
||||
absl::optional<uint16_t> sequence_number_;
|
||||
};
|
||||
} // namespace
|
||||
|
||||
|
@ -155,7 +158,8 @@ void ChannelSendFrameTransformerDelegate::Transform(
|
|||
std::make_unique<TransformableOutgoingAudioFrame>(
|
||||
frame_type, payload_type, rtp_timestamp, payload_data, payload_size,
|
||||
absolute_capture_timestamp_ms, ssrc,
|
||||
/*csrcs=*/std::vector<uint32_t>(), codec_mimetype));
|
||||
/*csrcs=*/std::vector<uint32_t>(), codec_mimetype,
|
||||
/*sequence_number=*/absl::nullopt));
|
||||
}
|
||||
|
||||
void ChannelSendFrameTransformerDelegate::OnTransformedFrame(
|
||||
|
@ -203,7 +207,7 @@ std::unique_ptr<TransformableAudioFrameInterface> CloneSenderAudioFrame(
|
|||
original->GetPayloadType(), original->GetTimestamp(),
|
||||
original->GetData().data(), original->GetData().size(),
|
||||
original->AbsoluteCaptureTimestamp(), original->GetSsrc(),
|
||||
std::move(csrcs), original->GetMimeType());
|
||||
std::move(csrcs), original->GetMimeType(), original->SequenceNumber());
|
||||
}
|
||||
|
||||
} // namespace webrtc
|
||||
|
|
|
@ -68,6 +68,7 @@ std::unique_ptr<TransformableAudioFrameInterface> CreateMockReceiverFrame(
|
|||
ON_CALL(*mock_frame, GetDirection)
|
||||
.WillByDefault(Return(TransformableFrameInterface::Direction::kReceiver));
|
||||
ON_CALL(*mock_frame, GetContributingSources).WillByDefault(Return(csrcs));
|
||||
ON_CALL(*mock_frame, SequenceNumber).WillByDefault(Return(987654321));
|
||||
return mock_frame;
|
||||
}
|
||||
|
||||
|
@ -252,6 +253,7 @@ TEST(ChannelSendFrameTransformerDelegateTest, CloningReceiverFrameWithCsrcs) {
|
|||
ASSERT_NE(frame->GetContributingSources().size(), 0u);
|
||||
EXPECT_THAT(cloned_frame->GetContributingSources(),
|
||||
ElementsAreArray(frame->GetContributingSources()));
|
||||
EXPECT_EQ(cloned_frame->SequenceNumber(), frame->SequenceNumber());
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
|
Loading…
Reference in a new issue