mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-13 13:50:40 +01:00
Prepare for deleting implicit conversion from raw pointer to scoped_refptr.
Updates all webrtc code, to have a small followup cl to just add the "explicit" keyword. Patchset #24 passed all webrtc tests, with explicit. Bug: webrtc:13464 Change-Id: I39863d3752f73209b531120f66916dc9177bf63a Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/242363 Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org> Commit-Queue: Niels Moller <nisse@webrtc.org> Cr-Commit-Position: refs/heads/main@{#35718}
This commit is contained in:
parent
9609a825eb
commit
ac0d18341d
33 changed files with 85 additions and 76 deletions
|
@ -75,6 +75,8 @@ class scoped_refptr {
|
||||||
|
|
||||||
scoped_refptr() : ptr_(nullptr) {}
|
scoped_refptr() : ptr_(nullptr) {}
|
||||||
|
|
||||||
|
// TODO(bugs.webrtc.org/13464): Implicit construction is deprecated. Mark
|
||||||
|
// explicit, and add a new implicit constructor accepting a nullptr_t.
|
||||||
scoped_refptr(T* p) : ptr_(p) { // NOLINT(runtime/explicit)
|
scoped_refptr(T* p) : ptr_(p) { // NOLINT(runtime/explicit)
|
||||||
if (ptr_)
|
if (ptr_)
|
||||||
ptr_->AddRef();
|
ptr_->AddRef();
|
||||||
|
|
|
@ -61,7 +61,7 @@ I444Buffer::~I444Buffer() {}
|
||||||
|
|
||||||
// static
|
// static
|
||||||
rtc::scoped_refptr<I444Buffer> I444Buffer::Create(int width, int height) {
|
rtc::scoped_refptr<I444Buffer> I444Buffer::Create(int width, int height) {
|
||||||
return new rtc::RefCountedObject<I444Buffer>(width, height);
|
return rtc::make_ref_counted<I444Buffer>(width, height);
|
||||||
}
|
}
|
||||||
|
|
||||||
// static
|
// static
|
||||||
|
@ -70,8 +70,8 @@ rtc::scoped_refptr<I444Buffer> I444Buffer::Create(int width,
|
||||||
int stride_y,
|
int stride_y,
|
||||||
int stride_u,
|
int stride_u,
|
||||||
int stride_v) {
|
int stride_v) {
|
||||||
return new rtc::RefCountedObject<I444Buffer>(width, height, stride_y,
|
return rtc::make_ref_counted<I444Buffer>(width, height, stride_y, stride_u,
|
||||||
stride_u, stride_v);
|
stride_v);
|
||||||
}
|
}
|
||||||
|
|
||||||
// static
|
// static
|
||||||
|
|
|
@ -143,7 +143,7 @@ rtc::scoped_refptr<I444Buffer> VideoFrameBufferPool::CreateI444Buffer(
|
||||||
return nullptr;
|
return nullptr;
|
||||||
// Allocate new buffer.
|
// Allocate new buffer.
|
||||||
rtc::scoped_refptr<I444Buffer> buffer =
|
rtc::scoped_refptr<I444Buffer> buffer =
|
||||||
new rtc::RefCountedObject<I444Buffer>(width, height);
|
rtc::make_ref_counted<I444Buffer>(width, height);
|
||||||
|
|
||||||
if (zero_initialize_)
|
if (zero_initialize_)
|
||||||
buffer->InitializeData();
|
buffer->InitializeData();
|
||||||
|
|
|
@ -265,7 +265,7 @@ void CreateOfferObserver::OnSuccess(webrtc::SessionDescriptionInterface* desc) {
|
||||||
webrtc::CreateSessionDescription(webrtc::SdpType::kAnswer, sdp));
|
webrtc::CreateSessionDescription(webrtc::SdpType::kAnswer, sdp));
|
||||||
pc_->SetRemoteDescription(
|
pc_->SetRemoteDescription(
|
||||||
std::move(answer),
|
std::move(answer),
|
||||||
new rtc::RefCountedObject<SetRemoteSessionDescriptionObserver>());
|
rtc::make_ref_counted<SetRemoteSessionDescriptionObserver>());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CreateOfferObserver::OnFailure(webrtc::RTCError error) {
|
void CreateOfferObserver::OnFailure(webrtc::RTCError error) {
|
||||||
|
|
|
@ -220,7 +220,7 @@ void CreateOfferObserver::OnSuccess(webrtc::SessionDescriptionInterface* desc) {
|
||||||
std::unique_ptr<webrtc::SessionDescriptionInterface> answer(
|
std::unique_ptr<webrtc::SessionDescriptionInterface> answer(
|
||||||
webrtc::CreateSessionDescription(webrtc::SdpType::kAnswer, sdp));
|
webrtc::CreateSessionDescription(webrtc::SdpType::kAnswer, sdp));
|
||||||
pc_->SetRemoteDescription(std::move(answer),
|
pc_->SetRemoteDescription(std::move(answer),
|
||||||
new rtc::RefCountedObject<SetRemoteSessionDescriptionObserver>());
|
rtc::make_ref_counted<SetRemoteSessionDescriptionObserver>());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CreateOfferObserver::OnFailure(webrtc::RTCError error) {
|
void CreateOfferObserver::OnFailure(webrtc::RTCError error) {
|
||||||
|
|
|
@ -85,8 +85,7 @@ class CapturerTrackSource : public webrtc::VideoTrackSource {
|
||||||
capturer = absl::WrapUnique(
|
capturer = absl::WrapUnique(
|
||||||
webrtc::test::VcmCapturer::Create(kWidth, kHeight, kFps, i));
|
webrtc::test::VcmCapturer::Create(kWidth, kHeight, kFps, i));
|
||||||
if (capturer) {
|
if (capturer) {
|
||||||
return new rtc::RefCountedObject<CapturerTrackSource>(
|
return rtc::make_ref_counted<CapturerTrackSource>(std::move(capturer));
|
||||||
std::move(capturer));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -61,7 +61,7 @@ class CapturerTrackSource : public webrtc::VideoTrackSource {
|
||||||
if (!capturer) {
|
if (!capturer) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
return new rtc::RefCountedObject<CapturerTrackSource>(std::move(capturer));
|
return rtc::make_ref_counted<CapturerTrackSource>(std::move(capturer));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
|
@ -15,6 +15,8 @@
|
||||||
#include "modules/desktop_capture/win/full_screen_win_application_handler.h"
|
#include "modules/desktop_capture/win/full_screen_win_application_handler.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "rtc_base/ref_counted_object.h"
|
||||||
|
|
||||||
namespace webrtc {
|
namespace webrtc {
|
||||||
|
|
||||||
DesktopCaptureOptions::DesktopCaptureOptions() {}
|
DesktopCaptureOptions::DesktopCaptureOptions() {}
|
||||||
|
@ -36,12 +38,15 @@ DesktopCaptureOptions DesktopCaptureOptions::CreateDefault() {
|
||||||
result.set_x_display(SharedXDisplay::CreateDefault());
|
result.set_x_display(SharedXDisplay::CreateDefault());
|
||||||
#endif
|
#endif
|
||||||
#if defined(WEBRTC_MAC) && !defined(WEBRTC_IOS)
|
#if defined(WEBRTC_MAC) && !defined(WEBRTC_IOS)
|
||||||
result.set_configuration_monitor(new DesktopConfigurationMonitor());
|
result.set_configuration_monitor(
|
||||||
|
rtc::make_ref_counted<DesktopConfigurationMonitor>());
|
||||||
result.set_full_screen_window_detector(
|
result.set_full_screen_window_detector(
|
||||||
new FullScreenWindowDetector(CreateFullScreenMacApplicationHandler));
|
rtc::make_ref_counted<FullScreenWindowDetector>(
|
||||||
|
CreateFullScreenMacApplicationHandler));
|
||||||
#elif defined(WEBRTC_WIN)
|
#elif defined(WEBRTC_WIN)
|
||||||
result.set_full_screen_window_detector(
|
result.set_full_screen_window_detector(
|
||||||
new FullScreenWindowDetector(CreateFullScreenWinApplicationHandler));
|
rtc::make_ref_counted<FullScreenWindowDetector>(
|
||||||
|
CreateFullScreenWinApplicationHandler));
|
||||||
#endif
|
#endif
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,9 +36,9 @@ rtc::scoped_refptr<SharedXDisplay> SharedXDisplay::Create(
|
||||||
XOpenDisplay(display_name.empty() ? NULL : display_name.c_str());
|
XOpenDisplay(display_name.empty() ? NULL : display_name.c_str());
|
||||||
if (!display) {
|
if (!display) {
|
||||||
RTC_LOG(LS_ERROR) << "Unable to open display";
|
RTC_LOG(LS_ERROR) << "Unable to open display";
|
||||||
return NULL;
|
return nullptr;
|
||||||
}
|
}
|
||||||
return new SharedXDisplay(display);
|
return rtc::scoped_refptr<SharedXDisplay>(new SharedXDisplay(display));
|
||||||
}
|
}
|
||||||
|
|
||||||
// static
|
// static
|
||||||
|
|
|
@ -21,8 +21,8 @@ SharedDesktopFrame::~SharedDesktopFrame() {}
|
||||||
// static
|
// static
|
||||||
std::unique_ptr<SharedDesktopFrame> SharedDesktopFrame::Wrap(
|
std::unique_ptr<SharedDesktopFrame> SharedDesktopFrame::Wrap(
|
||||||
std::unique_ptr<DesktopFrame> desktop_frame) {
|
std::unique_ptr<DesktopFrame> desktop_frame) {
|
||||||
return std::unique_ptr<SharedDesktopFrame>(
|
return std::unique_ptr<SharedDesktopFrame>(new SharedDesktopFrame(
|
||||||
new SharedDesktopFrame(new Core(std::move(desktop_frame))));
|
rtc::scoped_refptr<Core>(new Core(std::move(desktop_frame)))));
|
||||||
}
|
}
|
||||||
|
|
||||||
SharedDesktopFrame* SharedDesktopFrame::Wrap(DesktopFrame* desktop_frame) {
|
SharedDesktopFrame* SharedDesktopFrame::Wrap(DesktopFrame* desktop_frame) {
|
||||||
|
|
|
@ -168,7 +168,7 @@ class VideoCaptureTest : public ::testing::Test {
|
||||||
rtc::scoped_refptr<VideoCaptureModule> module(
|
rtc::scoped_refptr<VideoCaptureModule> module(
|
||||||
VideoCaptureFactory::Create(unique_name));
|
VideoCaptureFactory::Create(unique_name));
|
||||||
if (module.get() == NULL)
|
if (module.get() == NULL)
|
||||||
return NULL;
|
return nullptr;
|
||||||
|
|
||||||
EXPECT_FALSE(module->CaptureStarted());
|
EXPECT_FALSE(module->CaptureStarted());
|
||||||
|
|
||||||
|
|
|
@ -275,8 +275,8 @@ int LibvpxVp9Decoder::ReturnFrame(
|
||||||
// This buffer contains all of `img`'s image data, a reference counted
|
// This buffer contains all of `img`'s image data, a reference counted
|
||||||
// Vp9FrameBuffer. (libvpx is done with the buffers after a few
|
// Vp9FrameBuffer. (libvpx is done with the buffers after a few
|
||||||
// vpx_codec_decode calls or vpx_codec_destroy).
|
// vpx_codec_decode calls or vpx_codec_destroy).
|
||||||
rtc::scoped_refptr<Vp9FrameBufferPool::Vp9FrameBuffer> img_buffer =
|
rtc::scoped_refptr<Vp9FrameBufferPool::Vp9FrameBuffer> img_buffer(
|
||||||
static_cast<Vp9FrameBufferPool::Vp9FrameBuffer*>(img->fb_priv);
|
static_cast<Vp9FrameBufferPool::Vp9FrameBuffer*>(img->fb_priv));
|
||||||
|
|
||||||
// The buffer can be used directly by the VideoFrame (without copy) by
|
// The buffer can be used directly by the VideoFrame (without copy) by
|
||||||
// using a Wrapped*Buffer.
|
// using a Wrapped*Buffer.
|
||||||
|
|
|
@ -59,7 +59,7 @@ rtc::scoped_refptr<AudioTrackInterface> MediaStream::FindAudioTrack(
|
||||||
const std::string& track_id) {
|
const std::string& track_id) {
|
||||||
AudioTrackVector::iterator it = FindTrack(&audio_tracks_, track_id);
|
AudioTrackVector::iterator it = FindTrack(&audio_tracks_, track_id);
|
||||||
if (it == audio_tracks_.end())
|
if (it == audio_tracks_.end())
|
||||||
return NULL;
|
return nullptr;
|
||||||
return *it;
|
return *it;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -67,7 +67,7 @@ rtc::scoped_refptr<VideoTrackInterface> MediaStream::FindVideoTrack(
|
||||||
const std::string& track_id) {
|
const std::string& track_id) {
|
||||||
VideoTrackVector::iterator it = FindTrack(&video_tracks_, track_id);
|
VideoTrackVector::iterator it = FindTrack(&video_tracks_, track_id);
|
||||||
if (it == video_tracks_.end())
|
if (it == video_tracks_.end())
|
||||||
return NULL;
|
return nullptr;
|
||||||
return *it;
|
return *it;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -63,7 +63,7 @@ class MediaStreamTest : public ::testing::Test {
|
||||||
ASSERT_TRUE(video_track_.get() != NULL);
|
ASSERT_TRUE(video_track_.get() != NULL);
|
||||||
EXPECT_EQ(MediaStreamTrackInterface::kLive, video_track_->state());
|
EXPECT_EQ(MediaStreamTrackInterface::kLive, video_track_->state());
|
||||||
|
|
||||||
audio_track_ = AudioTrack::Create(kAudioTrackId, NULL);
|
audio_track_ = AudioTrack::Create(kAudioTrackId, nullptr);
|
||||||
|
|
||||||
ASSERT_TRUE(audio_track_.get() != NULL);
|
ASSERT_TRUE(audio_track_.get() != NULL);
|
||||||
EXPECT_EQ(MediaStreamTrackInterface::kLive, audio_track_->state());
|
EXPECT_EQ(MediaStreamTrackInterface::kLive, audio_track_->state());
|
||||||
|
|
|
@ -764,7 +764,8 @@ static ScopedJavaLocalRef<jobject> JNI_PeerConnection_AddTrack(
|
||||||
const JavaParamRef<jobject>& j_stream_labels) {
|
const JavaParamRef<jobject>& j_stream_labels) {
|
||||||
RTCErrorOr<rtc::scoped_refptr<RtpSenderInterface>> result =
|
RTCErrorOr<rtc::scoped_refptr<RtpSenderInterface>> result =
|
||||||
ExtractNativePC(jni, j_pc)->AddTrack(
|
ExtractNativePC(jni, j_pc)->AddTrack(
|
||||||
reinterpret_cast<MediaStreamTrackInterface*>(native_track),
|
rtc::scoped_refptr<MediaStreamTrackInterface>(
|
||||||
|
reinterpret_cast<MediaStreamTrackInterface*>(native_track)),
|
||||||
JavaListToNativeVector<std::string, jstring>(jni, j_stream_labels,
|
JavaListToNativeVector<std::string, jstring>(jni, j_stream_labels,
|
||||||
&JavaToNativeString));
|
&JavaToNativeString));
|
||||||
if (!result.ok()) {
|
if (!result.ok()) {
|
||||||
|
@ -792,7 +793,8 @@ static ScopedJavaLocalRef<jobject> JNI_PeerConnection_AddTransceiverWithTrack(
|
||||||
const JavaParamRef<jobject>& j_init) {
|
const JavaParamRef<jobject>& j_init) {
|
||||||
RTCErrorOr<rtc::scoped_refptr<RtpTransceiverInterface>> result =
|
RTCErrorOr<rtc::scoped_refptr<RtpTransceiverInterface>> result =
|
||||||
ExtractNativePC(jni, j_pc)->AddTransceiver(
|
ExtractNativePC(jni, j_pc)->AddTransceiver(
|
||||||
reinterpret_cast<MediaStreamTrackInterface*>(native_track),
|
rtc::scoped_refptr<MediaStreamTrackInterface>(
|
||||||
|
reinterpret_cast<MediaStreamTrackInterface*>(native_track)),
|
||||||
JavaToNativeRtpTransceiverInit(jni, j_init));
|
JavaToNativeRtpTransceiverInit(jni, j_init));
|
||||||
if (!result.ok()) {
|
if (!result.ok()) {
|
||||||
RTC_LOG(LS_ERROR) << "Failed to add transceiver: "
|
RTC_LOG(LS_ERROR) << "Failed to add transceiver: "
|
||||||
|
|
|
@ -351,11 +351,12 @@ JNI_PeerConnectionFactory_CreatePeerConnectionFactory(
|
||||||
jlong native_network_controller_factory,
|
jlong native_network_controller_factory,
|
||||||
jlong native_network_state_predictor_factory,
|
jlong native_network_state_predictor_factory,
|
||||||
jlong native_neteq_factory) {
|
jlong native_neteq_factory) {
|
||||||
rtc::scoped_refptr<AudioProcessing> audio_processor =
|
rtc::scoped_refptr<AudioProcessing> audio_processor(
|
||||||
reinterpret_cast<AudioProcessing*>(native_audio_processor);
|
reinterpret_cast<AudioProcessing*>(native_audio_processor));
|
||||||
return CreatePeerConnectionFactoryForJava(
|
return CreatePeerConnectionFactoryForJava(
|
||||||
jni, jcontext, joptions,
|
jni, jcontext, joptions,
|
||||||
reinterpret_cast<AudioDeviceModule*>(native_audio_device_module),
|
rtc::scoped_refptr<AudioDeviceModule>(
|
||||||
|
reinterpret_cast<AudioDeviceModule*>(native_audio_device_module)),
|
||||||
TakeOwnershipOfRefPtr<AudioEncoderFactory>(native_audio_encoder_factory),
|
TakeOwnershipOfRefPtr<AudioEncoderFactory>(native_audio_encoder_factory),
|
||||||
TakeOwnershipOfRefPtr<AudioDecoderFactory>(native_audio_decoder_factory),
|
TakeOwnershipOfRefPtr<AudioDecoderFactory>(native_audio_decoder_factory),
|
||||||
jencoder_factory, jdecoder_factory,
|
jencoder_factory, jdecoder_factory,
|
||||||
|
|
|
@ -118,8 +118,9 @@ static void JNI_RtpReceiver_SetFrameDecryptor(JNIEnv* jni,
|
||||||
jlong j_rtp_sender_pointer,
|
jlong j_rtp_sender_pointer,
|
||||||
jlong j_frame_decryptor_pointer) {
|
jlong j_frame_decryptor_pointer) {
|
||||||
reinterpret_cast<RtpReceiverInterface*>(j_rtp_sender_pointer)
|
reinterpret_cast<RtpReceiverInterface*>(j_rtp_sender_pointer)
|
||||||
->SetFrameDecryptor(reinterpret_cast<FrameDecryptorInterface*>(
|
->SetFrameDecryptor(rtc::scoped_refptr<FrameDecryptorInterface>(
|
||||||
j_frame_decryptor_pointer));
|
reinterpret_cast<FrameDecryptorInterface*>(
|
||||||
|
j_frame_decryptor_pointer)));
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace jni
|
} // namespace jni
|
||||||
|
|
|
@ -105,8 +105,9 @@ static void JNI_RtpSender_SetFrameEncryptor(JNIEnv* jni,
|
||||||
jlong j_rtp_sender_pointer,
|
jlong j_rtp_sender_pointer,
|
||||||
jlong j_frame_encryptor_pointer) {
|
jlong j_frame_encryptor_pointer) {
|
||||||
reinterpret_cast<RtpSenderInterface*>(j_rtp_sender_pointer)
|
reinterpret_cast<RtpSenderInterface*>(j_rtp_sender_pointer)
|
||||||
->SetFrameEncryptor(reinterpret_cast<FrameEncryptorInterface*>(
|
->SetFrameEncryptor(rtc::scoped_refptr<FrameEncryptorInterface>(
|
||||||
j_frame_encryptor_pointer));
|
reinterpret_cast<FrameEncryptorInterface*>(
|
||||||
|
j_frame_encryptor_pointer)));
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace jni
|
} // namespace jni
|
||||||
|
|
|
@ -48,11 +48,10 @@
|
||||||
|
|
||||||
- (RTC_OBJC_TYPE(RTCAudioSource) *)source {
|
- (RTC_OBJC_TYPE(RTCAudioSource) *)source {
|
||||||
if (!_source) {
|
if (!_source) {
|
||||||
rtc::scoped_refptr<webrtc::AudioSourceInterface> source =
|
rtc::scoped_refptr<webrtc::AudioSourceInterface> source(self.nativeAudioTrack->GetSource());
|
||||||
self.nativeAudioTrack->GetSource();
|
|
||||||
if (source) {
|
if (source) {
|
||||||
_source = [[RTC_OBJC_TYPE(RTCAudioSource) alloc] initWithFactory:self.factory
|
_source = [[RTC_OBJC_TYPE(RTCAudioSource) alloc] initWithFactory:self.factory
|
||||||
nativeAudioSource:source.get()];
|
nativeAudioSource:source];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return _source;
|
return _source;
|
||||||
|
@ -61,7 +60,8 @@
|
||||||
#pragma mark - Private
|
#pragma mark - Private
|
||||||
|
|
||||||
- (rtc::scoped_refptr<webrtc::AudioTrackInterface>)nativeAudioTrack {
|
- (rtc::scoped_refptr<webrtc::AudioTrackInterface>)nativeAudioTrack {
|
||||||
return static_cast<webrtc::AudioTrackInterface *>(self.nativeTrack.get());
|
return rtc::scoped_refptr<webrtc::AudioTrackInterface>(
|
||||||
|
static_cast<webrtc::AudioTrackInterface *>(self.nativeTrack.get()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
|
@ -20,7 +20,7 @@ namespace {
|
||||||
class ObjCEncodedImageBuffer : public webrtc::EncodedImageBufferInterface {
|
class ObjCEncodedImageBuffer : public webrtc::EncodedImageBufferInterface {
|
||||||
public:
|
public:
|
||||||
static rtc::scoped_refptr<ObjCEncodedImageBuffer> Create(NSData *data) {
|
static rtc::scoped_refptr<ObjCEncodedImageBuffer> Create(NSData *data) {
|
||||||
return new rtc::RefCountedObject<ObjCEncodedImageBuffer>(data);
|
return rtc::make_ref_counted<ObjCEncodedImageBuffer>(data);
|
||||||
}
|
}
|
||||||
const uint8_t *data() const override { return static_cast<const uint8_t *>(data_.bytes); }
|
const uint8_t *data() const override { return static_cast<const uint8_t *>(data_.bytes); }
|
||||||
// TODO(bugs.webrtc.org/9378): delete this non-const data method.
|
// TODO(bugs.webrtc.org/9378): delete this non-const data method.
|
||||||
|
|
|
@ -69,21 +69,21 @@ class StatsObserverAdapter : public StatsObserver {
|
||||||
|
|
||||||
- (void)statisticsForSender : (RTC_OBJC_TYPE(RTCRtpSender) *)sender completionHandler
|
- (void)statisticsForSender : (RTC_OBJC_TYPE(RTCRtpSender) *)sender completionHandler
|
||||||
: (RTCStatisticsCompletionHandler)completionHandler {
|
: (RTCStatisticsCompletionHandler)completionHandler {
|
||||||
rtc::scoped_refptr<webrtc::StatsCollectorCallbackAdapter> collector(
|
rtc::scoped_refptr<webrtc::StatsCollectorCallbackAdapter> collector =
|
||||||
new rtc::RefCountedObject<webrtc::StatsCollectorCallbackAdapter>(completionHandler));
|
rtc::make_ref_counted<webrtc::StatsCollectorCallbackAdapter>(completionHandler);
|
||||||
self.nativePeerConnection->GetStats(sender.nativeRtpSender, collector);
|
self.nativePeerConnection->GetStats(sender.nativeRtpSender, collector);
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)statisticsForReceiver:(RTC_OBJC_TYPE(RTCRtpReceiver) *)receiver
|
- (void)statisticsForReceiver:(RTC_OBJC_TYPE(RTCRtpReceiver) *)receiver
|
||||||
completionHandler:(RTCStatisticsCompletionHandler)completionHandler {
|
completionHandler:(RTCStatisticsCompletionHandler)completionHandler {
|
||||||
rtc::scoped_refptr<webrtc::StatsCollectorCallbackAdapter> collector(
|
rtc::scoped_refptr<webrtc::StatsCollectorCallbackAdapter> collector =
|
||||||
new rtc::RefCountedObject<webrtc::StatsCollectorCallbackAdapter>(completionHandler));
|
rtc::make_ref_counted<webrtc::StatsCollectorCallbackAdapter>(completionHandler);
|
||||||
self.nativePeerConnection->GetStats(receiver.nativeRtpReceiver, collector);
|
self.nativePeerConnection->GetStats(receiver.nativeRtpReceiver, collector);
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)statisticsWithCompletionHandler:(RTCStatisticsCompletionHandler)completionHandler {
|
- (void)statisticsWithCompletionHandler:(RTCStatisticsCompletionHandler)completionHandler {
|
||||||
rtc::scoped_refptr<webrtc::StatsCollectorCallbackAdapter> collector(
|
rtc::scoped_refptr<webrtc::StatsCollectorCallbackAdapter> collector =
|
||||||
new rtc::RefCountedObject<webrtc::StatsCollectorCallbackAdapter>(completionHandler));
|
rtc::make_ref_counted<webrtc::StatsCollectorCallbackAdapter>(completionHandler);
|
||||||
self.nativePeerConnection->GetStats(collector);
|
self.nativePeerConnection->GetStats(collector);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,9 +91,8 @@ class StatsObserverAdapter : public StatsObserver {
|
||||||
statsOutputLevel:(RTCStatsOutputLevel)statsOutputLevel
|
statsOutputLevel:(RTCStatsOutputLevel)statsOutputLevel
|
||||||
completionHandler:
|
completionHandler:
|
||||||
(void (^)(NSArray<RTC_OBJC_TYPE(RTCLegacyStatsReport) *> *stats))completionHandler {
|
(void (^)(NSArray<RTC_OBJC_TYPE(RTCLegacyStatsReport) *> *stats))completionHandler {
|
||||||
rtc::scoped_refptr<webrtc::StatsObserverAdapter> observer(
|
rtc::scoped_refptr<webrtc::StatsObserverAdapter> observer =
|
||||||
new rtc::RefCountedObject<webrtc::StatsObserverAdapter>
|
rtc::make_ref_counted<webrtc::StatsObserverAdapter>(completionHandler);
|
||||||
(completionHandler));
|
|
||||||
webrtc::PeerConnectionInterface::StatsOutputLevel nativeOutputLevel =
|
webrtc::PeerConnectionInterface::StatsOutputLevel nativeOutputLevel =
|
||||||
[[self class] nativeStatsOutputLevelForLevel:statsOutputLevel];
|
[[self class] nativeStatsOutputLevelForLevel:statsOutputLevel];
|
||||||
self.nativePeerConnection->GetStats(
|
self.nativePeerConnection->GetStats(
|
||||||
|
|
|
@ -572,9 +572,8 @@ void PeerConnectionDelegateAdapter::OnRemoveTrack(
|
||||||
- (void)offerForConstraints:(RTC_OBJC_TYPE(RTCMediaConstraints) *)constraints
|
- (void)offerForConstraints:(RTC_OBJC_TYPE(RTCMediaConstraints) *)constraints
|
||||||
completionHandler:(RTCCreateSessionDescriptionCompletionHandler)completionHandler {
|
completionHandler:(RTCCreateSessionDescriptionCompletionHandler)completionHandler {
|
||||||
RTC_DCHECK(completionHandler != nil);
|
RTC_DCHECK(completionHandler != nil);
|
||||||
rtc::scoped_refptr<webrtc::CreateSessionDescriptionObserverAdapter>
|
rtc::scoped_refptr<webrtc::CreateSessionDescriptionObserverAdapter> observer =
|
||||||
observer(new rtc::RefCountedObject
|
rtc::make_ref_counted<webrtc::CreateSessionDescriptionObserverAdapter>(completionHandler);
|
||||||
<webrtc::CreateSessionDescriptionObserverAdapter>(completionHandler));
|
|
||||||
webrtc::PeerConnectionInterface::RTCOfferAnswerOptions options;
|
webrtc::PeerConnectionInterface::RTCOfferAnswerOptions options;
|
||||||
CopyConstraintsIntoOfferAnswerOptions(constraints.nativeConstraints.get(), &options);
|
CopyConstraintsIntoOfferAnswerOptions(constraints.nativeConstraints.get(), &options);
|
||||||
|
|
||||||
|
@ -584,9 +583,8 @@ void PeerConnectionDelegateAdapter::OnRemoveTrack(
|
||||||
- (void)answerForConstraints:(RTC_OBJC_TYPE(RTCMediaConstraints) *)constraints
|
- (void)answerForConstraints:(RTC_OBJC_TYPE(RTCMediaConstraints) *)constraints
|
||||||
completionHandler:(RTCCreateSessionDescriptionCompletionHandler)completionHandler {
|
completionHandler:(RTCCreateSessionDescriptionCompletionHandler)completionHandler {
|
||||||
RTC_DCHECK(completionHandler != nil);
|
RTC_DCHECK(completionHandler != nil);
|
||||||
rtc::scoped_refptr<webrtc::CreateSessionDescriptionObserverAdapter>
|
rtc::scoped_refptr<webrtc::CreateSessionDescriptionObserverAdapter> observer =
|
||||||
observer(new rtc::RefCountedObject
|
rtc::make_ref_counted<webrtc::CreateSessionDescriptionObserverAdapter>(completionHandler);
|
||||||
<webrtc::CreateSessionDescriptionObserverAdapter>(completionHandler));
|
|
||||||
webrtc::PeerConnectionInterface::RTCOfferAnswerOptions options;
|
webrtc::PeerConnectionInterface::RTCOfferAnswerOptions options;
|
||||||
CopyConstraintsIntoOfferAnswerOptions(constraints.nativeConstraints.get(), &options);
|
CopyConstraintsIntoOfferAnswerOptions(constraints.nativeConstraints.get(), &options);
|
||||||
|
|
||||||
|
@ -596,24 +594,24 @@ void PeerConnectionDelegateAdapter::OnRemoveTrack(
|
||||||
- (void)setLocalDescription:(RTC_OBJC_TYPE(RTCSessionDescription) *)sdp
|
- (void)setLocalDescription:(RTC_OBJC_TYPE(RTCSessionDescription) *)sdp
|
||||||
completionHandler:(RTCSetSessionDescriptionCompletionHandler)completionHandler {
|
completionHandler:(RTCSetSessionDescriptionCompletionHandler)completionHandler {
|
||||||
RTC_DCHECK(completionHandler != nil);
|
RTC_DCHECK(completionHandler != nil);
|
||||||
rtc::scoped_refptr<webrtc::SetLocalDescriptionObserverInterface> observer(
|
rtc::scoped_refptr<webrtc::SetLocalDescriptionObserverInterface> observer =
|
||||||
new rtc::RefCountedObject<::SetSessionDescriptionObserver>(completionHandler));
|
rtc::make_ref_counted<::SetSessionDescriptionObserver>(completionHandler);
|
||||||
_peerConnection->SetLocalDescription(sdp.nativeDescription, observer);
|
_peerConnection->SetLocalDescription(sdp.nativeDescription, observer);
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)setLocalDescriptionWithCompletionHandler:
|
- (void)setLocalDescriptionWithCompletionHandler:
|
||||||
(RTCSetSessionDescriptionCompletionHandler)completionHandler {
|
(RTCSetSessionDescriptionCompletionHandler)completionHandler {
|
||||||
RTC_DCHECK(completionHandler != nil);
|
RTC_DCHECK(completionHandler != nil);
|
||||||
rtc::scoped_refptr<webrtc::SetLocalDescriptionObserverInterface> observer(
|
rtc::scoped_refptr<webrtc::SetLocalDescriptionObserverInterface> observer =
|
||||||
new rtc::RefCountedObject<::SetSessionDescriptionObserver>(completionHandler));
|
rtc::make_ref_counted<::SetSessionDescriptionObserver>(completionHandler);
|
||||||
_peerConnection->SetLocalDescription(observer);
|
_peerConnection->SetLocalDescription(observer);
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)setRemoteDescription:(RTC_OBJC_TYPE(RTCSessionDescription) *)sdp
|
- (void)setRemoteDescription:(RTC_OBJC_TYPE(RTCSessionDescription) *)sdp
|
||||||
completionHandler:(RTCSetSessionDescriptionCompletionHandler)completionHandler {
|
completionHandler:(RTCSetSessionDescriptionCompletionHandler)completionHandler {
|
||||||
RTC_DCHECK(completionHandler != nil);
|
RTC_DCHECK(completionHandler != nil);
|
||||||
rtc::scoped_refptr<webrtc::SetRemoteDescriptionObserverInterface> observer(
|
rtc::scoped_refptr<webrtc::SetRemoteDescriptionObserverInterface> observer =
|
||||||
new rtc::RefCountedObject<::SetSessionDescriptionObserver>(completionHandler));
|
rtc::make_ref_counted<::SetSessionDescriptionObserver>(completionHandler);
|
||||||
_peerConnection->SetRemoteDescription(sdp.nativeDescription, observer);
|
_peerConnection->SetRemoteDescription(sdp.nativeDescription, observer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -61,8 +61,8 @@ static webrtc::ObjCVideoTrackSource *getObjCVideoSource(
|
||||||
signalingThread:(rtc::Thread *)signalingThread
|
signalingThread:(rtc::Thread *)signalingThread
|
||||||
workerThread:(rtc::Thread *)workerThread
|
workerThread:(rtc::Thread *)workerThread
|
||||||
isScreenCast:(BOOL)isScreenCast {
|
isScreenCast:(BOOL)isScreenCast {
|
||||||
rtc::scoped_refptr<webrtc::ObjCVideoTrackSource> objCVideoTrackSource(
|
rtc::scoped_refptr<webrtc::ObjCVideoTrackSource> objCVideoTrackSource =
|
||||||
new rtc::RefCountedObject<webrtc::ObjCVideoTrackSource>(isScreenCast));
|
rtc::make_ref_counted<webrtc::ObjCVideoTrackSource>(isScreenCast);
|
||||||
|
|
||||||
return [self initWithFactory:factory
|
return [self initWithFactory:factory
|
||||||
nativeVideoSource:webrtc::VideoTrackSourceProxy::Create(
|
nativeVideoSource:webrtc::VideoTrackSourceProxy::Create(
|
||||||
|
|
|
@ -59,11 +59,11 @@
|
||||||
|
|
||||||
- (RTC_OBJC_TYPE(RTCVideoSource) *)source {
|
- (RTC_OBJC_TYPE(RTCVideoSource) *)source {
|
||||||
if (!_source) {
|
if (!_source) {
|
||||||
rtc::scoped_refptr<webrtc::VideoTrackSourceInterface> source =
|
rtc::scoped_refptr<webrtc::VideoTrackSourceInterface> source(
|
||||||
self.nativeVideoTrack->GetSource();
|
self.nativeVideoTrack->GetSource());
|
||||||
if (source) {
|
if (source) {
|
||||||
_source = [[RTC_OBJC_TYPE(RTCVideoSource) alloc] initWithFactory:self.factory
|
_source = [[RTC_OBJC_TYPE(RTCVideoSource) alloc] initWithFactory:self.factory
|
||||||
nativeVideoSource:source.get()];
|
nativeVideoSource:source];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return _source;
|
return _source;
|
||||||
|
@ -107,7 +107,8 @@
|
||||||
#pragma mark - Private
|
#pragma mark - Private
|
||||||
|
|
||||||
- (rtc::scoped_refptr<webrtc::VideoTrackInterface>)nativeVideoTrack {
|
- (rtc::scoped_refptr<webrtc::VideoTrackInterface>)nativeVideoTrack {
|
||||||
return static_cast<webrtc::VideoTrackInterface *>(self.nativeTrack.get());
|
return rtc::scoped_refptr<webrtc::VideoTrackInterface>(
|
||||||
|
static_cast<webrtc::VideoTrackInterface *>(self.nativeTrack.get()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
|
@ -20,7 +20,7 @@ namespace webrtc {
|
||||||
rtc::scoped_refptr<AudioDeviceModule> CreateAudioDeviceModule(bool bypass_voice_processing) {
|
rtc::scoped_refptr<AudioDeviceModule> CreateAudioDeviceModule(bool bypass_voice_processing) {
|
||||||
RTC_DLOG(LS_INFO) << __FUNCTION__;
|
RTC_DLOG(LS_INFO) << __FUNCTION__;
|
||||||
#if defined(WEBRTC_IOS)
|
#if defined(WEBRTC_IOS)
|
||||||
return new rtc::RefCountedObject<ios_adm::AudioDeviceModuleIOS>(bypass_voice_processing);
|
return rtc::make_ref_counted<ios_adm::AudioDeviceModuleIOS>(bypass_voice_processing);
|
||||||
#else
|
#else
|
||||||
RTC_LOG(LS_ERROR) << "current platform is not supported => this module will self destruct!";
|
RTC_LOG(LS_ERROR) << "current platform is not supported => this module will self destruct!";
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
|
@ -22,8 +22,8 @@ rtc::scoped_refptr<webrtc::VideoTrackSourceInterface> ObjCToNativeVideoCapturer(
|
||||||
rtc::Thread *signaling_thread,
|
rtc::Thread *signaling_thread,
|
||||||
rtc::Thread *worker_thread) {
|
rtc::Thread *worker_thread) {
|
||||||
RTCObjCVideoSourceAdapter *adapter = [[RTCObjCVideoSourceAdapter alloc] init];
|
RTCObjCVideoSourceAdapter *adapter = [[RTCObjCVideoSourceAdapter alloc] init];
|
||||||
rtc::scoped_refptr<webrtc::ObjCVideoTrackSource> objc_video_track_source(
|
rtc::scoped_refptr<webrtc::ObjCVideoTrackSource> objc_video_track_source =
|
||||||
new rtc::RefCountedObject<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);
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ namespace webrtc {
|
||||||
|
|
||||||
rtc::scoped_refptr<VideoFrameBuffer> ObjCToNativeVideoFrameBuffer(
|
rtc::scoped_refptr<VideoFrameBuffer> ObjCToNativeVideoFrameBuffer(
|
||||||
id<RTC_OBJC_TYPE(RTCVideoFrameBuffer)> objc_video_frame_buffer) {
|
id<RTC_OBJC_TYPE(RTCVideoFrameBuffer)> objc_video_frame_buffer) {
|
||||||
return new rtc::RefCountedObject<ObjCFrameBuffer>(objc_video_frame_buffer);
|
return rtc::make_ref_counted<ObjCFrameBuffer>(objc_video_frame_buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
id<RTC_OBJC_TYPE(RTCVideoFrameBuffer)> NativeToObjCVideoFrameBuffer(
|
id<RTC_OBJC_TYPE(RTCVideoFrameBuffer)> NativeToObjCVideoFrameBuffer(
|
||||||
|
|
|
@ -67,7 +67,7 @@ int ObjCFrameBuffer::height() const {
|
||||||
|
|
||||||
rtc::scoped_refptr<I420BufferInterface> ObjCFrameBuffer::ToI420() {
|
rtc::scoped_refptr<I420BufferInterface> ObjCFrameBuffer::ToI420() {
|
||||||
rtc::scoped_refptr<I420BufferInterface> buffer =
|
rtc::scoped_refptr<I420BufferInterface> buffer =
|
||||||
new rtc::RefCountedObject<ObjCI420FrameBuffer>([frame_buffer_ toI420]);
|
rtc::make_ref_counted<ObjCI420FrameBuffer>([frame_buffer_ toI420]);
|
||||||
|
|
||||||
return buffer;
|
return buffer;
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,7 +57,7 @@ class ObjCVideoDecoder : public VideoDecoder {
|
||||||
int32_t RegisterDecodeCompleteCallback(DecodedImageCallback *callback) override {
|
int32_t RegisterDecodeCompleteCallback(DecodedImageCallback *callback) override {
|
||||||
[decoder_ setCallback:^(RTC_OBJC_TYPE(RTCVideoFrame) * frame) {
|
[decoder_ setCallback:^(RTC_OBJC_TYPE(RTCVideoFrame) * frame) {
|
||||||
const rtc::scoped_refptr<VideoFrameBuffer> buffer =
|
const rtc::scoped_refptr<VideoFrameBuffer> buffer =
|
||||||
new rtc::RefCountedObject<ObjCFrameBuffer>(frame.buffer);
|
rtc::make_ref_counted<ObjCFrameBuffer>(frame.buffer);
|
||||||
VideoFrame videoFrame =
|
VideoFrame videoFrame =
|
||||||
VideoFrame::Builder()
|
VideoFrame::Builder()
|
||||||
.set_video_frame_buffer(buffer)
|
.set_video_frame_buffer(buffer)
|
||||||
|
|
|
@ -91,12 +91,12 @@ void ObjCVideoTrackSource::OnCapturedFrame(RTC_OBJC_TYPE(RTCVideoFrame) * frame)
|
||||||
rtc::scoped_refptr<VideoFrameBuffer> buffer;
|
rtc::scoped_refptr<VideoFrameBuffer> buffer;
|
||||||
if (adapted_width == frame.width && adapted_height == frame.height) {
|
if (adapted_width == frame.width && adapted_height == frame.height) {
|
||||||
// No adaption - optimized path.
|
// No adaption - optimized path.
|
||||||
buffer = new rtc::RefCountedObject<ObjCFrameBuffer>(frame.buffer);
|
buffer = rtc::make_ref_counted<ObjCFrameBuffer>(frame.buffer);
|
||||||
} else if ([frame.buffer isKindOfClass:[RTC_OBJC_TYPE(RTCCVPixelBuffer) class]]) {
|
} else if ([frame.buffer isKindOfClass:[RTC_OBJC_TYPE(RTCCVPixelBuffer) class]]) {
|
||||||
// Adapted CVPixelBuffer frame.
|
// Adapted CVPixelBuffer frame.
|
||||||
RTC_OBJC_TYPE(RTCCVPixelBuffer) *rtcPixelBuffer =
|
RTC_OBJC_TYPE(RTCCVPixelBuffer) *rtcPixelBuffer =
|
||||||
(RTC_OBJC_TYPE(RTCCVPixelBuffer) *)frame.buffer;
|
(RTC_OBJC_TYPE(RTCCVPixelBuffer) *)frame.buffer;
|
||||||
buffer = new rtc::RefCountedObject<ObjCFrameBuffer>([[RTC_OBJC_TYPE(RTCCVPixelBuffer) alloc]
|
buffer = rtc::make_ref_counted<ObjCFrameBuffer>([[RTC_OBJC_TYPE(RTCCVPixelBuffer) alloc]
|
||||||
initWithPixelBuffer:rtcPixelBuffer.pixelBuffer
|
initWithPixelBuffer:rtcPixelBuffer.pixelBuffer
|
||||||
adaptedWidth:adapted_width
|
adaptedWidth:adapted_width
|
||||||
adaptedHeight:adapted_height
|
adaptedHeight:adapted_height
|
||||||
|
@ -108,7 +108,7 @@ void ObjCVideoTrackSource::OnCapturedFrame(RTC_OBJC_TYPE(RTCVideoFrame) * frame)
|
||||||
// Adapted I420 frame.
|
// Adapted I420 frame.
|
||||||
// TODO(magjed): Optimize this I420 path.
|
// TODO(magjed): Optimize this I420 path.
|
||||||
rtc::scoped_refptr<I420Buffer> i420_buffer = I420Buffer::Create(adapted_width, adapted_height);
|
rtc::scoped_refptr<I420Buffer> i420_buffer = I420Buffer::Create(adapted_width, adapted_height);
|
||||||
buffer = new rtc::RefCountedObject<ObjCFrameBuffer>(frame.buffer);
|
buffer = rtc::make_ref_counted<ObjCFrameBuffer>(frame.buffer);
|
||||||
i420_buffer->CropAndScaleFrom(*buffer->ToI420(), crop_x, crop_y, crop_width, crop_height);
|
i420_buffer->CropAndScaleFrom(*buffer->ToI420(), crop_x, crop_y, crop_width, crop_height);
|
||||||
buffer = i420_buffer;
|
buffer = i420_buffer;
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,7 +51,7 @@ class ObjCCallbackVideoSink : public rtc::VideoSinkInterface<webrtc::VideoFrame>
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)setUp {
|
- (void)setUp {
|
||||||
_video_source = new rtc::RefCountedObject<webrtc::ObjCVideoTrackSource>();
|
_video_source = rtc::make_ref_counted<webrtc::ObjCVideoTrackSource>();
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)tearDown {
|
- (void)tearDown {
|
||||||
|
|
|
@ -83,7 +83,7 @@ TEST(ObjCVideoEncoderFactoryTest, EncodeReturnsOKOnSuccess) {
|
||||||
CVPixelBufferRef pixel_buffer;
|
CVPixelBufferRef pixel_buffer;
|
||||||
CVPixelBufferCreate(kCFAllocatorDefault, 640, 480, kCVPixelFormatType_32ARGB, nil, &pixel_buffer);
|
CVPixelBufferCreate(kCFAllocatorDefault, 640, 480, kCVPixelFormatType_32ARGB, nil, &pixel_buffer);
|
||||||
rtc::scoped_refptr<webrtc::VideoFrameBuffer> buffer =
|
rtc::scoped_refptr<webrtc::VideoFrameBuffer> buffer =
|
||||||
new rtc::RefCountedObject<webrtc::ObjCFrameBuffer>(
|
rtc::make_ref_counted<webrtc::ObjCFrameBuffer>(
|
||||||
[[RTC_OBJC_TYPE(RTCCVPixelBuffer) alloc] initWithPixelBuffer:pixel_buffer]);
|
[[RTC_OBJC_TYPE(RTCCVPixelBuffer) alloc] initWithPixelBuffer:pixel_buffer]);
|
||||||
webrtc::VideoFrame frame = webrtc::VideoFrame::Builder()
|
webrtc::VideoFrame frame = webrtc::VideoFrame::Builder()
|
||||||
.set_video_frame_buffer(buffer)
|
.set_video_frame_buffer(buffer)
|
||||||
|
@ -101,7 +101,7 @@ TEST(ObjCVideoEncoderFactoryTest, EncodeReturnsErrorOnFail) {
|
||||||
CVPixelBufferRef pixel_buffer;
|
CVPixelBufferRef pixel_buffer;
|
||||||
CVPixelBufferCreate(kCFAllocatorDefault, 640, 480, kCVPixelFormatType_32ARGB, nil, &pixel_buffer);
|
CVPixelBufferCreate(kCFAllocatorDefault, 640, 480, kCVPixelFormatType_32ARGB, nil, &pixel_buffer);
|
||||||
rtc::scoped_refptr<webrtc::VideoFrameBuffer> buffer =
|
rtc::scoped_refptr<webrtc::VideoFrameBuffer> buffer =
|
||||||
new rtc::RefCountedObject<webrtc::ObjCFrameBuffer>(
|
rtc::make_ref_counted<webrtc::ObjCFrameBuffer>(
|
||||||
[[RTC_OBJC_TYPE(RTCCVPixelBuffer) alloc] initWithPixelBuffer:pixel_buffer]);
|
[[RTC_OBJC_TYPE(RTCCVPixelBuffer) alloc] initWithPixelBuffer:pixel_buffer]);
|
||||||
webrtc::VideoFrame frame = webrtc::VideoFrame::Builder()
|
webrtc::VideoFrame frame = webrtc::VideoFrame::Builder()
|
||||||
.set_video_frame_buffer(buffer)
|
.set_video_frame_buffer(buffer)
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
didCaptureVideoFrame:(RTC_OBJC_TYPE(RTCVideoFrame) *)frame {
|
didCaptureVideoFrame:(RTC_OBJC_TYPE(RTCVideoFrame) *)frame {
|
||||||
const int64_t timestamp_us = frame.timeStampNs / rtc::kNumNanosecsPerMicrosec;
|
const int64_t timestamp_us = frame.timeStampNs / rtc::kNumNanosecsPerMicrosec;
|
||||||
rtc::scoped_refptr<webrtc::VideoFrameBuffer> buffer =
|
rtc::scoped_refptr<webrtc::VideoFrameBuffer> buffer =
|
||||||
new rtc::RefCountedObject<webrtc::ObjCFrameBuffer>(frame.buffer);
|
rtc::make_ref_counted<webrtc::ObjCFrameBuffer>(frame.buffer);
|
||||||
_capturer->OnFrame(webrtc::VideoFrame::Builder()
|
_capturer->OnFrame(webrtc::VideoFrame::Builder()
|
||||||
.set_video_frame_buffer(buffer)
|
.set_video_frame_buffer(buffer)
|
||||||
.set_rotation(webrtc::kVideoRotation_0)
|
.set_rotation(webrtc::kVideoRotation_0)
|
||||||
|
|
Loading…
Reference in a new issue