Pass the correct abs_capture_timestamp while cloning audio frame
This change replaces type of absolute_capture_timestamp_ms_ in TransformableOutgoingAudioFrame from int to optional uint and makes the function AbsoluteCaptureTimestamp() inside TransformableAudioFrameInterface pure virtual. Bug: webrtc:14949 Change-Id: Id3bdbcba63a5f91105ab198208e4f2b11eb3c7db Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/319000 Commit-Queue: Palak Agarwal <agpalak@google.com> Reviewed-by: Tony Herre <herre@google.com> Reviewed-by: Harald Alvestrand <hta@webrtc.org> Cr-Commit-Position: refs/heads/main@{#40814}
This commit is contained in:
parent
3218d743be
commit
0505115b5c
@ -78,11 +78,7 @@ class TransformableAudioFrameInterface : public TransformableFrameInterface {
|
||||
return absl::nullopt;
|
||||
}
|
||||
|
||||
// TODO(crbug.com/1456628): Change this to pure virtual after it
|
||||
// is implemented everywhere.
|
||||
virtual absl::optional<uint64_t> AbsoluteCaptureTimestamp() const {
|
||||
return absl::nullopt;
|
||||
}
|
||||
virtual absl::optional<uint64_t> AbsoluteCaptureTimestamp() const = 0;
|
||||
|
||||
enum class FrameType { kEmptyFrame, kAudioFrameSpeech, kAudioFrameCN };
|
||||
|
||||
|
||||
@ -48,13 +48,14 @@ AudioFrameType InterfaceFrameTypeToInternalFrameType(
|
||||
class TransformableOutgoingAudioFrame
|
||||
: public TransformableAudioFrameInterface {
|
||||
public:
|
||||
TransformableOutgoingAudioFrame(AudioFrameType frame_type,
|
||||
uint8_t payload_type,
|
||||
uint32_t rtp_timestamp_with_offset,
|
||||
const uint8_t* payload_data,
|
||||
size_t payload_size,
|
||||
int64_t absolute_capture_timestamp_ms,
|
||||
uint32_t ssrc)
|
||||
TransformableOutgoingAudioFrame(
|
||||
AudioFrameType frame_type,
|
||||
uint8_t payload_type,
|
||||
uint32_t rtp_timestamp_with_offset,
|
||||
const uint8_t* payload_data,
|
||||
size_t payload_size,
|
||||
absl::optional<uint64_t> absolute_capture_timestamp_ms,
|
||||
uint32_t ssrc)
|
||||
: frame_type_(frame_type),
|
||||
payload_type_(payload_type),
|
||||
rtp_timestamp_with_offset_(rtp_timestamp_with_offset),
|
||||
@ -97,7 +98,7 @@ class TransformableOutgoingAudioFrame
|
||||
uint8_t payload_type_;
|
||||
uint32_t rtp_timestamp_with_offset_;
|
||||
rtc::Buffer payload_;
|
||||
int64_t absolute_capture_timestamp_ms_;
|
||||
absl::optional<uint64_t> absolute_capture_timestamp_ms_;
|
||||
uint32_t ssrc_;
|
||||
};
|
||||
} // namespace
|
||||
@ -168,12 +169,11 @@ void ChannelSendFrameTransformerDelegate::SendFrame(
|
||||
|
||||
std::unique_ptr<TransformableAudioFrameInterface> CloneSenderAudioFrame(
|
||||
TransformableAudioFrameInterface* original) {
|
||||
// TODO(crbug.com/webrtc/14949): Ensure the correct timestamps are passed.
|
||||
return std::make_unique<TransformableOutgoingAudioFrame>(
|
||||
InterfaceFrameTypeToInternalFrameType(original->Type()),
|
||||
original->GetPayloadType(), original->GetTimestamp(),
|
||||
original->GetData().data(), original->GetData().size(),
|
||||
original->GetTimestamp(), original->GetSsrc());
|
||||
original->AbsoluteCaptureTimestamp(), original->GetSsrc());
|
||||
}
|
||||
|
||||
} // namespace webrtc
|
||||
|
||||
@ -23,6 +23,10 @@ class MockTransformableAudioFrame : public TransformableAudioFrameInterface {
|
||||
GetContributingSources,
|
||||
(),
|
||||
(const, override));
|
||||
MOCK_METHOD(absl::optional<uint64_t>,
|
||||
AbsoluteCaptureTimestamp,
|
||||
(),
|
||||
(const, override));
|
||||
MOCK_METHOD(void, SetData, (rtc::ArrayView<const uint8_t>), (override));
|
||||
MOCK_METHOD(uint8_t, GetPayloadType, (), (const, override));
|
||||
MOCK_METHOD(uint32_t, GetSsrc, (), (const, override));
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user