insertable streams: include rtp_timestamp offset for audio
includes the (random) rtp start offset in the timestamp passed to the frame transformer callback Bug: chromium:1069278 Change-Id: I7d10130404d93df7cee3b8f87a0b780801a51415 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/173329 Commit-Queue: Marina Ciocea <marinaciocea@webrtc.org> Reviewed-by: Per Åhgren <peah@webrtc.org> Reviewed-by: Marina Ciocea <marinaciocea@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31067}
This commit is contained in:

committed by
Commit Bot

parent
fea8b94591
commit
b9d468573a
@ -389,8 +389,9 @@ int32_t ChannelSend::SendData(AudioFrameType frameType,
|
||||
// Asynchronously transform the payload before sending it. After the payload
|
||||
// is transformed, the delegate will call SendRtpAudio to send it.
|
||||
frame_transformer_delegate_->Transform(
|
||||
frameType, payloadType, rtp_timestamp, payloadData, payloadSize,
|
||||
absolute_capture_timestamp_ms, _rtpRtcpModule->SSRC());
|
||||
frameType, payloadType, rtp_timestamp, _rtpRtcpModule->StartTimestamp(),
|
||||
payloadData, payloadSize, absolute_capture_timestamp_ms,
|
||||
_rtpRtcpModule->SSRC());
|
||||
return 0;
|
||||
}
|
||||
return SendRtpAudio(frameType, payloadType, rtp_timestamp, payload,
|
||||
|
@ -20,6 +20,7 @@ class TransformableAudioFrame : public TransformableFrameInterface {
|
||||
TransformableAudioFrame(AudioFrameType frame_type,
|
||||
uint8_t payload_type,
|
||||
uint32_t rtp_timestamp,
|
||||
uint32_t rtp_start_timestamp,
|
||||
const uint8_t* payload_data,
|
||||
size_t payload_size,
|
||||
int64_t absolute_capture_timestamp_ms,
|
||||
@ -27,6 +28,7 @@ class TransformableAudioFrame : public TransformableFrameInterface {
|
||||
: frame_type_(frame_type),
|
||||
payload_type_(payload_type),
|
||||
rtp_timestamp_(rtp_timestamp),
|
||||
rtp_start_timestamp_(rtp_start_timestamp),
|
||||
payload_(payload_data, payload_size),
|
||||
absolute_capture_timestamp_ms_(absolute_capture_timestamp_ms),
|
||||
ssrc_(ssrc) {}
|
||||
@ -35,7 +37,10 @@ class TransformableAudioFrame : public TransformableFrameInterface {
|
||||
void SetData(rtc::ArrayView<const uint8_t> data) override {
|
||||
payload_.SetData(data.data(), data.size());
|
||||
}
|
||||
uint32_t GetTimestamp() const override { return rtp_timestamp_; }
|
||||
uint32_t GetTimestamp() const override {
|
||||
return rtp_timestamp_ + rtp_start_timestamp_;
|
||||
}
|
||||
uint32_t GetStartTimestamp() const { return rtp_start_timestamp_; }
|
||||
uint32_t GetSsrc() const override { return ssrc_; }
|
||||
|
||||
AudioFrameType GetFrameType() const { return frame_type_; }
|
||||
@ -48,6 +53,7 @@ class TransformableAudioFrame : public TransformableFrameInterface {
|
||||
AudioFrameType frame_type_;
|
||||
uint8_t payload_type_;
|
||||
uint32_t rtp_timestamp_;
|
||||
uint32_t rtp_start_timestamp_;
|
||||
rtc::Buffer payload_;
|
||||
int64_t absolute_capture_timestamp_ms_;
|
||||
uint32_t ssrc_;
|
||||
@ -79,13 +85,14 @@ void ChannelSendFrameTransformerDelegate::Transform(
|
||||
AudioFrameType frame_type,
|
||||
uint8_t payload_type,
|
||||
uint32_t rtp_timestamp,
|
||||
uint32_t rtp_start_timestamp,
|
||||
const uint8_t* payload_data,
|
||||
size_t payload_size,
|
||||
int64_t absolute_capture_timestamp_ms,
|
||||
uint32_t ssrc) {
|
||||
frame_transformer_->Transform(std::make_unique<TransformableAudioFrame>(
|
||||
frame_type, payload_type, rtp_timestamp, payload_data, payload_size,
|
||||
absolute_capture_timestamp_ms, ssrc));
|
||||
frame_type, payload_type, rtp_timestamp, rtp_start_timestamp,
|
||||
payload_data, payload_size, absolute_capture_timestamp_ms, ssrc));
|
||||
}
|
||||
|
||||
void ChannelSendFrameTransformerDelegate::OnTransformedFrame(
|
||||
@ -107,10 +114,12 @@ void ChannelSendFrameTransformerDelegate::SendFrame(
|
||||
if (!send_frame_callback_)
|
||||
return;
|
||||
auto* transformed_frame = static_cast<TransformableAudioFrame*>(frame.get());
|
||||
send_frame_callback_(
|
||||
transformed_frame->GetFrameType(), transformed_frame->GetPayloadType(),
|
||||
transformed_frame->GetTimestamp(), transformed_frame->GetData(),
|
||||
transformed_frame->GetAbsoluteCaptureTimestampMs());
|
||||
send_frame_callback_(transformed_frame->GetFrameType(),
|
||||
transformed_frame->GetPayloadType(),
|
||||
transformed_frame->GetTimestamp() -
|
||||
transformed_frame->GetStartTimestamp(),
|
||||
transformed_frame->GetData(),
|
||||
transformed_frame->GetAbsoluteCaptureTimestampMs());
|
||||
}
|
||||
|
||||
} // namespace webrtc
|
||||
|
@ -54,6 +54,7 @@ class ChannelSendFrameTransformerDelegate : public TransformedFrameCallback {
|
||||
void Transform(AudioFrameType frame_type,
|
||||
uint8_t payload_type,
|
||||
uint32_t rtp_timestamp,
|
||||
uint32_t rtp_start_timestamp,
|
||||
const uint8_t* payload_data,
|
||||
size_t payload_size,
|
||||
int64_t absolute_capture_timestamp_ms,
|
||||
|
Reference in New Issue
Block a user