Update sdk/ to not use implicit conversion from scoped_refptr<T> to T*.

Bug: webrtc:13464
Change-Id: I6944106ddc99c043825fad077bfcedc051c67d8f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/259772
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Peter Hanspers <peterhanspers@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36682}
This commit is contained in:
Niels Möller
2022-04-25 10:46:59 +02:00
committed by WebRTC LUCI CQ
parent 3ba35c3fe2
commit 03486fc197
12 changed files with 36 additions and 34 deletions

View File

@ -67,7 +67,7 @@ rtc::scoped_refptr<webrtc::PeerConnectionFactoryInterface> CreateTestPCF(
RTC_LOG(LS_INFO) << "Media engine created: " << pcf_deps.media_engine.get(); RTC_LOG(LS_INFO) << "Media engine created: " << pcf_deps.media_engine.get();
auto factory = CreateModularPeerConnectionFactory(std::move(pcf_deps)); auto factory = CreateModularPeerConnectionFactory(std::move(pcf_deps));
RTC_LOG(LS_INFO) << "PeerConnectionFactory created: " << factory; RTC_LOG(LS_INFO) << "PeerConnectionFactory created: " << factory.get();
RTC_CHECK(factory) << "Failed to create the peer connection factory; " RTC_CHECK(factory) << "Failed to create the peer connection factory; "
"WebRTC/libjingle init likely failed on this device"; "WebRTC/libjingle init likely failed on this device";

View File

@ -29,7 +29,7 @@ JavaMediaStream::JavaMediaStream(
// Create an observer to update the Java stream when the native stream's set // Create an observer to update the Java stream when the native stream's set
// of tracks changes. // of tracks changes.
observer_.reset(new MediaStreamObserver( observer_.reset(new MediaStreamObserver(
media_stream, media_stream.get(),
[this](AudioTrackInterface* audio_track, [this](AudioTrackInterface* audio_track,
MediaStreamInterface* media_stream) { MediaStreamInterface* media_stream) {
OnAudioTrackAddedToStream(audio_track, media_stream); OnAudioTrackAddedToStream(audio_track, media_stream);

View File

@ -391,8 +391,9 @@ void PeerConnectionObserverJni::OnAddStream(
void PeerConnectionObserverJni::OnRemoveStream( void PeerConnectionObserverJni::OnRemoveStream(
rtc::scoped_refptr<MediaStreamInterface> stream) { rtc::scoped_refptr<MediaStreamInterface> stream) {
JNIEnv* env = AttachCurrentThreadIfNeeded(); JNIEnv* env = AttachCurrentThreadIfNeeded();
NativeToJavaStreamsMap::iterator it = remote_streams_.find(stream); NativeToJavaStreamsMap::iterator it = remote_streams_.find(stream.get());
RTC_CHECK(it != remote_streams_.end()) << "unexpected stream: " << stream; RTC_CHECK(it != remote_streams_.end())
<< "unexpected stream: " << stream.get();
Java_Observer_onRemoveStream(env, j_observer_global_, Java_Observer_onRemoveStream(env, j_observer_global_,
it->second.j_media_stream()); it->second.j_media_stream());
remote_streams_.erase(it); remote_streams_.erase(it);
@ -447,7 +448,7 @@ void PeerConnectionObserverJni::OnTrack(
JavaMediaStream& PeerConnectionObserverJni::GetOrCreateJavaStream( JavaMediaStream& PeerConnectionObserverJni::GetOrCreateJavaStream(
JNIEnv* env, JNIEnv* env,
const rtc::scoped_refptr<MediaStreamInterface>& stream) { const rtc::scoped_refptr<MediaStreamInterface>& stream) {
NativeToJavaStreamsMap::iterator it = remote_streams_.find(stream); NativeToJavaStreamsMap::iterator it = remote_streams_.find(stream.get());
if (it == remote_streams_.end()) { if (it == remote_streams_.end()) {
it = remote_streams_ it = remote_streams_
.emplace(std::piecewise_construct, .emplace(std::piecewise_construct,
@ -579,7 +580,7 @@ static void JNI_PeerConnection_CreateOffer(
jni, j_observer, std::move(constraints)); jni, j_observer, std::move(constraints));
PeerConnectionInterface::RTCOfferAnswerOptions options; PeerConnectionInterface::RTCOfferAnswerOptions options;
CopyConstraintsIntoOfferAnswerOptions(observer->constraints(), &options); CopyConstraintsIntoOfferAnswerOptions(observer->constraints(), &options);
ExtractNativePC(jni, j_pc)->CreateOffer(observer, options); ExtractNativePC(jni, j_pc)->CreateOffer(observer.get(), options);
} }
static void JNI_PeerConnection_CreateAnswer( static void JNI_PeerConnection_CreateAnswer(
@ -593,7 +594,7 @@ static void JNI_PeerConnection_CreateAnswer(
jni, j_observer, std::move(constraints)); jni, j_observer, std::move(constraints));
PeerConnectionInterface::RTCOfferAnswerOptions options; PeerConnectionInterface::RTCOfferAnswerOptions options;
CopyConstraintsIntoOfferAnswerOptions(observer->constraints(), &options); CopyConstraintsIntoOfferAnswerOptions(observer->constraints(), &options);
ExtractNativePC(jni, j_pc)->CreateAnswer(observer, options); ExtractNativePC(jni, j_pc)->CreateAnswer(observer.get(), options);
} }
static void JNI_PeerConnection_SetLocalDescriptionAutomatically( static void JNI_PeerConnection_SetLocalDescriptionAutomatically(
@ -827,7 +828,8 @@ static jboolean JNI_PeerConnection_OldGetStats(
jlong native_track) { jlong native_track) {
auto observer = rtc::make_ref_counted<StatsObserverJni>(jni, j_observer); auto observer = rtc::make_ref_counted<StatsObserverJni>(jni, j_observer);
return ExtractNativePC(jni, j_pc)->GetStats( return ExtractNativePC(jni, j_pc)->GetStats(
observer, reinterpret_cast<MediaStreamTrackInterface*>(native_track), observer.get(),
reinterpret_cast<MediaStreamTrackInterface*>(native_track),
PeerConnectionInterface::kStatsOutputLevelStandard); PeerConnectionInterface::kStatsOutputLevelStandard);
} }
@ -837,7 +839,7 @@ static void JNI_PeerConnection_NewGetStats(
const JavaParamRef<jobject>& j_callback) { const JavaParamRef<jobject>& j_callback) {
auto callback = auto callback =
rtc::make_ref_counted<RTCStatsCollectorCallbackWrapper>(jni, j_callback); rtc::make_ref_counted<RTCStatsCollectorCallbackWrapper>(jni, j_callback);
ExtractNativePC(jni, j_pc)->GetStats(callback); ExtractNativePC(jni, j_pc)->GetStats(callback.get());
} }
static jboolean JNI_PeerConnection_SetBitrate( static jboolean JNI_PeerConnection_SetBitrate(

View File

@ -30,7 +30,7 @@
std::string nativeId = [NSString stdStringForString:trackId]; std::string nativeId = [NSString stdStringForString:trackId];
rtc::scoped_refptr<webrtc::AudioTrackInterface> track = rtc::scoped_refptr<webrtc::AudioTrackInterface> track =
factory.nativeFactory->CreateAudioTrack(nativeId, source.nativeAudioSource); factory.nativeFactory->CreateAudioTrack(nativeId, source.nativeAudioSource.get());
if (self = [self initWithFactory:factory nativeTrack:track type:RTCMediaStreamTrackTypeAudio]) { if (self = [self initWithFactory:factory nativeTrack:track type:RTCMediaStreamTrackTypeAudio]) {
_source = source; _source = source;
} }

View File

@ -84,7 +84,7 @@ class StatsObserverAdapter : public StatsObserver {
- (void)statisticsWithCompletionHandler:(RTCStatisticsCompletionHandler)completionHandler { - (void)statisticsWithCompletionHandler:(RTCStatisticsCompletionHandler)completionHandler {
rtc::scoped_refptr<webrtc::StatsCollectorCallbackAdapter> collector = rtc::scoped_refptr<webrtc::StatsCollectorCallbackAdapter> collector =
rtc::make_ref_counted<webrtc::StatsCollectorCallbackAdapter>(completionHandler); rtc::make_ref_counted<webrtc::StatsCollectorCallbackAdapter>(completionHandler);
self.nativePeerConnection->GetStats(collector); self.nativePeerConnection->GetStats(collector.get());
} }
- (void)statsForTrack:(RTC_OBJC_TYPE(RTCMediaStreamTrack) *)mediaStreamTrack - (void)statsForTrack:(RTC_OBJC_TYPE(RTCMediaStreamTrack) *)mediaStreamTrack
@ -96,7 +96,7 @@ class StatsObserverAdapter : public StatsObserver {
webrtc::PeerConnectionInterface::StatsOutputLevel nativeOutputLevel = webrtc::PeerConnectionInterface::StatsOutputLevel nativeOutputLevel =
[[self class] nativeStatsOutputLevelForLevel:statsOutputLevel]; [[self class] nativeStatsOutputLevelForLevel:statsOutputLevel];
self.nativePeerConnection->GetStats( self.nativePeerConnection->GetStats(
observer, mediaStreamTrack.nativeTrack, nativeOutputLevel); observer.get(), mediaStreamTrack.nativeTrack.get(), nativeOutputLevel);
} }
@end @end

View File

@ -492,7 +492,7 @@ void PeerConnectionDelegateAdapter::OnRemoveTrack(
} }
- (void)addStream:(RTC_OBJC_TYPE(RTCMediaStream) *)stream { - (void)addStream:(RTC_OBJC_TYPE(RTCMediaStream) *)stream {
if (!_peerConnection->AddStream(stream.nativeMediaStream)) { if (!_peerConnection->AddStream(stream.nativeMediaStream.get())) {
RTCLogError(@"Failed to add stream: %@", stream); RTCLogError(@"Failed to add stream: %@", stream);
return; return;
} }
@ -500,7 +500,7 @@ void PeerConnectionDelegateAdapter::OnRemoveTrack(
} }
- (void)removeStream:(RTC_OBJC_TYPE(RTCMediaStream) *)stream { - (void)removeStream:(RTC_OBJC_TYPE(RTCMediaStream) *)stream {
_peerConnection->RemoveStream(stream.nativeMediaStream); _peerConnection->RemoveStream(stream.nativeMediaStream.get());
[_localStreams removeObject:stream]; [_localStreams removeObject:stream];
} }
@ -583,7 +583,7 @@ void PeerConnectionDelegateAdapter::OnRemoveTrack(
webrtc::PeerConnectionInterface::RTCOfferAnswerOptions options; webrtc::PeerConnectionInterface::RTCOfferAnswerOptions options;
CopyConstraintsIntoOfferAnswerOptions(constraints.nativeConstraints.get(), &options); CopyConstraintsIntoOfferAnswerOptions(constraints.nativeConstraints.get(), &options);
_peerConnection->CreateOffer(observer, options); _peerConnection->CreateOffer(observer.get(), options);
} }
- (void)answerForConstraints:(RTC_OBJC_TYPE(RTCMediaConstraints) *)constraints - (void)answerForConstraints:(RTC_OBJC_TYPE(RTCMediaConstraints) *)constraints
@ -594,7 +594,7 @@ void PeerConnectionDelegateAdapter::OnRemoveTrack(
webrtc::PeerConnectionInterface::RTCOfferAnswerOptions options; webrtc::PeerConnectionInterface::RTCOfferAnswerOptions options;
CopyConstraintsIntoOfferAnswerOptions(constraints.nativeConstraints.get(), &options); CopyConstraintsIntoOfferAnswerOptions(constraints.nativeConstraints.get(), &options);
_peerConnection->CreateAnswer(observer, options); _peerConnection->CreateAnswer(observer.get(), options);
} }
- (void)setLocalDescription:(RTC_OBJC_TYPE(RTCSessionDescription) *)sdp - (void)setLocalDescription:(RTC_OBJC_TYPE(RTCSessionDescription) *)sdp

View File

@ -88,7 +88,7 @@
RTCVideoEncoderFactoryH264) alloc] init]) RTCVideoEncoderFactoryH264) alloc] init])
nativeVideoDecoderFactory:webrtc::ObjCToNativeVideoDecoderFactory([[RTC_OBJC_TYPE( nativeVideoDecoderFactory:webrtc::ObjCToNativeVideoDecoderFactory([[RTC_OBJC_TYPE(
RTCVideoDecoderFactoryH264) alloc] init]) RTCVideoDecoderFactoryH264) alloc] init])
audioDeviceModule:[self audioDeviceModule] audioDeviceModule:[self audioDeviceModule].get()
audioProcessingModule:nullptr]; audioProcessingModule:nullptr];
#endif #endif
} }
@ -111,7 +111,7 @@
nativeAudioDecoderFactory:webrtc::CreateBuiltinAudioDecoderFactory() nativeAudioDecoderFactory:webrtc::CreateBuiltinAudioDecoderFactory()
nativeVideoEncoderFactory:std::move(native_encoder_factory) nativeVideoEncoderFactory:std::move(native_encoder_factory)
nativeVideoDecoderFactory:std::move(native_decoder_factory) nativeVideoDecoderFactory:std::move(native_decoder_factory)
audioDeviceModule:[self audioDeviceModule] audioDeviceModule:[self audioDeviceModule].get()
audioProcessingModule:nullptr]; audioProcessingModule:nullptr];
#endif #endif
} }

View File

@ -38,7 +38,7 @@
nativeAudioDecoderFactory:_audioDecoderFactory nativeAudioDecoderFactory:_audioDecoderFactory
nativeVideoEncoderFactory:std::move(_videoEncoderFactory) nativeVideoEncoderFactory:std::move(_videoEncoderFactory)
nativeVideoDecoderFactory:std::move(_videoDecoderFactory) nativeVideoDecoderFactory:std::move(_videoDecoderFactory)
audioDeviceModule:_audioDeviceModule audioDeviceModule:_audioDeviceModule.get()
audioProcessingModule:_audioProcessingModule]; audioProcessingModule:_audioProcessingModule];
} }

View File

@ -52,7 +52,7 @@
} }
- (void)setTrack:(RTC_OBJC_TYPE(RTCMediaStreamTrack) *)track { - (void)setTrack:(RTC_OBJC_TYPE(RTCMediaStreamTrack) *)track {
if (!_nativeRtpSender->SetTrack(track.nativeTrack)) { if (!_nativeRtpSender->SetTrack(track.nativeTrack.get())) {
RTCLogError(@"RTC_OBJC_TYPE(RTCRtpSender)(%p): Failed to set track %@", self, track); RTCLogError(@"RTC_OBJC_TYPE(RTCRtpSender)(%p): Failed to set track %@", self, track);
} }
} }

View File

@ -30,8 +30,7 @@
NSParameterAssert(trackId.length); NSParameterAssert(trackId.length);
std::string nativeId = [NSString stdStringForString:trackId]; std::string nativeId = [NSString stdStringForString:trackId];
rtc::scoped_refptr<webrtc::VideoTrackInterface> track = rtc::scoped_refptr<webrtc::VideoTrackInterface> track =
factory.nativeFactory->CreateVideoTrack(nativeId, factory.nativeFactory->CreateVideoTrack(nativeId, source.nativeVideoSource.get());
source.nativeVideoSource);
if (self = [self initWithFactory:factory nativeTrack:track type:RTCMediaStreamTrackTypeVideo]) { if (self = [self initWithFactory:factory nativeTrack:track type:RTCMediaStreamTrackTypeVideo]) {
_source = source; _source = source;
} }

View File

@ -25,7 +25,8 @@ rtc::scoped_refptr<webrtc::VideoTrackSourceInterface> ObjCToNativeVideoCapturer(
rtc::scoped_refptr<webrtc::ObjCVideoTrackSource> objc_video_track_source = rtc::scoped_refptr<webrtc::ObjCVideoTrackSource> objc_video_track_source =
rtc::make_ref_counted<webrtc::ObjCVideoTrackSource>(adapter); rtc::make_ref_counted<webrtc::ObjCVideoTrackSource>(adapter);
rtc::scoped_refptr<webrtc::VideoTrackSourceInterface> video_source = rtc::scoped_refptr<webrtc::VideoTrackSourceInterface> video_source =
webrtc::CreateVideoTrackSourceProxy(signaling_thread, worker_thread, objc_video_track_source); webrtc::CreateVideoTrackSourceProxy(
signaling_thread, worker_thread, objc_video_track_source.get());
objc_video_capturer.delegate = adapter; objc_video_capturer.delegate = adapter;

View File

@ -73,7 +73,7 @@ class ObjCCallbackVideoSink : public rtc::VideoSinkInterface<webrtc::VideoFrame>
cricket::FakeVideoRenderer *video_renderer = new cricket::FakeVideoRenderer(); cricket::FakeVideoRenderer *video_renderer = new cricket::FakeVideoRenderer();
const rtc::VideoSinkWants video_sink_wants; const rtc::VideoSinkWants video_sink_wants;
rtc::VideoSourceInterface<webrtc::VideoFrame> *video_source_interface = _video_source; rtc::VideoSourceInterface<webrtc::VideoFrame> *video_source_interface = _video_source.get();
video_source_interface->AddOrUpdateSink(video_renderer, video_sink_wants); video_source_interface->AddOrUpdateSink(video_renderer, video_sink_wants);
_video_source->OnOutputFormatRequest(640, 360, 30); _video_source->OnOutputFormatRequest(640, 360, 30);
@ -105,7 +105,7 @@ class ObjCCallbackVideoSink : public rtc::VideoSinkInterface<webrtc::VideoFrame>
cricket::FakeVideoRenderer *video_renderer = new cricket::FakeVideoRenderer(); cricket::FakeVideoRenderer *video_renderer = new cricket::FakeVideoRenderer();
const rtc::VideoSinkWants video_sink_wants; const rtc::VideoSinkWants video_sink_wants;
rtc::VideoSourceInterface<webrtc::VideoFrame> *video_source_interface = _video_source; rtc::VideoSourceInterface<webrtc::VideoFrame> *video_source_interface = _video_source.get();
video_source_interface->AddOrUpdateSink(video_renderer, video_sink_wants); video_source_interface->AddOrUpdateSink(video_renderer, video_sink_wants);
_video_source->OnOutputFormatRequest(912, 514, 30); _video_source->OnOutputFormatRequest(912, 514, 30);
@ -135,7 +135,7 @@ class ObjCCallbackVideoSink : public rtc::VideoSinkInterface<webrtc::VideoFrame>
cricket::FakeVideoRenderer *video_renderer = new cricket::FakeVideoRenderer(); cricket::FakeVideoRenderer *video_renderer = new cricket::FakeVideoRenderer();
const rtc::VideoSinkWants video_sink_wants; const rtc::VideoSinkWants video_sink_wants;
rtc::VideoSourceInterface<webrtc::VideoFrame> *video_source_interface = _video_source; rtc::VideoSourceInterface<webrtc::VideoFrame> *video_source_interface = _video_source.get();
video_source_interface->AddOrUpdateSink(video_renderer, video_sink_wants); video_source_interface->AddOrUpdateSink(video_renderer, video_sink_wants);
_video_source->OnOutputFormatRequest(640, 360, 30); _video_source->OnOutputFormatRequest(640, 360, 30);
@ -188,7 +188,7 @@ class ObjCCallbackVideoSink : public rtc::VideoSinkInterface<webrtc::VideoFrame>
}); });
const rtc::VideoSinkWants video_sink_wants; const rtc::VideoSinkWants video_sink_wants;
rtc::VideoSourceInterface<webrtc::VideoFrame> *video_source_interface = _video_source; rtc::VideoSourceInterface<webrtc::VideoFrame> *video_source_interface = _video_source.get();
video_source_interface->AddOrUpdateSink(&callback_video_sink, video_sink_wants); video_source_interface->AddOrUpdateSink(&callback_video_sink, video_sink_wants);
_video_source->OnOutputFormatRequest(640, 360, 30); _video_source->OnOutputFormatRequest(640, 360, 30);
@ -224,7 +224,7 @@ class ObjCCallbackVideoSink : public rtc::VideoSinkInterface<webrtc::VideoFrame>
}); });
const rtc::VideoSinkWants video_sink_wants; const rtc::VideoSinkWants video_sink_wants;
rtc::VideoSourceInterface<webrtc::VideoFrame> *video_source_interface = _video_source; rtc::VideoSourceInterface<webrtc::VideoFrame> *video_source_interface = _video_source.get();
video_source_interface->AddOrUpdateSink(&callback_video_sink, video_sink_wants); video_source_interface->AddOrUpdateSink(&callback_video_sink, video_sink_wants);
_video_source->OnOutputFormatRequest(640, 360, 30); _video_source->OnOutputFormatRequest(640, 360, 30);
@ -260,7 +260,7 @@ class ObjCCallbackVideoSink : public rtc::VideoSinkInterface<webrtc::VideoFrame>
}); });
const rtc::VideoSinkWants video_sink_wants; const rtc::VideoSinkWants video_sink_wants;
rtc::VideoSourceInterface<webrtc::VideoFrame> *video_source_interface = _video_source; rtc::VideoSourceInterface<webrtc::VideoFrame> *video_source_interface = _video_source.get();
video_source_interface->AddOrUpdateSink(&callback_video_sink, video_sink_wants); video_source_interface->AddOrUpdateSink(&callback_video_sink, video_sink_wants);
_video_source->OnOutputFormatRequest(640, 360, 30); _video_source->OnOutputFormatRequest(640, 360, 30);
@ -305,7 +305,7 @@ class ObjCCallbackVideoSink : public rtc::VideoSinkInterface<webrtc::VideoFrame>
}); });
const rtc::VideoSinkWants video_sink_wants; const rtc::VideoSinkWants video_sink_wants;
rtc::VideoSourceInterface<webrtc::VideoFrame> *video_source_interface = _video_source; rtc::VideoSourceInterface<webrtc::VideoFrame> *video_source_interface = _video_source.get();
video_source_interface->AddOrUpdateSink(&callback_video_sink, video_sink_wants); video_source_interface->AddOrUpdateSink(&callback_video_sink, video_sink_wants);
_video_source->OnOutputFormatRequest(480, 270, 30); _video_source->OnOutputFormatRequest(480, 270, 30);
@ -349,7 +349,7 @@ class ObjCCallbackVideoSink : public rtc::VideoSinkInterface<webrtc::VideoFrame>
}); });
const rtc::VideoSinkWants video_sink_wants; const rtc::VideoSinkWants video_sink_wants;
rtc::VideoSourceInterface<webrtc::VideoFrame> *video_source_interface = _video_source; rtc::VideoSourceInterface<webrtc::VideoFrame> *video_source_interface = _video_source.get();
video_source_interface->AddOrUpdateSink(&callback_video_sink, video_sink_wants); video_source_interface->AddOrUpdateSink(&callback_video_sink, video_sink_wants);
_video_source->OnOutputFormatRequest(640, 360, 30); _video_source->OnOutputFormatRequest(640, 360, 30);
@ -393,7 +393,7 @@ class ObjCCallbackVideoSink : public rtc::VideoSinkInterface<webrtc::VideoFrame>
}); });
const rtc::VideoSinkWants video_sink_wants; const rtc::VideoSinkWants video_sink_wants;
rtc::VideoSourceInterface<webrtc::VideoFrame> *video_source_interface = _video_source; rtc::VideoSourceInterface<webrtc::VideoFrame> *video_source_interface = _video_source.get();
video_source_interface->AddOrUpdateSink(&callback_video_sink, video_sink_wants); video_source_interface->AddOrUpdateSink(&callback_video_sink, video_sink_wants);
_video_source->OnOutputFormatRequest(640, 360, 30); _video_source->OnOutputFormatRequest(640, 360, 30);
@ -426,7 +426,7 @@ class ObjCCallbackVideoSink : public rtc::VideoSinkInterface<webrtc::VideoFrame>
}); });
const rtc::VideoSinkWants video_sink_wants; const rtc::VideoSinkWants video_sink_wants;
rtc::VideoSourceInterface<webrtc::VideoFrame> *video_source_interface = _video_source; rtc::VideoSourceInterface<webrtc::VideoFrame> *video_source_interface = _video_source.get();
video_source_interface->AddOrUpdateSink(&callback_video_sink, video_sink_wants); video_source_interface->AddOrUpdateSink(&callback_video_sink, video_sink_wants);
_video_source->OnOutputFormatRequest(640, 360, 30); _video_source->OnOutputFormatRequest(640, 360, 30);
@ -458,7 +458,7 @@ class ObjCCallbackVideoSink : public rtc::VideoSinkInterface<webrtc::VideoFrame>
}); });
const rtc::VideoSinkWants video_sink_wants; const rtc::VideoSinkWants video_sink_wants;
rtc::VideoSourceInterface<webrtc::VideoFrame> *video_source_interface = _video_source; rtc::VideoSourceInterface<webrtc::VideoFrame> *video_source_interface = _video_source.get();
video_source_interface->AddOrUpdateSink(&callback_video_sink, video_sink_wants); video_source_interface->AddOrUpdateSink(&callback_video_sink, video_sink_wants);
_video_source->OnOutputFormatRequest(640, 360, 30); _video_source->OnOutputFormatRequest(640, 360, 30);