Index: content/renderer/media/media_stream_video_track.cc |
diff --git a/content/renderer/media/media_stream_video_track.cc b/content/renderer/media/media_stream_video_track.cc |
index 0f366f5a77148c6e7c022386f72503cfae3a7800..ed8a7119530a1787dbc24b61cbb27b00c45f930b 100644 |
--- a/content/renderer/media/media_stream_video_track.cc |
+++ b/content/renderer/media/media_stream_video_track.cc |
@@ -9,9 +9,11 @@ |
#include "base/bind.h" |
#include "base/location.h" |
#include "base/macros.h" |
+#include "base/memory/ptr_util.h" |
#include "base/single_thread_task_runner.h" |
#include "base/threading/thread_task_runner_handle.h" |
#include "content/renderer/media/media_stream_constraints_util_video_device.h" |
+#include "media/capture/video_capture_types.h" |
namespace content { |
@@ -201,6 +203,7 @@ blink::WebMediaStreamTrack MediaStreamVideoTrack::CreateVideoTrack( |
const blink::WebMediaConstraints& constraints, |
const MediaStreamVideoSource::ConstraintsCallback& callback, |
bool enabled) { |
+ DCHECK(IsOldVideoConstraints()); |
blink::WebMediaStreamTrack track; |
track.initialize(source->owner()); |
track.setTrackData( |
@@ -209,6 +212,34 @@ blink::WebMediaStreamTrack MediaStreamVideoTrack::CreateVideoTrack( |
} |
// static |
+blink::WebMediaStreamTrack MediaStreamVideoTrack::CreateVideoTrack( |
+ MediaStreamVideoSource* source, |
+ const MediaStreamVideoSource::ConstraintsCallback& callback, |
+ bool enabled) { |
+ blink::WebMediaStreamTrack track; |
+ track.initialize(source->owner()); |
+ track.setTrackData(new MediaStreamVideoTrack(source, callback, enabled)); |
+ return track; |
+} |
+ |
+// static |
+blink::WebMediaStreamTrack MediaStreamVideoTrack::CreateVideoTrack( |
+ MediaStreamVideoSource* source, |
+ const VideoTrackAdapterSettings& adapter_settings, |
+ const base::Optional<bool>& noise_reduction, |
+ bool is_screencast, |
+ double min_frame_rate, |
+ const MediaStreamVideoSource::ConstraintsCallback& callback, |
+ bool enabled) { |
+ blink::WebMediaStreamTrack track; |
+ track.initialize(source->owner()); |
+ track.setTrackData(new MediaStreamVideoTrack( |
+ source, adapter_settings, noise_reduction, is_screencast, min_frame_rate, |
+ callback, enabled)); |
+ return track; |
+} |
+ |
+// static |
MediaStreamVideoTrack* MediaStreamVideoTrack::GetVideoTrack( |
const blink::WebMediaStreamTrack& track) { |
if (track.isNull() || |
@@ -220,6 +251,36 @@ MediaStreamVideoTrack* MediaStreamVideoTrack::GetVideoTrack( |
MediaStreamVideoTrack::MediaStreamVideoTrack( |
MediaStreamVideoSource* source, |
+ const MediaStreamVideoSource::ConstraintsCallback& callback, |
+ bool enabled) |
+ : MediaStreamTrack(true), |
+ frame_deliverer_( |
+ new MediaStreamVideoTrack::FrameDeliverer(source->io_task_runner(), |
+ enabled)), |
+ adapter_settings_(base::MakeUnique<VideoTrackAdapterSettings>( |
+ VideoTrackAdapterSettings())), |
+ is_screencast_(false), |
+ min_frame_rate_(0.0), |
+ source_(source->GetWeakPtr()) { |
+ if (IsOldVideoConstraints()) { |
+ blink::WebMediaConstraints constraints; |
+ constraints.initialize(); |
+ source->AddTrackLegacy( |
+ this, |
+ base::Bind(&MediaStreamVideoTrack::FrameDeliverer::DeliverFrameOnIO, |
+ frame_deliverer_), |
+ constraints, callback); |
+ } else { |
+ source->AddTrack( |
+ this, VideoTrackAdapterSettings(), |
+ base::Bind(&MediaStreamVideoTrack::FrameDeliverer::DeliverFrameOnIO, |
+ frame_deliverer_), |
+ callback); |
+ } |
+} |
+ |
+MediaStreamVideoTrack::MediaStreamVideoTrack( |
+ MediaStreamVideoSource* source, |
const blink::WebMediaConstraints& constraints, |
const MediaStreamVideoSource::ConstraintsCallback& callback, |
bool enabled) |
@@ -229,12 +290,39 @@ MediaStreamVideoTrack::MediaStreamVideoTrack( |
enabled)), |
constraints_(constraints), |
source_(source->GetWeakPtr()) { |
+ DCHECK(IsOldVideoConstraints()); |
DCHECK(!constraints.isNull()); |
- source->AddTrack(this, |
- base::Bind( |
- &MediaStreamVideoTrack::FrameDeliverer::DeliverFrameOnIO, |
- frame_deliverer_), |
- constraints, callback); |
+ source->AddTrackLegacy( |
+ this, |
+ base::Bind(&MediaStreamVideoTrack::FrameDeliverer::DeliverFrameOnIO, |
+ frame_deliverer_), |
+ constraints, callback); |
+} |
+ |
+MediaStreamVideoTrack::MediaStreamVideoTrack( |
+ MediaStreamVideoSource* source, |
+ const VideoTrackAdapterSettings& adapter_settings, |
+ const base::Optional<bool>& noise_reduction, |
+ bool is_screen_cast, |
+ double min_frame_rate, |
+ const MediaStreamVideoSource::ConstraintsCallback& callback, |
+ bool enabled) |
+ : MediaStreamTrack(true), |
+ frame_deliverer_( |
+ new MediaStreamVideoTrack::FrameDeliverer(source->io_task_runner(), |
+ enabled)), |
+ adapter_settings_( |
+ base::MakeUnique<VideoTrackAdapterSettings>(adapter_settings)), |
+ noise_reduction_(noise_reduction), |
+ is_screencast_(is_screen_cast), |
+ min_frame_rate_(min_frame_rate), |
+ source_(source->GetWeakPtr()) { |
+ DCHECK(!IsOldVideoConstraints()); |
+ source->AddTrack( |
+ this, adapter_settings, |
+ base::Bind(&MediaStreamVideoTrack::FrameDeliverer::DeliverFrameOnIO, |
+ frame_deliverer_), |
+ callback); |
} |
MediaStreamVideoTrack::~MediaStreamVideoTrack() { |
@@ -302,7 +390,8 @@ void MediaStreamVideoTrack::Stop() { |
void MediaStreamVideoTrack::getSettings( |
blink::WebMediaStreamTrack::Settings& settings) { |
- const media::VideoCaptureFormat* format = source_->GetCurrentFormat(); |
+ base::Optional<media::VideoCaptureFormat> format = |
+ source_->GetCurrentFormat(); |
if (format) { |
settings.frameRate = format->frame_rate; |
settings.videoKind = GetVideoKindForFormat(*format); |