#include "third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.h"
#include "base/numerics/safe_conversions.h"
#include "base/synchronization/lock.h"
#include "base/task/single_thread_task_runner.h"
#include "third_party/blink/public/common/privacy_budget/identifiability_metric_builder.h"
#include "third_party/blink/public/common/privacy_budget/identifiability_study_settings.h"
#include "third_party/blink/public/common/privacy_budget/identifiable_surface.h"
#include "third_party/blink/public/common/privacy_budget/identifiable_token_builder.h"
#include "third_party/blink/public/platform/modules/webrtc/webrtc_logging.h"
#include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_insertable_streams.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_rtcp_parameters.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_rtp_capabilities.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_rtp_codec_parameters.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_rtp_decoding_parameters.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_rtp_header_extension_capability.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_rtp_header_extension_parameters.h"
#include "third_party/blink/renderer/core/streams/readable_stream.h"
#include "third_party/blink/renderer/core/streams/writable_stream.h"
#include "third_party/blink/renderer/modules/peerconnection/identifiability_metrics.h"
#include "third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.h"
#include "third_party/blink/renderer/modules/peerconnection/peer_connection_features.h"
#include "third_party/blink/renderer/modules/peerconnection/rtc_dtls_transport.h"
#include "third_party/blink/renderer/modules/peerconnection/rtc_encoded_audio_receiver_sink_optimizer.h"
#include "third_party/blink/renderer/modules/peerconnection/rtc_encoded_audio_receiver_source_optimizer.h"
#include "third_party/blink/renderer/modules/peerconnection/rtc_encoded_audio_underlying_sink.h"
#include "third_party/blink/renderer/modules/peerconnection/rtc_encoded_audio_underlying_source.h"
#include "third_party/blink/renderer/modules/peerconnection/rtc_encoded_video_receiver_sink_optimizer.h"
#include "third_party/blink/renderer/modules/peerconnection/rtc_encoded_video_receiver_source_optimizer.h"
#include "third_party/blink/renderer/modules/peerconnection/rtc_encoded_video_underlying_sink.h"
#include "third_party/blink/renderer/modules/peerconnection/rtc_encoded_video_underlying_source.h"
#include "third_party/blink/renderer/modules/peerconnection/rtc_peer_connection.h"
#include "third_party/blink/renderer/modules/peerconnection/rtc_rtp_script_transform.h"
#include "third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.h"
#include "third_party/blink/renderer/modules/peerconnection/rtc_stats_report.h"
#include "third_party/blink/renderer/modules/peerconnection/web_rtc_stats_report_callback_resolver.h"
#include "third_party/blink/renderer/platform/heap/persistent.h"
#include "third_party/blink/renderer/platform/peerconnection/rtc_encoded_video_stream_transformer.h"
#include "third_party/blink/renderer/platform/peerconnection/rtc_stats.h"
#include "third_party/blink/renderer/platform/privacy_budget/identifiability_digest_helpers.h"
#include "third_party/blink/renderer/platform/wtf/cross_thread_functional.h"
#include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
#include "third_party/webrtc/api/rtp_parameters.h"
namespace blink {
RTCRtpReceiver::RTCRtpReceiver(RTCPeerConnection* pc,
std::unique_ptr<RTCRtpReceiverPlatform> receiver,
MediaStreamTrack* track,
MediaStreamVector streams,
bool require_encoded_insertable_streams,
scoped_refptr<base::SequencedTaskRunner>
encoded_transform_shortcircuit_runner)
: … { … }
MediaStreamTrack* RTCRtpReceiver::track() const { … }
RTCDtlsTransport* RTCRtpReceiver::transport() { … }
RTCDtlsTransport* RTCRtpReceiver::rtcpTransport() { … }
std::optional<double> RTCRtpReceiver::playoutDelayHint() const { … }
void RTCRtpReceiver::setPlayoutDelayHint(std::optional<double> hint,
ExceptionState& exception_state) { … }
std::optional<double> RTCRtpReceiver::jitterBufferTarget() const { … }
void RTCRtpReceiver::setJitterBufferTarget(std::optional<double> target,
ExceptionState& exception_state) { … }
HeapVector<Member<RTCRtpSynchronizationSource>>
RTCRtpReceiver::getSynchronizationSources(ScriptState* script_state,
ExceptionState& exception_state) { … }
HeapVector<Member<RTCRtpContributingSource>>
RTCRtpReceiver::getContributingSources(ScriptState* script_state,
ExceptionState& exception_state) { … }
ScriptPromise<RTCStatsReport> RTCRtpReceiver::getStats(
ScriptState* script_state) { … }
RTCInsertableStreams* RTCRtpReceiver::createEncodedStreams(
ScriptState* script_state,
ExceptionState& exception_state) { … }
RTCRtpReceiverPlatform* RTCRtpReceiver::platform_receiver() { … }
RTCRtpReceiver::MediaKind RTCRtpReceiver::kind() const { … }
MediaStreamVector RTCRtpReceiver::streams() const { … }
void RTCRtpReceiver::set_streams(MediaStreamVector streams) { … }
void RTCRtpReceiver::set_transceiver(RTCRtpTransceiver* transceiver) { … }
void RTCRtpReceiver::set_transport(RTCDtlsTransport* transport) { … }
String RTCRtpReceiver::TransceiverDirection() { … }
String RTCRtpReceiver::TransceiverCurrentDirection() { … }
void RTCRtpReceiver::ContextDestroyed() { … }
void RTCRtpReceiver::Trace(Visitor* visitor) const { … }
RTCRtpCapabilities* RTCRtpReceiver::getCapabilities(ScriptState* state,
const String& kind) { … }
RTCRtpReceiveParameters* RTCRtpReceiver::getParameters() { … }
void RTCRtpReceiver::RegisterEncodedAudioStreamCallback() { … }
void RTCRtpReceiver::UnregisterEncodedAudioStreamCallback() { … }
void RTCRtpReceiver::SetAudioUnderlyingSource(
RTCEncodedAudioUnderlyingSource* new_underlying_source,
scoped_refptr<base::SingleThreadTaskRunner> new_source_task_runner) { … }
void RTCRtpReceiver::SetAudioUnderlyingSink(
RTCEncodedAudioUnderlyingSink* new_underlying_sink) { … }
RTCInsertableStreams* RTCRtpReceiver::CreateEncodedAudioStreams(
ScriptState* script_state) { … }
void RTCRtpReceiver::setTransform(RTCRtpScriptTransform* transform,
ExceptionState& exception_state) { … }
void RTCRtpReceiver::OnAudioFrameFromDepacketizer(
std::unique_ptr<webrtc::TransformableAudioFrameInterface>
encoded_audio_frame) { … }
void RTCRtpReceiver::RegisterEncodedVideoStreamCallback() { … }
void RTCRtpReceiver::UnregisterEncodedVideoStreamCallback() { … }
void RTCRtpReceiver::SetVideoUnderlyingSource(
RTCEncodedVideoUnderlyingSource* new_underlying_source,
scoped_refptr<base::SingleThreadTaskRunner> new_source_task_runner) { … }
void RTCRtpReceiver::SetVideoUnderlyingSink(
RTCEncodedVideoUnderlyingSink* new_underlying_sink) { … }
void RTCRtpReceiver::MaybeShortCircuitEncodedStreams() { … }
RTCInsertableStreams* RTCRtpReceiver::CreateEncodedVideoStreams(
ScriptState* script_state) { … }
void RTCRtpReceiver::OnVideoFrameFromDepacketizer(
std::unique_ptr<webrtc::TransformableVideoFrameInterface>
encoded_video_frame) { … }
void RTCRtpReceiver::LogMessage(const std::string& message) { … }
}