| 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: {
|
|
|