Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1106)

Unified Diff: content/renderer/media/media_stream_video_source.cc

Issue 2339193002: Wip - cl for implemening VideoTrackSource::ApplyConstraints(constraints, VideoTrack) and adopt safe…
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/renderer/media/media_stream_video_source.cc
diff --git a/content/renderer/media/media_stream_video_source.cc b/content/renderer/media/media_stream_video_source.cc
index b2e550c221de1c69b55c5ac69e0779ef433807d7..a68833c15c0d0d501b6c1f879602356266e4cbef 100644
--- a/content/renderer/media/media_stream_video_source.cc
+++ b/content/renderer/media/media_stream_video_source.cc
@@ -314,19 +314,67 @@ MediaStreamVideoSource::~MediaStreamVideoSource() {
DCHECK(CalledOnValidThread());
}
-void MediaStreamVideoSource::AddTrack(
- MediaStreamVideoTrack* track,
- const VideoCaptureDeliverFrameCB& frame_callback,
+bool MediaStreamVideoSource::ConnectToTrack(
+ const blink::WebMediaStreamTrack& blink_track) {
+ DCHECK(CalledOnValidThread());
+ DCHECK(!blink_track.isNull());
+
+ // Sanity-check that there is not already a MediaStreamVideoTrack instance
+ // associated with |blink_track|.
+ if (MediaStreamVideoTrack::GetVideoTrack(blink_track)) { // rename ::From ?
+ LOG(DFATAL)
+ << "Attempting to connect another source to a WebMediaStreamTrack.";
+ return false;
+ }
+
+ // Unless the source has already been permanently stopped, ensure it is
+ // started. If the source cannot start, the new MediaStreamVideoTrack will be
+ // initialized to the stopped/ended state.
+ //if (!is_stopped_) {
+ // if (!EnsureSourceIsStarted())
+ // StopSource();
+ // }
+
+ // Create and initialize a new MediaStreamVideoTrack and pass ownership of it
+ // to the WebMediaStreamTrack.
+ blink::WebMediaStreamTrack mutable_blink_track = blink_track;
+ mutable_blink_track.setTrackData(
+ new MediaStreamVideoTrack(weak_factory_.GetWeakPtr(),
+ blink_track.isEnabled()));
+ MediaStreamVideoTrack* track =
+ MediaStreamVideoTrack::GetVideoTrack(blink_track);
+
+
+ /*
+ // If the source is stopped, do not add the track.
+ if (state_ == ENDED)
+ return false;
+
+ track->Start(base::Bind(&MediaStreamVideoSource::RemoveTrack,
+ weak_factory_.GetWeakPtr(), track));
+ DVLOG(1) << "Adding MediaStreamVideoTrack@" << track
+ << " as a consumer of MediaStreamVideoSource@" << this << '.';
+*/
+
+ tracks_.push_back(track);
+ secure_tracker_.Add(track, true);
+ return true;
+}
+
+void MediaStreamVideoSource::ApplyConstraints(
+ const blink::WebMediaStreamTrack& blink_track,
const blink::WebMediaConstraints& constraints,
const ConstraintsCallback& callback) {
DCHECK(CalledOnValidThread());
DCHECK(!constraints.isNull());
- DCHECK(std::find(tracks_.begin(), tracks_.end(), track) == tracks_.end());
- tracks_.push_back(track);
- secure_tracker_.Add(track, true);
+
+ MediaStreamVideoTrack* track = MediaStreamVideoTrack::GetVideoTrack(blink_track);
+ DCHECK(std::find(tracks_.begin(), tracks_.end(), track) != tracks_.end());
+// tracks_.push_back(track);
+// secure_tracker_.Add(track, true);
track_descriptors_.push_back(
- TrackDescriptor(track, frame_callback, constraints, callback));
+ TrackDescriptor(track, track->frame_input(), constraints, callback));
switch (state_) {
case NEW: {
« no previous file with comments | « content/renderer/media/media_stream_video_source.h ('k') | content/renderer/media/media_stream_video_track.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698