diff --git a/webrtc/api/android/java/src/org/webrtc/VideoRenderer.java b/webrtc/api/android/java/src/org/webrtc/VideoRenderer.java index 8ee4d27e7a..3a6a16771b 100644 --- a/webrtc/api/android/java/src/org/webrtc/VideoRenderer.java +++ b/webrtc/api/android/java/src/org/webrtc/VideoRenderer.java @@ -20,7 +20,7 @@ import java.nio.ByteBuffer; */ public class VideoRenderer { /** - * Java version of cricket::VideoFrame. Frames are only constructed from native code and test + * Java version of webrtc::VideoFrame. Frames are only constructed from native code and test * code. */ public static class I420Frame { diff --git a/webrtc/api/android/jni/peerconnection_jni.cc b/webrtc/api/android/jni/peerconnection_jni.cc index e76444e8f3..7012fc355a 100644 --- a/webrtc/api/android/jni/peerconnection_jni.cc +++ b/webrtc/api/android/jni/peerconnection_jni.cc @@ -733,7 +733,7 @@ class StatsObserverWrapper : public StatsObserver { // Wrapper dispatching rtc::VideoSinkInterface to a Java VideoRenderer // instance. class JavaVideoRendererWrapper - : public rtc::VideoSinkInterface { + : public rtc::VideoSinkInterface { public: JavaVideoRendererWrapper(JNIEnv* jni, jobject j_callbacks) : j_callbacks_(jni, j_callbacks), @@ -753,7 +753,7 @@ class JavaVideoRendererWrapper virtual ~JavaVideoRendererWrapper() {} - void OnFrame(const cricket::VideoFrame& video_frame) override { + void OnFrame(const webrtc::VideoFrame& video_frame) override { ScopedLocalRefFrame local_ref_frame(jni()); jobject j_frame = (video_frame.video_frame_buffer()->native_handle() != nullptr) @@ -769,13 +769,12 @@ class JavaVideoRendererWrapper // Make a shallow copy of |frame| to be used with Java. The callee has // ownership of the frame, and the frame should be released with // VideoRenderer.releaseNativeFrame(). - static jlong javaShallowCopy(const cricket::VideoFrame* frame) { - return jlongFromPointer(new cricket::WebRtcVideoFrame( - frame->video_frame_buffer(), frame->rotation(), frame->timestamp_us())); + static jlong javaShallowCopy(const webrtc::VideoFrame* frame) { + return jlongFromPointer(new webrtc::VideoFrame(*frame)); } // Return a VideoRenderer.I420Frame referring to the data in |frame|. - jobject CricketToJavaI420Frame(const cricket::VideoFrame* frame) { + jobject CricketToJavaI420Frame(const webrtc::VideoFrame* frame) { jintArray strides = jni()->NewIntArray(3); jint* strides_array = jni()->GetIntArrayElements(strides, NULL); strides_array[0] = frame->video_frame_buffer()->StrideY(); @@ -806,7 +805,7 @@ class JavaVideoRendererWrapper } // Return a VideoRenderer.I420Frame referring texture object in |frame|. - jobject CricketToJavaTextureFrame(const cricket::VideoFrame* frame) { + jobject CricketToJavaTextureFrame(const webrtc::VideoFrame* frame) { NativeHandleImpl* handle = reinterpret_cast( frame->video_frame_buffer()->native_handle()); jfloatArray sampling_matrix = handle->sampling_matrix.ToJava(jni()); @@ -951,7 +950,7 @@ JOW(void, VideoRenderer_freeWrappedVideoRenderer)(JNIEnv*, jclass, jlong j_p) { JOW(void, VideoRenderer_releaseNativeFrame)( JNIEnv* jni, jclass, jlong j_frame_ptr) { - delete reinterpret_cast(j_frame_ptr); + delete reinterpret_cast(j_frame_ptr); } JOW(void, MediaStreamTrack_free)(JNIEnv*, jclass, jlong j_p) { @@ -2123,7 +2122,7 @@ JOW(void, VideoTrack_nativeAddRenderer)( LOG(LS_INFO) << "VideoTrack::nativeAddRenderer"; reinterpret_cast(j_video_track_pointer) ->AddOrUpdateSink( - reinterpret_cast*>( + reinterpret_cast*>( j_renderer_pointer), rtc::VideoSinkWants()); } @@ -2133,7 +2132,7 @@ JOW(void, VideoTrack_nativeRemoveRenderer)( jlong j_video_track_pointer, jlong j_renderer_pointer) { reinterpret_cast(j_video_track_pointer) ->RemoveSink( - reinterpret_cast*>( + reinterpret_cast*>( j_renderer_pointer)); } diff --git a/webrtc/api/androidvideotracksource.cc b/webrtc/api/androidvideotracksource.cc index 9242e5faf9..947311a83e 100644 --- a/webrtc/api/androidvideotracksource.cc +++ b/webrtc/api/androidvideotracksource.cc @@ -95,9 +95,8 @@ void AndroidVideoTrackSource::OnByteBufferFrameCaptured(const void* frame_data, buffer->MutableDataU(), buffer->StrideU(), buffer->width(), buffer->height()); - OnFrame(cricket::WebRtcVideoFrame( - buffer, static_cast(rotation), - translated_camera_time_us)); + OnFrame(VideoFrame(buffer, static_cast(rotation), + translated_camera_time_us)); } void AndroidVideoTrackSource::OnTextureFrameCaptured( @@ -147,13 +146,13 @@ void AndroidVideoTrackSource::OnTextureFrameCaptured( matrix.Rotate(static_cast(rotation)); } - OnFrame(cricket::WebRtcVideoFrame( - surface_texture_helper_->CreateTextureFrame( - adapted_width, adapted_height, - webrtc_jni::NativeHandleImpl(handle.oes_texture_id, matrix)), - do_rotate ? webrtc::kVideoRotation_0 - : static_cast(rotation), - translated_camera_time_us)); + OnFrame(VideoFrame( + surface_texture_helper_->CreateTextureFrame( + adapted_width, adapted_height, + webrtc_jni::NativeHandleImpl(handle.oes_texture_id, matrix)), + do_rotate ? webrtc::kVideoRotation_0 + : static_cast(rotation), + translated_camera_time_us)); } void AndroidVideoTrackSource::OnOutputFormatRequest(int width, diff --git a/webrtc/api/mediastreaminterface.h b/webrtc/api/mediastreaminterface.h index f813dda646..baebad7b69 100644 --- a/webrtc/api/mediastreaminterface.h +++ b/webrtc/api/mediastreaminterface.h @@ -25,9 +25,9 @@ #include "webrtc/base/scoped_ref_ptr.h" #include "webrtc/base/optional.h" #include "webrtc/media/base/mediachannel.h" -#include "webrtc/media/base/videoframe.h" #include "webrtc/media/base/videosinkinterface.h" #include "webrtc/media/base/videosourceinterface.h" +#include "webrtc/video_frame.h" namespace webrtc { @@ -98,7 +98,7 @@ class MediaStreamTrackInterface : public rtc::RefCountInterface, // The same source can be used in multiple VideoTracks. class VideoTrackSourceInterface : public MediaSourceInterface, - public rtc::VideoSourceInterface { + public rtc::VideoSourceInterface { public: struct Stats { // Original size of captured frame, before video adaptation. @@ -131,13 +131,12 @@ class VideoTrackSourceInterface class VideoTrackInterface : public MediaStreamTrackInterface, - public rtc::VideoSourceInterface { + public rtc::VideoSourceInterface { public: // Register a video sink for this track. - void AddOrUpdateSink(rtc::VideoSinkInterface* sink, + void AddOrUpdateSink(rtc::VideoSinkInterface* sink, const rtc::VideoSinkWants& wants) override{}; - void RemoveSink( - rtc::VideoSinkInterface* sink) override{}; + void RemoveSink(rtc::VideoSinkInterface* sink) override{}; virtual VideoTrackSourceInterface* GetSource() const = 0; diff --git a/webrtc/api/mediastreamtrackproxy.h b/webrtc/api/mediastreamtrackproxy.h index 12fdc36b36..206a467c80 100644 --- a/webrtc/api/mediastreamtrackproxy.h +++ b/webrtc/api/mediastreamtrackproxy.h @@ -42,12 +42,10 @@ BEGIN_PROXY_MAP(VideoTrack) PROXY_CONSTMETHOD0(bool, enabled) PROXY_METHOD1(bool, set_enabled, bool) PROXY_WORKER_METHOD2(void, - AddOrUpdateSink, - rtc::VideoSinkInterface*, - const rtc::VideoSinkWants&) - PROXY_WORKER_METHOD1(void, - RemoveSink, - rtc::VideoSinkInterface*) + AddOrUpdateSink, + rtc::VideoSinkInterface*, + const rtc::VideoSinkWants&) + PROXY_WORKER_METHOD1(void, RemoveSink, rtc::VideoSinkInterface*) PROXY_CONSTMETHOD0(VideoTrackSourceInterface*, GetSource) PROXY_METHOD1(void, RegisterObserver, ObserverInterface*) diff --git a/webrtc/api/rtcstatscollector_unittest.cc b/webrtc/api/rtcstatscollector_unittest.cc index adc1520a34..73d70dc2a6 100644 --- a/webrtc/api/rtcstatscollector_unittest.cc +++ b/webrtc/api/rtcstatscollector_unittest.cc @@ -232,9 +232,9 @@ class FakeVideoTrackSourceForStats bool remote() const override { return false; } void RegisterObserver(ObserverInterface* observer) override {} void UnregisterObserver(ObserverInterface* observer) override {} - void AddOrUpdateSink(rtc::VideoSinkInterface* sink, + void AddOrUpdateSink(rtc::VideoSinkInterface* sink, const rtc::VideoSinkWants& wants) override {} - void RemoveSink(rtc::VideoSinkInterface* sink) override { + void RemoveSink(rtc::VideoSinkInterface* sink) override { } bool is_screencast() const override { return false; } rtc::Optional needs_denoising() const override { diff --git a/webrtc/api/videocapturertracksource_unittest.cc b/webrtc/api/videocapturertracksource_unittest.cc index 67c249827b..a0350d999d 100644 --- a/webrtc/api/videocapturertracksource_unittest.cc +++ b/webrtc/api/videocapturertracksource_unittest.cc @@ -18,7 +18,6 @@ #include "webrtc/media/base/fakemediaengine.h" #include "webrtc/media/base/fakevideocapturer.h" #include "webrtc/media/base/fakevideorenderer.h" -#include "webrtc/media/engine/webrtcvideoframe.h" using webrtc::FakeConstraints; using webrtc::VideoCapturerTrackSource; diff --git a/webrtc/api/videosourceproxy.h b/webrtc/api/videosourceproxy.h index 0c181611ee..eaec17bbb1 100644 --- a/webrtc/api/videosourceproxy.h +++ b/webrtc/api/videosourceproxy.h @@ -28,11 +28,9 @@ BEGIN_PROXY_MAP(VideoTrackSource) PROXY_METHOD1(bool, GetStats, Stats*) PROXY_WORKER_METHOD2(void, AddOrUpdateSink, - rtc::VideoSinkInterface*, + rtc::VideoSinkInterface*, const rtc::VideoSinkWants&) - PROXY_WORKER_METHOD1(void, - RemoveSink, - rtc::VideoSinkInterface*) + PROXY_WORKER_METHOD1(void, RemoveSink, rtc::VideoSinkInterface*) PROXY_METHOD1(void, RegisterObserver, ObserverInterface*) PROXY_METHOD1(void, UnregisterObserver, ObserverInterface*) END_PROXY() diff --git a/webrtc/api/videotrack.cc b/webrtc/api/videotrack.cc index 234b4cf7ae..b47a32044f 100644 --- a/webrtc/api/videotrack.cc +++ b/webrtc/api/videotrack.cc @@ -34,9 +34,8 @@ std::string VideoTrack::kind() const { // AddOrUpdateSink and RemoveSink should be called on the worker // thread. -void VideoTrack::AddOrUpdateSink( - rtc::VideoSinkInterface* sink, - const rtc::VideoSinkWants& wants) { +void VideoTrack::AddOrUpdateSink(rtc::VideoSinkInterface* sink, + const rtc::VideoSinkWants& wants) { RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); VideoSourceBase::AddOrUpdateSink(sink, wants); rtc::VideoSinkWants modified_wants = wants; @@ -44,8 +43,7 @@ void VideoTrack::AddOrUpdateSink( video_source_->AddOrUpdateSink(sink, modified_wants); } -void VideoTrack::RemoveSink( - rtc::VideoSinkInterface* sink) { +void VideoTrack::RemoveSink(rtc::VideoSinkInterface* sink) { RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); VideoSourceBase::RemoveSink(sink); video_source_->RemoveSink(sink); diff --git a/webrtc/api/videotrack.h b/webrtc/api/videotrack.h index 60a0a64aec..cbebec3e86 100644 --- a/webrtc/api/videotrack.h +++ b/webrtc/api/videotrack.h @@ -29,9 +29,9 @@ class VideoTrack : public MediaStreamTrack, const std::string& label, VideoTrackSourceInterface* source); - void AddOrUpdateSink(rtc::VideoSinkInterface* sink, + void AddOrUpdateSink(rtc::VideoSinkInterface* sink, const rtc::VideoSinkWants& wants) override; - void RemoveSink(rtc::VideoSinkInterface* sink) override; + void RemoveSink(rtc::VideoSinkInterface* sink) override; VideoTrackSourceInterface* GetSource() const override { return video_source_.get(); diff --git a/webrtc/api/videotrack_unittest.cc b/webrtc/api/videotrack_unittest.cc index 0b67c77829..53204827b2 100644 --- a/webrtc/api/videotrack_unittest.cc +++ b/webrtc/api/videotrack_unittest.cc @@ -17,7 +17,6 @@ #include "webrtc/base/gunit.h" #include "webrtc/media/base/fakevideocapturer.h" #include "webrtc/media/base/fakemediaengine.h" -#include "webrtc/media/engine/webrtcvideoframe.h" using webrtc::FakeVideoTrackRenderer; using webrtc::MediaSourceInterface; diff --git a/webrtc/api/videotracksource.cc b/webrtc/api/videotracksource.cc index 17d32fbc71..83ae4932ff 100644 --- a/webrtc/api/videotracksource.cc +++ b/webrtc/api/videotracksource.cc @@ -15,7 +15,7 @@ namespace webrtc { VideoTrackSource::VideoTrackSource( - rtc::VideoSourceInterface* source, + rtc::VideoSourceInterface* source, bool remote) : source_(source), state_(kInitializing), remote_(remote) { worker_thread_checker_.DetachFromThread(); @@ -33,7 +33,7 @@ void VideoTrackSource::OnSourceDestroyed() { } void VideoTrackSource::AddOrUpdateSink( - rtc::VideoSinkInterface* sink, + rtc::VideoSinkInterface* sink, const rtc::VideoSinkWants& wants) { RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); if (!source_) { @@ -42,8 +42,7 @@ void VideoTrackSource::AddOrUpdateSink( source_->AddOrUpdateSink(sink, wants); } -void VideoTrackSource::RemoveSink( - rtc::VideoSinkInterface* sink) { +void VideoTrackSource::RemoveSink(rtc::VideoSinkInterface* sink) { RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); if (!source_) { return; diff --git a/webrtc/api/videotracksource.h b/webrtc/api/videotracksource.h index 67e764fd40..330af2332e 100644 --- a/webrtc/api/videotracksource.h +++ b/webrtc/api/videotracksource.h @@ -22,8 +22,7 @@ namespace webrtc { class VideoTrackSource : public Notifier { public: - VideoTrackSource(rtc::VideoSourceInterface* source, - bool remote); + VideoTrackSource(rtc::VideoSourceInterface* source, bool remote); void SetState(SourceState new_state); // OnSourceDestroyed clears this instance pointer to |source_|. It is useful // when the underlying rtc::VideoSourceInterface is destroyed before the @@ -39,13 +38,13 @@ class VideoTrackSource : public Notifier { bool GetStats(Stats* stats) override { return false; } - void AddOrUpdateSink(rtc::VideoSinkInterface* sink, + void AddOrUpdateSink(rtc::VideoSinkInterface* sink, const rtc::VideoSinkWants& wants) override; - void RemoveSink(rtc::VideoSinkInterface* sink) override; + void RemoveSink(rtc::VideoSinkInterface* sink) override; private: rtc::ThreadChecker worker_thread_checker_; - rtc::VideoSourceInterface* source_; + rtc::VideoSourceInterface* source_; cricket::VideoOptions options_; SourceState state_; const bool remote_; diff --git a/webrtc/examples/peerconnection/client/linux/main_wnd.cc b/webrtc/examples/peerconnection/client/linux/main_wnd.cc index eda6617826..8d7d11ac15 100644 --- a/webrtc/examples/peerconnection/client/linux/main_wnd.cc +++ b/webrtc/examples/peerconnection/client/linux/main_wnd.cc @@ -19,7 +19,6 @@ #include "webrtc/base/common.h" #include "webrtc/base/logging.h" #include "webrtc/base/stringutils.h" -#include "webrtc/media/engine/webrtcvideoframe.h" using rtc::sprintfn; @@ -483,18 +482,15 @@ void GtkMainWnd::VideoRenderer::SetSize(int width, int height) { } void GtkMainWnd::VideoRenderer::OnFrame( - const cricket::VideoFrame& video_frame) { + const webrtc::VideoFrame& video_frame) { gdk_threads_enter(); - const cricket::WebRtcVideoFrame frame( - webrtc::I420Buffer::Rotate(video_frame.video_frame_buffer(), - video_frame.rotation()), - webrtc::kVideoRotation_0, video_frame.timestamp_us()); - - SetSize(frame.width(), frame.height()); - rtc::scoped_refptr buffer( - frame.video_frame_buffer()); + webrtc::I420Buffer::Rotate(video_frame.video_frame_buffer(), + video_frame.rotation())); + + SetSize(buffer->width(), buffer->height()); + libyuv::I420ToRGBA(buffer->DataY(), buffer->StrideY(), buffer->DataU(), buffer->StrideU(), buffer->DataV(), buffer->StrideV(), diff --git a/webrtc/examples/peerconnection/client/linux/main_wnd.h b/webrtc/examples/peerconnection/client/linux/main_wnd.h index 3c718577d1..33b0725c08 100644 --- a/webrtc/examples/peerconnection/client/linux/main_wnd.h +++ b/webrtc/examples/peerconnection/client/linux/main_wnd.h @@ -72,14 +72,14 @@ class GtkMainWnd : public MainWindow { void OnRedraw(); protected: - class VideoRenderer : public rtc::VideoSinkInterface { + class VideoRenderer : public rtc::VideoSinkInterface { public: VideoRenderer(GtkMainWnd* main_wnd, webrtc::VideoTrackInterface* track_to_render); virtual ~VideoRenderer(); // VideoSinkInterface implementation - void OnFrame(const cricket::VideoFrame& frame) override; + void OnFrame(const webrtc::VideoFrame& frame) override; const uint8_t* image() const { return image_.get(); } diff --git a/webrtc/examples/peerconnection/client/main_wnd.cc b/webrtc/examples/peerconnection/client/main_wnd.cc index 7fe5132fa0..22a45b0445 100644 --- a/webrtc/examples/peerconnection/client/main_wnd.cc +++ b/webrtc/examples/peerconnection/client/main_wnd.cc @@ -17,7 +17,6 @@ #include "webrtc/base/arraysize.h" #include "webrtc/base/common.h" #include "webrtc/base/logging.h" -#include "webrtc/media/engine/webrtcvideoframe.h" ATOM MainWnd::wnd_class_ = 0; const wchar_t MainWnd::kClassName[] = L"WebRTC_MainWnd"; @@ -601,21 +600,18 @@ void MainWnd::VideoRenderer::SetSize(int width, int height) { } void MainWnd::VideoRenderer::OnFrame( - const cricket::VideoFrame& video_frame) { + const webrtc::VideoFrame& video_frame) { { AutoLock lock(this); - const cricket::WebRtcVideoFrame frame( + rtc::scoped_refptr buffer( webrtc::I420Buffer::Rotate(video_frame.video_frame_buffer(), - video_frame.rotation()), - webrtc::kVideoRotation_0, video_frame.timestamp_us()); + video_frame.rotation())); - SetSize(frame.width(), frame.height()); + SetSize(buffer->width(), buffer->height()); ASSERT(image_.get() != NULL); - rtc::scoped_refptr buffer( - frame.video_frame_buffer()); libyuv::I420ToARGB(buffer->DataY(), buffer->StrideY(), buffer->DataU(), buffer->StrideU(), buffer->DataV(), buffer->StrideV(), diff --git a/webrtc/examples/peerconnection/client/main_wnd.h b/webrtc/examples/peerconnection/client/main_wnd.h index 03db80d0b6..543b7ce573 100644 --- a/webrtc/examples/peerconnection/client/main_wnd.h +++ b/webrtc/examples/peerconnection/client/main_wnd.h @@ -21,7 +21,7 @@ #include "webrtc/examples/peerconnection/client/peer_connection_client.h" #include "webrtc/media/base/mediachannel.h" #include "webrtc/media/base/videocommon.h" -#include "webrtc/media/base/videoframe.h" +#include "webrtc/video_frame.h" class MainWndCallback { public: @@ -102,7 +102,7 @@ class MainWnd : public MainWindow { HWND handle() const { return wnd_; } - class VideoRenderer : public rtc::VideoSinkInterface { + class VideoRenderer : public rtc::VideoSinkInterface { public: VideoRenderer(HWND wnd, int width, int height, webrtc::VideoTrackInterface* track_to_render); @@ -117,7 +117,7 @@ class MainWnd : public MainWindow { } // VideoSinkInterface implementation - void OnFrame(const cricket::VideoFrame& frame) override; + void OnFrame(const webrtc::VideoFrame& frame) override; const BITMAPINFO& bmi() const { return bmi_; } const uint8_t* image() const { return image_.get(); } diff --git a/webrtc/media/base/adaptedvideotracksource.cc b/webrtc/media/base/adaptedvideotracksource.cc index 5f6144f708..acc147cc89 100644 --- a/webrtc/media/base/adaptedvideotracksource.cc +++ b/webrtc/media/base/adaptedvideotracksource.cc @@ -27,7 +27,7 @@ bool AdaptedVideoTrackSource::GetStats(Stats* stats) { return true; } -void AdaptedVideoTrackSource::OnFrame(const cricket::VideoFrame& frame) { +void AdaptedVideoTrackSource::OnFrame(const webrtc::VideoFrame& frame) { rtc::scoped_refptr buffer( frame.video_frame_buffer()); /* Note that this is a "best effort" approach to @@ -42,7 +42,7 @@ void AdaptedVideoTrackSource::OnFrame(const cricket::VideoFrame& frame) { frame.rotation() != webrtc::kVideoRotation_0 && !buffer->native_handle()) { /* Apply pending rotation. */ - broadcaster_.OnFrame(cricket::WebRtcVideoFrame( + broadcaster_.OnFrame(webrtc::VideoFrame( webrtc::I420Buffer::Rotate(buffer, frame.rotation()), webrtc::kVideoRotation_0, frame.timestamp_us())); } else { @@ -51,7 +51,7 @@ void AdaptedVideoTrackSource::OnFrame(const cricket::VideoFrame& frame) { } void AdaptedVideoTrackSource::AddOrUpdateSink( - rtc::VideoSinkInterface* sink, + rtc::VideoSinkInterface* sink, const rtc::VideoSinkWants& wants) { RTC_DCHECK(thread_checker_.CalledOnValidThread()); @@ -60,7 +60,7 @@ void AdaptedVideoTrackSource::AddOrUpdateSink( } void AdaptedVideoTrackSource::RemoveSink( - rtc::VideoSinkInterface* sink) { + rtc::VideoSinkInterface* sink) { RTC_DCHECK(thread_checker_.CalledOnValidThread()); broadcaster_.RemoveSink(sink); diff --git a/webrtc/media/base/adaptedvideotracksource.h b/webrtc/media/base/adaptedvideotracksource.h index dad24db119..5b420aeb9e 100644 --- a/webrtc/media/base/adaptedvideotracksource.h +++ b/webrtc/media/base/adaptedvideotracksource.h @@ -31,7 +31,7 @@ class AdaptedVideoTrackSource // Checks the apply_rotation() flag. If the frame needs rotation, and it is a // plain memory frame, it is rotated. Subclasses producing native frames must // handle apply_rotation() themselves. - void OnFrame(const cricket::VideoFrame& frame); + void OnFrame(const webrtc::VideoFrame& frame); // Reports the appropriate frame size after adaptation. Returns true // if a frame is wanted. Returns false if there are no interested @@ -57,9 +57,9 @@ class AdaptedVideoTrackSource private: // Implements rtc::VideoSourceInterface. - void AddOrUpdateSink(rtc::VideoSinkInterface* sink, + void AddOrUpdateSink(rtc::VideoSinkInterface* sink, const rtc::VideoSinkWants& wants) override; - void RemoveSink(rtc::VideoSinkInterface* sink) override; + void RemoveSink(rtc::VideoSinkInterface* sink) override; // Part of VideoTrackSourceInterface. bool GetStats(Stats* stats) override; diff --git a/webrtc/media/base/fakemediaengine.h b/webrtc/media/base/fakemediaengine.h index 57062b382a..d97bab3dc2 100644 --- a/webrtc/media/base/fakemediaengine.h +++ b/webrtc/media/base/fakemediaengine.h @@ -518,8 +518,8 @@ class FakeVideoMediaChannel : public RtpHelper { const std::vector& codecs() const { return send_codecs(); } bool rendering() const { return playout(); } const VideoOptions& options() const { return options_; } - const std::map*>& sinks() - const { + const std::map*>& + sinks() const { return sinks_; } int max_bps() const { return max_bps_; } @@ -547,7 +547,7 @@ class FakeVideoMediaChannel : public RtpHelper { return true; } bool SetSink(uint32_t ssrc, - rtc::VideoSinkInterface* sink) override { + rtc::VideoSinkInterface* sink) override { if (ssrc != 0 && sinks_.find(ssrc) == sinks_.end()) { return false; } @@ -565,7 +565,7 @@ class FakeVideoMediaChannel : public RtpHelper { uint32_t ssrc, bool enable, const VideoOptions* options, - rtc::VideoSourceInterface* source) override { + rtc::VideoSourceInterface* source) override { if (!RtpHelper::MuteStream(ssrc, !enable)) { return false; } @@ -627,8 +627,8 @@ class FakeVideoMediaChannel : public RtpHelper { FakeVideoEngine* engine_; std::vector recv_codecs_; std::vector send_codecs_; - std::map*> sinks_; - std::map*> sources_; + std::map*> sinks_; + std::map*> sources_; VideoOptions options_; int max_bps_; }; diff --git a/webrtc/media/base/fakevideocapturer.h b/webrtc/media/base/fakevideocapturer.h index ba8f01eddb..f1d349792b 100644 --- a/webrtc/media/base/fakevideocapturer.h +++ b/webrtc/media/base/fakevideocapturer.h @@ -19,7 +19,7 @@ #include "webrtc/base/timeutils.h" #include "webrtc/media/base/videocapturer.h" #include "webrtc/media/base/videocommon.h" -#include "webrtc/media/base/videoframe.h" +#include "webrtc/video_frame.h" namespace cricket { @@ -97,8 +97,9 @@ class FakeVideoCapturer : public cricket::VideoCapturer { webrtc::I420Buffer::Create(adapted_width, adapted_height)); buffer->InitializeData(); - OnFrame(WebRtcVideoFrame(buffer, rotation_, - next_timestamp_ / rtc::kNumNanosecsPerMicrosec), + OnFrame(webrtc::VideoFrame( + buffer, rotation_, + next_timestamp_ / rtc::kNumNanosecsPerMicrosec), width, height); } next_timestamp_ += timestamp_interval; diff --git a/webrtc/media/base/fakevideorenderer.h b/webrtc/media/base/fakevideorenderer.h index 2c7904b7eb..a2e0d28e63 100644 --- a/webrtc/media/base/fakevideorenderer.h +++ b/webrtc/media/base/fakevideorenderer.h @@ -12,13 +12,13 @@ #define WEBRTC_MEDIA_BASE_FAKEVIDEORENDERER_H_ #include "webrtc/base/logging.h" -#include "webrtc/media/base/videoframe.h" #include "webrtc/media/base/videosinkinterface.h" +#include "webrtc/video_frame.h" namespace cricket { // Faked video renderer that has a callback for actions on rendering. -class FakeVideoRenderer : public rtc::VideoSinkInterface { +class FakeVideoRenderer : public rtc::VideoSinkInterface { public: FakeVideoRenderer() : errors_(0), @@ -29,7 +29,7 @@ class FakeVideoRenderer : public rtc::VideoSinkInterface { num_rendered_frames_(0), black_frame_(false) {} - virtual void OnFrame(const VideoFrame& frame) { + virtual void OnFrame(const webrtc::VideoFrame& frame) { rtc::CritScope cs(&crit_); // TODO(zhurunz) Check with VP8 team to see if we can remove this // tolerance on Y values. Some unit tests produce Y values close @@ -79,7 +79,7 @@ class FakeVideoRenderer : public rtc::VideoSinkInterface { uint8_t u_max, uint8_t v_min, uint8_t v_max, - const cricket::VideoFrame* frame) { + const webrtc::VideoFrame* frame) { if (!frame || !frame->video_frame_buffer()) { return false; } diff --git a/webrtc/media/base/mediachannel.h b/webrtc/media/base/mediachannel.h index ecb09f033a..4262ff54de 100644 --- a/webrtc/media/base/mediachannel.h +++ b/webrtc/media/base/mediachannel.h @@ -31,9 +31,6 @@ #include "webrtc/media/base/codec.h" #include "webrtc/media/base/mediaconstants.h" #include "webrtc/media/base/streamparams.h" -// TODO(nisse): Temporarily; to be replaced with a forward declaration -// of webrtc::VideoFrame when dependency on cricket::VideoFrame is deleted. -#include "webrtc/media/base/videoframe.h" #include "webrtc/media/base/videosinkinterface.h" #include "webrtc/media/base/videosourceinterface.h" // TODO(juberti): re-evaluate this include @@ -46,6 +43,7 @@ class Timing; namespace webrtc { class AudioSinkInterface; +class VideoFrame; } namespace cricket { @@ -1034,11 +1032,11 @@ class VideoMediaChannel : public MediaChannel { uint32_t ssrc, bool enable, const VideoOptions* options, - rtc::VideoSourceInterface* source) = 0; + rtc::VideoSourceInterface* source) = 0; // Sets the sink object to be used for the specified stream. // If SSRC is 0, the renderer is used for the 'default' stream. virtual bool SetSink(uint32_t ssrc, - rtc::VideoSinkInterface* sink) = 0; + rtc::VideoSinkInterface* sink) = 0; // Gets quality stats for the channel. virtual bool GetStats(VideoMediaInfo* info) = 0; }; diff --git a/webrtc/media/base/testutils.cc b/webrtc/media/base/testutils.cc index 321719d3e9..b1f520a929 100644 --- a/webrtc/media/base/testutils.cc +++ b/webrtc/media/base/testutils.cc @@ -23,7 +23,7 @@ #include "webrtc/base/testutils.h" #include "webrtc/media/base/rtpdump.h" #include "webrtc/media/base/videocapturer.h" -#include "webrtc/media/base/videoframe.h" +#include "webrtc/video_frame.h" namespace cricket { @@ -230,7 +230,7 @@ void VideoCapturerListener::OnStateChange(VideoCapturer* capturer, last_capture_state_ = result; } -void VideoCapturerListener::OnFrame(const VideoFrame& frame) { +void VideoCapturerListener::OnFrame(const webrtc::VideoFrame& frame) { ++frame_count_; if (1 == frame_count_) { frame_width_ = frame.width(); diff --git a/webrtc/media/base/testutils.h b/webrtc/media/base/testutils.h index 40034c0969..01a2a4f9c1 100644 --- a/webrtc/media/base/testutils.h +++ b/webrtc/media/base/testutils.h @@ -29,6 +29,10 @@ class ByteBufferWriter; class StreamInterface; } +namespace webrtc { +class VideoFrame; +} + namespace cricket { // Returns size of 420 image with rounding on chroma for odd sizes. @@ -115,7 +119,7 @@ class RtpTestUtility { // Test helper for testing VideoCapturer implementations. class VideoCapturerListener : public sigslot::has_slots<>, - public rtc::VideoSinkInterface { + public rtc::VideoSinkInterface { public: explicit VideoCapturerListener(VideoCapturer* cap); ~VideoCapturerListener(); @@ -127,7 +131,7 @@ class VideoCapturerListener bool resolution_changed() const { return resolution_changed_; } void OnStateChange(VideoCapturer* capturer, CaptureState state); - void OnFrame(const VideoFrame& frame) override; + void OnFrame(const webrtc::VideoFrame& frame) override; private: VideoCapturer* capturer_; diff --git a/webrtc/media/base/videoadapter_unittest.cc b/webrtc/media/base/videoadapter_unittest.cc index 444ef54886..7f660ef37f 100644 --- a/webrtc/media/base/videoadapter_unittest.cc +++ b/webrtc/media/base/videoadapter_unittest.cc @@ -42,7 +42,7 @@ class VideoAdapterTest : public testing::Test { protected: class VideoCapturerListener - : public rtc::VideoSinkInterface { + : public rtc::VideoSinkInterface { public: struct Stats { int captured_frames; @@ -62,7 +62,7 @@ class VideoAdapterTest : public testing::Test { last_adapt_was_no_op_(false) { } - void OnFrame(const cricket::VideoFrame& frame) { + void OnFrame(const webrtc::VideoFrame& frame) { rtc::CritScope lock(&crit_); const int in_width = frame.width(); const int in_height = frame.height(); diff --git a/webrtc/media/base/videobroadcaster.cc b/webrtc/media/base/videobroadcaster.cc index 653829639c..6d6ffa747c 100644 --- a/webrtc/media/base/videobroadcaster.cc +++ b/webrtc/media/base/videobroadcaster.cc @@ -22,7 +22,7 @@ VideoBroadcaster::VideoBroadcaster() { } void VideoBroadcaster::AddOrUpdateSink( - VideoSinkInterface* sink, + VideoSinkInterface* sink, const VideoSinkWants& wants) { RTC_DCHECK(thread_checker_.CalledOnValidThread()); RTC_DCHECK(sink != nullptr); @@ -32,7 +32,7 @@ void VideoBroadcaster::AddOrUpdateSink( } void VideoBroadcaster::RemoveSink( - VideoSinkInterface* sink) { + VideoSinkInterface* sink) { RTC_DCHECK(thread_checker_.CalledOnValidThread()); RTC_DCHECK(sink != nullptr); rtc::CritScope cs(&sinks_and_wants_lock_); @@ -50,7 +50,7 @@ VideoSinkWants VideoBroadcaster::wants() const { return current_wants_; } -void VideoBroadcaster::OnFrame(const cricket::VideoFrame& frame) { +void VideoBroadcaster::OnFrame(const webrtc::VideoFrame& frame) { rtc::CritScope cs(&sinks_and_wants_lock_); for (auto& sink_pair : sink_pairs()) { if (sink_pair.wants.rotation_applied && @@ -63,7 +63,7 @@ void VideoBroadcaster::OnFrame(const cricket::VideoFrame& frame) { continue; } if (sink_pair.wants.black_frames) { - sink_pair.sink->OnFrame(cricket::WebRtcVideoFrame( + sink_pair.sink->OnFrame(webrtc::VideoFrame( GetBlackFrameBuffer(frame.width(), frame.height()), frame.rotation(), frame.timestamp_us())); } else { diff --git a/webrtc/media/base/videobroadcaster.h b/webrtc/media/base/videobroadcaster.h index 1fcc9c3f35..9fae1d4024 100644 --- a/webrtc/media/base/videobroadcaster.h +++ b/webrtc/media/base/videobroadcaster.h @@ -17,10 +17,9 @@ #include "webrtc/base/criticalsection.h" #include "webrtc/base/thread_checker.h" -#include "webrtc/media/base/videoframe.h" #include "webrtc/media/base/videosinkinterface.h" #include "webrtc/media/base/videosourcebase.h" -#include "webrtc/media/engine/webrtcvideoframe.h" +#include "webrtc/video_frame.h" namespace rtc { @@ -31,12 +30,12 @@ namespace rtc { // Video frames can be broadcasted on any thread. I.e VideoBroadcaster::OnFrame // can be called on any thread. class VideoBroadcaster : public VideoSourceBase, - public VideoSinkInterface { + public VideoSinkInterface { public: VideoBroadcaster(); - void AddOrUpdateSink(VideoSinkInterface* sink, + void AddOrUpdateSink(VideoSinkInterface* sink, const VideoSinkWants& wants) override; - void RemoveSink(VideoSinkInterface* sink) override; + void RemoveSink(VideoSinkInterface* sink) override; // Returns true if the next frame will be delivered to at least one sink. bool frame_wanted() const; @@ -49,7 +48,7 @@ class VideoBroadcaster : public VideoSourceBase, // it will never receive a frame with pending rotation. Our caller // may pass in frames without precise synchronization with changes // to the VideoSinkWants. - void OnFrame(const cricket::VideoFrame& frame) override; + void OnFrame(const webrtc::VideoFrame& frame) override; protected: void UpdateWants() EXCLUSIVE_LOCKS_REQUIRED(sinks_and_wants_lock_); diff --git a/webrtc/media/base/videobroadcaster_unittest.cc b/webrtc/media/base/videobroadcaster_unittest.cc index 593c8e5151..6a8c618bb6 100644 --- a/webrtc/media/base/videobroadcaster_unittest.cc +++ b/webrtc/media/base/videobroadcaster_unittest.cc @@ -11,12 +11,11 @@ #include "webrtc/base/gunit.h" #include "webrtc/media/base/fakevideorenderer.h" #include "webrtc/media/base/videobroadcaster.h" -#include "webrtc/media/engine/webrtcvideoframe.h" +#include "webrtc/video_frame.h" using rtc::VideoBroadcaster; using rtc::VideoSinkWants; using cricket::FakeVideoRenderer; -using cricket::WebRtcVideoFrame; TEST(VideoBroadcasterTest, frame_wanted) { @@ -39,7 +38,7 @@ TEST(VideoBroadcasterTest, OnFrame) { broadcaster.AddOrUpdateSink(&sink1, rtc::VideoSinkWants()); broadcaster.AddOrUpdateSink(&sink2, rtc::VideoSinkWants()); - WebRtcVideoFrame frame; + webrtc::VideoFrame frame; broadcaster.OnFrame(frame); EXPECT_EQ(1, sink1.num_rendered_frames()); @@ -139,8 +138,8 @@ TEST(VideoBroadcasterTest, SinkWantsBlackFrames) { // Makes it not all black. buffer->InitializeData(); - cricket::WebRtcVideoFrame frame1(buffer, webrtc::kVideoRotation_0, - 10 /* timestamp_us */); + webrtc::VideoFrame frame1(buffer, webrtc::kVideoRotation_0, + 10 /* timestamp_us */); broadcaster.OnFrame(frame1); EXPECT_TRUE(sink1.black_frame()); EXPECT_EQ(10, sink1.timestamp_us()); @@ -153,8 +152,8 @@ TEST(VideoBroadcasterTest, SinkWantsBlackFrames) { wants2.black_frames = true; broadcaster.AddOrUpdateSink(&sink2, wants2); - cricket::WebRtcVideoFrame frame2(buffer, webrtc::kVideoRotation_0, - 30 /* timestamp_us */); + webrtc::VideoFrame frame2(buffer, webrtc::kVideoRotation_0, + 30 /* timestamp_us */); broadcaster.OnFrame(frame2); EXPECT_FALSE(sink1.black_frame()); EXPECT_EQ(30, sink1.timestamp_us()); diff --git a/webrtc/media/base/videocapturer.cc b/webrtc/media/base/videocapturer.cc index 1d81d49eb8..e7d3e3a3d6 100644 --- a/webrtc/media/base/videocapturer.cc +++ b/webrtc/media/base/videocapturer.cc @@ -18,7 +18,7 @@ #include "webrtc/base/common.h" #include "webrtc/base/logging.h" #include "webrtc/base/systeminfo.h" -#include "webrtc/media/engine/webrtcvideoframe.h" +#include "webrtc/video_frame.h" namespace cricket { @@ -132,14 +132,14 @@ bool VideoCapturer::GetInputSize(int* width, int* height) { } void VideoCapturer::RemoveSink( - rtc::VideoSinkInterface* sink) { + rtc::VideoSinkInterface* sink) { RTC_DCHECK(thread_checker_.CalledOnValidThread()); broadcaster_.RemoveSink(sink); OnSinkWantsChanged(broadcaster_.wants()); } void VideoCapturer::AddOrUpdateSink( - rtc::VideoSinkInterface* sink, + rtc::VideoSinkInterface* sink, const rtc::VideoSinkWants& wants) { RTC_DCHECK(thread_checker_.CalledOnValidThread()); broadcaster_.AddOrUpdateSink(sink, wants); @@ -196,7 +196,7 @@ bool VideoCapturer::AdaptFrame(int width, return true; } -void VideoCapturer::OnFrame(const VideoFrame& frame, +void VideoCapturer::OnFrame(const webrtc::VideoFrame& frame, int orig_width, int orig_height) { // For a child class which implements rotation itself, we should @@ -215,7 +215,7 @@ void VideoCapturer::OnFrame(const VideoFrame& frame, LOG(LS_WARNING) << "Native frame requiring rotation. Discarding."; return; } - broadcaster_.OnFrame(WebRtcVideoFrame( + broadcaster_.OnFrame(webrtc::VideoFrame( webrtc::I420Buffer::Rotate(buffer, frame.rotation()), webrtc::kVideoRotation_0, frame.timestamp_us())); } else { diff --git a/webrtc/media/base/videocapturer.h b/webrtc/media/base/videocapturer.h index 909c838fa5..1f1da3a88c 100644 --- a/webrtc/media/base/videocapturer.h +++ b/webrtc/media/base/videocapturer.h @@ -29,6 +29,9 @@ #include "webrtc/media/base/videobroadcaster.h" #include "webrtc/media/base/videocommon.h" +namespace webrtc { +class VideoFrame; +} namespace cricket { @@ -69,7 +72,7 @@ enum CaptureState { // thread safe. // class VideoCapturer : public sigslot::has_slots<>, - public rtc::VideoSourceInterface { + public rtc::VideoSourceInterface { public: VideoCapturer(); @@ -169,9 +172,9 @@ class VideoCapturer : public sigslot::has_slots<>, bool GetInputSize(int* width, int* height); // Implements VideoSourceInterface - void AddOrUpdateSink(rtc::VideoSinkInterface* sink, + void AddOrUpdateSink(rtc::VideoSinkInterface* sink, const rtc::VideoSinkWants& wants) override; - void RemoveSink(rtc::VideoSinkInterface* sink) override; + void RemoveSink(rtc::VideoSinkInterface* sink) override; protected: // OnSinkWantsChanged can be overridden to change the default behavior @@ -210,7 +213,9 @@ class VideoCapturer : public sigslot::has_slots<>, // VideoFrame. OnFrame can be called directly by an implementation // that does not use SignalFrameCaptured or OnFrameCaptured. The // orig_width and orig_height are used only to produce stats. - void OnFrame(const VideoFrame& frame, int orig_width, int orig_height); + void OnFrame(const webrtc::VideoFrame& frame, + int orig_width, + int orig_height); VideoAdapter* video_adapter() { return &video_adapter_; } diff --git a/webrtc/media/base/videosourcebase.cc b/webrtc/media/base/videosourcebase.cc index d00ddfba2a..514072efda 100644 --- a/webrtc/media/base/videosourcebase.cc +++ b/webrtc/media/base/videosourcebase.cc @@ -19,7 +19,7 @@ VideoSourceBase::VideoSourceBase() { } void VideoSourceBase::AddOrUpdateSink( - VideoSinkInterface* sink, + VideoSinkInterface* sink, const VideoSinkWants& wants) { RTC_DCHECK(thread_checker_.CalledOnValidThread()); RTC_DCHECK(sink != nullptr); @@ -32,8 +32,7 @@ void VideoSourceBase::AddOrUpdateSink( } } -void VideoSourceBase::RemoveSink( - VideoSinkInterface* sink) { +void VideoSourceBase::RemoveSink(VideoSinkInterface* sink) { RTC_DCHECK(thread_checker_.CalledOnValidThread()); RTC_DCHECK(sink != nullptr); RTC_DCHECK(FindSinkPair(sink)); @@ -45,7 +44,7 @@ void VideoSourceBase::RemoveSink( } VideoSourceBase::SinkPair* VideoSourceBase::FindSinkPair( - const VideoSinkInterface* sink) { + const VideoSinkInterface* sink) { RTC_DCHECK(thread_checker_.CalledOnValidThread()); auto sink_pair_it = std::find_if( sinks_.begin(), sinks_.end(), diff --git a/webrtc/media/base/videosourcebase.h b/webrtc/media/base/videosourcebase.h index 40d2fb3482..5ddef093b4 100644 --- a/webrtc/media/base/videosourcebase.h +++ b/webrtc/media/base/videosourcebase.h @@ -14,28 +14,27 @@ #include #include "webrtc/base/thread_checker.h" -#include "webrtc/media/base/videoframe.h" #include "webrtc/media/base/videosourceinterface.h" +#include "webrtc/video_frame.h" namespace rtc { // VideoSourceBase is not thread safe. -class VideoSourceBase : public VideoSourceInterface { +class VideoSourceBase : public VideoSourceInterface { public: VideoSourceBase(); - void AddOrUpdateSink(VideoSinkInterface* sink, + void AddOrUpdateSink(VideoSinkInterface* sink, const VideoSinkWants& wants) override; - void RemoveSink(VideoSinkInterface* sink) override; + void RemoveSink(VideoSinkInterface* sink) override; protected: struct SinkPair { - SinkPair(VideoSinkInterface* sink, - VideoSinkWants wants) + SinkPair(VideoSinkInterface* sink, VideoSinkWants wants) : sink(sink), wants(wants) {} - VideoSinkInterface* sink; + VideoSinkInterface* sink; VideoSinkWants wants; }; - SinkPair* FindSinkPair(const VideoSinkInterface* sink); + SinkPair* FindSinkPair(const VideoSinkInterface* sink); const std::vector& sink_pairs() const { return sinks_; } ThreadChecker thread_checker_; diff --git a/webrtc/media/devices/gtkvideorenderer.cc b/webrtc/media/devices/gtkvideorenderer.cc index 91fa933e0d..b88c391caf 100644 --- a/webrtc/media/devices/gtkvideorenderer.cc +++ b/webrtc/media/devices/gtkvideorenderer.cc @@ -11,13 +11,13 @@ // Implementation of GtkVideoRenderer #include "webrtc/media/devices/gtkvideorenderer.h" +#include "webrtc/video_frame.h" #include #include #include #include "libyuv/convert_argb.h" -#include "webrtc/media/engine/webrtcvideoframe.h" namespace cricket { @@ -80,24 +80,21 @@ bool GtkVideoRenderer::SetSize(int width, int height) { return true; } -void GtkVideoRenderer::OnFrame(const VideoFrame& video_frame) { - const cricket::WebRtcVideoFrame frame( +void GtkVideoRenderer::OnFrame(const webrtc::VideoFrame& video_frame) { + rtc::scoped_refptr buffer( webrtc::I420Buffer::Rotate(video_frame.video_frame_buffer(), - video_frame.rotation()), - webrtc::kVideoRotation_0, video_frame.timestamp_us()); + video_frame.rotation())); // Need to set size as the frame might be rotated. - if (!SetSize(frame.width(), frame.height())) { + if (!SetSize(buffer->width(), buffer->height())) { return; } // convert I420 frame to ABGR format, which is accepted by GTK - rtc::scoped_refptr buffer( - frame.video_frame_buffer()); libyuv::I420ToARGB(buffer->DataY(), buffer->StrideY(), buffer->DataU(), buffer->StrideU(), buffer->DataV(), buffer->StrideV(), - image_.get(), frame.width() * 4, + image_.get(), buffer->width() * 4, buffer->width(), buffer->height()); ScopedGdkLock lock; @@ -111,11 +108,11 @@ void GtkVideoRenderer::OnFrame(const VideoFrame& video_frame) { draw_area_->style->fg_gc[GTK_STATE_NORMAL], 0, 0, - frame.width(), - frame.height(), + buffer->width(), + buffer->height(), GDK_RGB_DITHER_MAX, image_.get(), - frame.width() * 4); + buffer->width() * 4); // Run the Gtk main loop to refresh the window. Pump(); diff --git a/webrtc/media/devices/gtkvideorenderer.h b/webrtc/media/devices/gtkvideorenderer.h index 7834f1bcf6..63a3ea900b 100644 --- a/webrtc/media/devices/gtkvideorenderer.h +++ b/webrtc/media/devices/gtkvideorenderer.h @@ -17,22 +17,22 @@ #include #include "webrtc/base/basictypes.h" -// TODO(nisse): Temporarily; to be replaced with a forward declaration -// of webrtc::VideoFrame when dependency on cricket::VideoFrame is deleted. -#include "webrtc/media/base/videoframe.h" #include "webrtc/media/base/videosinkinterface.h" typedef struct _GtkWidget GtkWidget; // forward declaration, defined in gtk.h +namespace webrtc { +class VideoFrame; +} namespace cricket { -class GtkVideoRenderer : public rtc::VideoSinkInterface { +class GtkVideoRenderer : public rtc::VideoSinkInterface { public: GtkVideoRenderer(int x, int y); virtual ~GtkVideoRenderer(); // Implementation of VideoSinkInterface. - void OnFrame(const VideoFrame& frame) override; + void OnFrame(const webrtc::VideoFrame& frame) override; private: bool SetSize(int width, int height); diff --git a/webrtc/media/engine/webrtcvideocapturer.cc b/webrtc/media/engine/webrtcvideocapturer.cc index 7fe47d92eb..66b167e1cf 100644 --- a/webrtc/media/engine/webrtcvideocapturer.cc +++ b/webrtc/media/engine/webrtcvideocapturer.cc @@ -18,7 +18,6 @@ #include "webrtc/base/safe_conversions.h" #include "webrtc/base/thread.h" #include "webrtc/base/timeutils.h" -#include "webrtc/media/engine/webrtcvideoframe.h" #include "webrtc/base/win32.h" // Need this to #include the impl files. #include "webrtc/modules/video_capture/video_capture_factory.h" @@ -353,10 +352,7 @@ void WebRtcVideoCapturer::OnIncomingCapturedFrame( << ". Expected format " << GetCaptureFormat()->ToString(); } - OnFrame(cricket::WebRtcVideoFrame( - sample.video_frame_buffer(), sample.rotation(), - sample.render_time_ms() * rtc::kNumMicrosecsPerMillisec), - sample.width(), sample.height()); + OnFrame(sample, sample.width(), sample.height()); } void WebRtcVideoCapturer::OnCaptureDelayChanged(const int32_t id, diff --git a/webrtc/media/engine/webrtcvideocapturer.h b/webrtc/media/engine/webrtcvideocapturer.h index 01defefdfe..08af7c9b7d 100644 --- a/webrtc/media/engine/webrtcvideocapturer.h +++ b/webrtc/media/engine/webrtcvideocapturer.h @@ -21,7 +21,6 @@ #include "webrtc/common_video/libyuv/include/webrtc_libyuv.h" #include "webrtc/media/base/device.h" #include "webrtc/media/base/videocapturer.h" -#include "webrtc/media/engine/webrtcvideoframe.h" #include "webrtc/modules/video_capture/video_capture.h" namespace cricket { diff --git a/webrtc/media/engine/webrtcvideoengine2.cc b/webrtc/media/engine/webrtcvideoengine2.cc index e275e5e628..efec0b5210 100644 --- a/webrtc/media/engine/webrtcvideoengine2.cc +++ b/webrtc/media/engine/webrtcvideoengine2.cc @@ -524,14 +524,14 @@ UnsignalledSsrcHandler::Action DefaultUnsignalledSsrcHandler::OnUnsignalledSsrc( return kDeliverPacket; } -rtc::VideoSinkInterface* +rtc::VideoSinkInterface* DefaultUnsignalledSsrcHandler::GetDefaultSink() const { return default_sink_; } void DefaultUnsignalledSsrcHandler::SetDefaultSink( VideoMediaChannel* channel, - rtc::VideoSinkInterface* sink) { + rtc::VideoSinkInterface* sink) { default_sink_ = sink; if (default_recv_ssrc_ != 0) { channel->SetSink(default_recv_ssrc_, default_sink_); @@ -1052,7 +1052,7 @@ bool WebRtcVideoChannel2::SetVideoSend( uint32_t ssrc, bool enable, const VideoOptions* options, - rtc::VideoSourceInterface* source) { + rtc::VideoSourceInterface* source) { TRACE_EVENT0("webrtc", "SetVideoSend"); RTC_DCHECK(ssrc != 0); LOG(LS_INFO) << "SetVideoSend (ssrc= " << ssrc << ", enable = " << enable @@ -1293,8 +1293,9 @@ bool WebRtcVideoChannel2::RemoveRecvStream(uint32_t ssrc) { return true; } -bool WebRtcVideoChannel2::SetSink(uint32_t ssrc, - rtc::VideoSinkInterface* sink) { +bool WebRtcVideoChannel2::SetSink( + uint32_t ssrc, + rtc::VideoSinkInterface* sink) { LOG(LS_INFO) << "SetSink: ssrc:" << ssrc << " " << (sink ? "(ptr)" : "nullptr"); if (ssrc == 0) { @@ -1584,7 +1585,7 @@ WebRtcVideoChannel2::WebRtcVideoSendStream::~WebRtcVideoSendStream() { } void WebRtcVideoChannel2::WebRtcVideoSendStream::OnFrame( - const VideoFrame& frame) { + const webrtc::VideoFrame& frame) { TRACE_EVENT0("webrtc", "WebRtcVideoSendStream::OnFrame"); webrtc::VideoFrame video_frame(frame.video_frame_buffer(), frame.rotation(), @@ -1623,7 +1624,7 @@ void WebRtcVideoChannel2::WebRtcVideoSendStream::OnFrame( bool WebRtcVideoChannel2::WebRtcVideoSendStream::SetVideoSend( bool enable, const VideoOptions* options, - rtc::VideoSourceInterface* source) { + rtc::VideoSourceInterface* source) { TRACE_EVENT0("webrtc", "WebRtcVideoSendStream::SetVideoSend"); RTC_DCHECK_RUN_ON(&thread_checker_); @@ -2371,7 +2372,7 @@ bool WebRtcVideoChannel2::WebRtcVideoReceiveStream::IsDefaultStream() const { } void WebRtcVideoChannel2::WebRtcVideoReceiveStream::SetSink( - rtc::VideoSinkInterface* sink) { + rtc::VideoSinkInterface* sink) { rtc::CritScope crit(&sink_lock_); sink_ = sink; } diff --git a/webrtc/media/engine/webrtcvideoengine2.h b/webrtc/media/engine/webrtcvideoengine2.h index 74a1311ea1..24019bc3d1 100644 --- a/webrtc/media/engine/webrtcvideoengine2.h +++ b/webrtc/media/engine/webrtcvideoengine2.h @@ -26,10 +26,10 @@ #include "webrtc/media/base/videosourceinterface.h" #include "webrtc/call.h" #include "webrtc/media/base/mediaengine.h" -#include "webrtc/media/base/videoframe.h" #include "webrtc/media/engine/webrtcvideodecoderfactory.h" #include "webrtc/media/engine/webrtcvideoencoderfactory.h" #include "webrtc/transport.h" +#include "webrtc/video_frame.h" #include "webrtc/video_receive_stream.h" #include "webrtc/video_send_stream.h" @@ -82,14 +82,14 @@ class DefaultUnsignalledSsrcHandler : public UnsignalledSsrcHandler { Action OnUnsignalledSsrc(WebRtcVideoChannel2* channel, uint32_t ssrc) override; - rtc::VideoSinkInterface* GetDefaultSink() const; + rtc::VideoSinkInterface* GetDefaultSink() const; void SetDefaultSink(VideoMediaChannel* channel, - rtc::VideoSinkInterface* sink); + rtc::VideoSinkInterface* sink); virtual ~DefaultUnsignalledSsrcHandler() = default; private: uint32_t default_recv_ssrc_; - rtc::VideoSinkInterface* default_sink_; + rtc::VideoSinkInterface* default_sink_; }; // WebRtcVideoEngine2 is used for the new native WebRTC Video API (webrtc:1667). @@ -155,14 +155,14 @@ class WebRtcVideoChannel2 : public VideoMediaChannel, public webrtc::Transport { uint32_t ssrc, bool enable, const VideoOptions* options, - rtc::VideoSourceInterface* source) override; + rtc::VideoSourceInterface* source) override; bool AddSendStream(const StreamParams& sp) override; bool RemoveSendStream(uint32_t ssrc) override; bool AddRecvStream(const StreamParams& sp) override; bool AddRecvStream(const StreamParams& sp, bool default_stream); bool RemoveRecvStream(uint32_t ssrc) override; bool SetSink(uint32_t ssrc, - rtc::VideoSinkInterface* sink) override; + rtc::VideoSinkInterface* sink) override; bool GetStats(VideoMediaInfo* info) override; void OnPacketReceived(rtc::CopyOnWriteBuffer* packet, @@ -237,7 +237,7 @@ class WebRtcVideoChannel2 : public VideoMediaChannel, public webrtc::Transport { // Wrapper for the sender part, this is where the source is connected and // frames are then converted from cricket frames to webrtc frames. class WebRtcVideoSendStream - : public rtc::VideoSinkInterface, + : public rtc::VideoSinkInterface, public rtc::VideoSourceInterface { public: WebRtcVideoSendStream( @@ -259,18 +259,17 @@ class WebRtcVideoChannel2 : public VideoMediaChannel, public webrtc::Transport { // Implements rtc::VideoSourceInterface. // WebRtcVideoSendStream acts as a source to the webrtc::VideoSendStream - // in |stream_|. The reason is that WebRtcVideoSendStream receives - // cricket::VideoFrames and forwards webrtc::VideoFrames to |source_|. + // in |stream_|. // TODO(perkj, nisse): Refactor WebRtcVideoSendStream to directly connect // the camera input |source_| void AddOrUpdateSink(VideoSinkInterface* sink, const rtc::VideoSinkWants& wants) override; void RemoveSink(VideoSinkInterface* sink) override; - void OnFrame(const cricket::VideoFrame& frame) override; + void OnFrame(const webrtc::VideoFrame& frame) override; bool SetVideoSend(bool mute, const VideoOptions* options, - rtc::VideoSourceInterface* source); + rtc::VideoSourceInterface* source); void SetSend(bool send); @@ -347,7 +346,7 @@ class WebRtcVideoChannel2 : public VideoMediaChannel, public webrtc::Transport { const std::vector ssrc_groups_ ACCESS_ON(&thread_checker_); webrtc::Call* const call_; const bool enable_cpu_overuse_detection_; - rtc::VideoSourceInterface* source_ + rtc::VideoSourceInterface* source_ ACCESS_ON(&thread_checker_); WebRtcVideoEncoderFactory* const external_encoder_factory_ ACCESS_ON(&thread_checker_); @@ -377,9 +376,7 @@ class WebRtcVideoChannel2 : public VideoMediaChannel, public webrtc::Transport { }; // Wrapper for the receiver part, contains configs etc. that are needed to - // reconstruct the underlying VideoReceiveStream. Also serves as a wrapper - // between rtc::VideoSinkInterface and - // rtc::VideoSinkInterface. + // reconstruct the underlying VideoReceiveStream. class WebRtcVideoReceiveStream : public rtc::VideoSinkInterface { public: @@ -406,7 +403,7 @@ class WebRtcVideoChannel2 : public VideoMediaChannel, public webrtc::Transport { void OnFrame(const webrtc::VideoFrame& frame) override; bool IsDefaultStream() const; - void SetSink(rtc::VideoSinkInterface* sink); + void SetSink(rtc::VideoSinkInterface* sink); VideoReceiverInfo GetVideoReceiverInfo(bool log_stats); @@ -444,7 +441,7 @@ class WebRtcVideoChannel2 : public VideoMediaChannel, public webrtc::Transport { std::vector allocated_decoders_; rtc::CriticalSection sink_lock_; - rtc::VideoSinkInterface* sink_ GUARDED_BY(sink_lock_); + rtc::VideoSinkInterface* sink_ GUARDED_BY(sink_lock_); // Expands remote RTP timestamps to int64_t to be able to estimate how long // the stream has been running. rtc::TimestampWrapAroundHandler timestamp_wraparound_handler_ diff --git a/webrtc/pc/channel.cc b/webrtc/pc/channel.cc index 7b483292fc..f3c3211fdf 100644 --- a/webrtc/pc/channel.cc +++ b/webrtc/pc/channel.cc @@ -1908,7 +1908,7 @@ VideoChannel::~VideoChannel() { } bool VideoChannel::SetSink(uint32_t ssrc, - rtc::VideoSinkInterface* sink) { + rtc::VideoSinkInterface* sink) { worker_thread()->Invoke( RTC_FROM_HERE, Bind(&VideoMediaChannel::SetSink, media_channel(), ssrc, sink)); @@ -1919,7 +1919,7 @@ bool VideoChannel::SetVideoSend( uint32_t ssrc, bool mute, const VideoOptions* options, - rtc::VideoSourceInterface* source) { + rtc::VideoSourceInterface* source) { return InvokeOnWorker(RTC_FROM_HERE, Bind(&VideoMediaChannel::SetVideoSend, media_channel(), ssrc, mute, options, source)); diff --git a/webrtc/pc/channel.h b/webrtc/pc/channel.h index e69609e46b..308903c2db 100644 --- a/webrtc/pc/channel.h +++ b/webrtc/pc/channel.h @@ -551,7 +551,8 @@ class VideoChannel : public BaseChannel { return static_cast(BaseChannel::media_channel()); } - bool SetSink(uint32_t ssrc, rtc::VideoSinkInterface* sink); + bool SetSink(uint32_t ssrc, + rtc::VideoSinkInterface* sink); // Get statistics about the current media session. bool GetStats(VideoMediaInfo* stats); @@ -567,7 +568,7 @@ class VideoChannel : public BaseChannel { bool SetVideoSend(uint32_t ssrc, bool enable, const VideoOptions* options, - rtc::VideoSourceInterface* source); + rtc::VideoSourceInterface* source); webrtc::RtpParameters GetRtpSendParameters(uint32_t ssrc) const; bool SetRtpSendParameters(uint32_t ssrc, const webrtc::RtpParameters& parameters); diff --git a/webrtc/sdk/objc/Framework/Classes/RTCVideoFrame+Private.h b/webrtc/sdk/objc/Framework/Classes/RTCVideoFrame+Private.h index 83ae21ba68..b47ee4b465 100644 --- a/webrtc/sdk/objc/Framework/Classes/RTCVideoFrame+Private.h +++ b/webrtc/sdk/objc/Framework/Classes/RTCVideoFrame+Private.h @@ -10,8 +10,8 @@ #import "WebRTC/RTCVideoFrame.h" +#include "webrtc/common_video/include/video_frame_buffer.h" #include "webrtc/common_video/rotation.h" -#include "webrtc/media/base/videoframe.h" NS_ASSUME_NONNULL_BEGIN diff --git a/webrtc/sdk/objc/Framework/Classes/RTCVideoRendererAdapter+Private.h b/webrtc/sdk/objc/Framework/Classes/RTCVideoRendererAdapter+Private.h index b413f7e3f6..0c6f0657e4 100644 --- a/webrtc/sdk/objc/Framework/Classes/RTCVideoRendererAdapter+Private.h +++ b/webrtc/sdk/objc/Framework/Classes/RTCVideoRendererAdapter+Private.h @@ -31,7 +31,7 @@ NS_ASSUME_NONNULL_BEGIN * during construction. This pointer is unsafe and owned by this class. */ @property(nonatomic, readonly) - rtc::VideoSinkInterface *nativeVideoRenderer; + rtc::VideoSinkInterface *nativeVideoRenderer; /** Initialize an RTCVideoRendererAdapter with an RTCVideoRenderer. */ - (instancetype)initWithNativeRenderer:(id)videoRenderer diff --git a/webrtc/sdk/objc/Framework/Classes/RTCVideoRendererAdapter.mm b/webrtc/sdk/objc/Framework/Classes/RTCVideoRendererAdapter.mm index 55d3917845..8bc01b1ce8 100644 --- a/webrtc/sdk/objc/Framework/Classes/RTCVideoRendererAdapter.mm +++ b/webrtc/sdk/objc/Framework/Classes/RTCVideoRendererAdapter.mm @@ -14,19 +14,17 @@ #include -#include "webrtc/media/engine/webrtcvideoframe.h" - namespace webrtc { class VideoRendererAdapter - : public rtc::VideoSinkInterface { + : public rtc::VideoSinkInterface { public: VideoRendererAdapter(RTCVideoRendererAdapter* adapter) { adapter_ = adapter; size_ = CGSizeZero; } - void OnFrame(const cricket::VideoFrame& nativeVideoFrame) override { + void OnFrame(const webrtc::VideoFrame& nativeVideoFrame) override { RTCVideoFrame* videoFrame = [[RTCVideoFrame alloc] initWithVideoBuffer:nativeVideoFrame.video_frame_buffer() rotation:nativeVideoFrame.rotation() @@ -64,7 +62,7 @@ class VideoRendererAdapter return self; } -- (rtc::VideoSinkInterface *)nativeVideoRenderer { +- (rtc::VideoSinkInterface *)nativeVideoRenderer { return _adapter.get(); } diff --git a/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCVideoFrame.h b/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCVideoFrame.h index ffbbbc6906..bfad608897 100644 --- a/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCVideoFrame.h +++ b/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCVideoFrame.h @@ -15,7 +15,7 @@ NS_ASSUME_NONNULL_BEGIN -// RTCVideoFrame is an ObjectiveC version of cricket::VideoFrame. +// RTCVideoFrame is an ObjectiveC version of webrtc::VideoFrame. RTC_EXPORT @interface RTCVideoFrame : NSObject diff --git a/webrtc/video_frame.h b/webrtc/video_frame.h index bd6a85791f..a834f83ddf 100644 --- a/webrtc/video_frame.h +++ b/webrtc/video_frame.h @@ -20,9 +20,6 @@ namespace webrtc { -// TODO(nisse): This class duplicates cricket::VideoFrame. There's -// ongoing work to merge the classes. See -// https://bugs.chromium.org/p/webrtc/issues/detail?id=5682. class VideoFrame { public: // TODO(nisse): Deprecated. Using the default constructor violates the